:root{--blue:#3E6AE1;--blue-hover:#3457D5;--white:#FFFFFF;--ash:#F4F4F4;--carbon:#171A20;--graphite:#393C41;--pewter:#5C5E62;--fog:#8E8E8E;--cloud:#EEEEEE;--silver:#D0D1D2;--frost:rgba(255,255,255,0.75);--safe:#3fb27f;--armed:#e0603a;--live:#d6a419;--ease:0.33s cubic-bezier(0.5,0,0,0.75);--font:"Universal Sans Text",-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Pretendard","Noto Sans KR",Arial,sans-serif;--font-display:"Universal Sans Display",-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Pretendard","Noto Sans KR",Arial,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--white);color:var(--graphite);font-family:var(--font);font-size:14px;line-height:20px;font-weight:400;-webkit-font-smoothing:antialiased}b,h1,h2,h3,strong{font-weight:500;color:var(--carbon)}button,input,select,textarea{font:inherit;color:inherit;letter-spacing:normal}button{cursor:pointer;background:none;border:0;padding:0}button:disabled{cursor:not-allowed;opacity:.4}a{color:var(--carbon);text-underline-offset:3px}:focus-visible{outline:2px solid var(--blue);outline-offset:2px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.app{max-width:1200px;margin:0 auto;padding:0 24px 96px}.rail{position:-webkit-sticky;position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:24px;min-height:56px;padding:8px 0;margin-bottom:40px;background:var(--frost);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.rail .wordmark{font-weight:500;color:var(--carbon);letter-spacing:.18em;font-size:13px;white-space:nowrap}.rail .mode{display:flex;align-items:center;gap:10px;flex:1 1;min-width:0}.rail .mode i{width:8px;height:8px;border-radius:50%;background:var(--rail-color,var(--safe));flex:none}.rail .mode b{font-weight:500;color:var(--carbon);white-space:nowrap}.rail .mode span{color:var(--pewter);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rail .dots{display:flex;gap:16px}.dot,.rail .dots{align-items:center}.dot{display:inline-flex;gap:6px;color:var(--pewter)}.dot i{width:8px;height:8px;border-radius:50%;background:var(--silver);display:inline-block;transition:background var(--ease)}.dot.on i{background:var(--safe)}.dot.off i{background:var(--armed)}.dot.warn i{background:var(--live)}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:4px 24px;border-radius:4px;border:3px solid transparent;background:var(--ash);color:var(--carbon);font-weight:500;transition:border-color var(--ease),background-color var(--ease),color var(--ease),box-shadow .25s;box-shadow:inset 0 0 0 2px rgba(0,0,0,0)}.btn:hover:not(:disabled){background:var(--cloud)}.btn.primary,.btn.safe{background:var(--blue);color:var(--white)}.btn.primary:hover:not(:disabled),.btn.safe:hover:not(:disabled){background:var(--blue-hover)}.btn.armed{background:var(--carbon);color:var(--white)}.btn.armed:hover:not(:disabled){background:#000}.btn.small{min-height:32px;padding:4px 16px;border-width:0;font-weight:500}.btn.wide{min-width:200px}.link{color:var(--pewter);font-weight:400;transition:color var(--ease)}.link:hover{color:var(--carbon);text-decoration:underline;text-underline-offset:3px}.meters{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:16px;gap:16px;margin-bottom:40px}.meter{background:var(--ash);border-radius:12px;padding:20px 24px}.meter .label{color:var(--pewter)}.meter .value{font-family:var(--font-display);font-size:28px;line-height:36px;font-weight:500;color:var(--carbon);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin-top:4px}.meter .value small{font-size:14px;color:var(--pewter);font-weight:400}.meter .sub{color:var(--meter-color,var(--pewter));margin-top:4px}.meter .bar{height:2px;background:var(--silver);margin-top:16px;overflow:hidden;border-radius:1px}.meter .bar i{display:block;height:100%;background:var(--meter-color,var(--carbon));transition:width var(--ease)}.grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:48px;gap:48px;align-items:start}@media (max-width:960px){.grid{grid-template-columns:1fr;gap:40px}}.card{padding:0}.card h2{margin:0 0 20px;font-size:17px;line-height:20px}.card h3{margin:32px 0 12px;font-size:14px;color:var(--pewter);font-weight:500}.types{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}@media (max-width:640px){.types{grid-template-columns:1fr}}.type{text-align:left;background:var(--ash);border-radius:4px;padding:16px;border:3px solid transparent;transition:border-color var(--ease),background-color var(--ease)}.type:hover{background:var(--cloud)}.type[aria-pressed=true]{border-color:var(--carbon);background:var(--white)}.type b{display:block;margin-bottom:4px;font-size:17px;line-height:20px}.type span{color:var(--pewter)}.field{display:flex;flex-direction:column;gap:8px;margin-top:16px}.field label{color:var(--pewter)}.field input[type=text],.field select,.field textarea{background:var(--ash);border:0;border-radius:4px;padding:10px 12px;color:var(--carbon);width:100%;transition:background-color var(--ease)}.field input[type=text]:focus,.field textarea:focus{background:var(--cloud);outline:none}.field input::placeholder,.field textarea::placeholder{color:var(--fog)}.field textarea{min-height:120px;resize:vertical}.row{align-items:center}.chips,.row{display:flex;gap:8px;flex-wrap:wrap}.chip{background:var(--ash);border-radius:4px;padding:6px 16px;min-height:32px;color:var(--carbon);border:2px solid transparent;transition:border-color var(--ease),background-color var(--ease)}.chip:hover{background:var(--cloud)}.chip[aria-pressed=true]{border-color:var(--carbon);background:var(--white);font-weight:500}.badge{display:inline-block;padding:2px 8px;border-radius:4px;background:var(--ash);color:var(--pewter)}.badge.warn{color:var(--live)}.badge.armed{color:var(--armed)}.badge.safe{color:var(--safe)}.note{color:var(--pewter)}.err{color:var(--armed)}.jobs{flex-direction:column;max-height:440px;overflow:auto}.job,.jobs{display:flex}.job{justify-content:space-between;align-items:center;gap:12px;padding:12px 0;text-align:left;border-bottom:1px solid var(--cloud);border-radius:0;transition:color var(--ease)}.job:last-child{border-bottom:0}.job:hover .kw{color:var(--blue)}.job[aria-pressed=true] .kw{color:var(--carbon);font-weight:500}.job .kw{color:var(--graphite);overflow:hidden;text-overflow:ellipsis;transition:color var(--ease)}.job .kw,.job .st{white-space:nowrap}.job .st{color:var(--pewter)}.job .st.live{color:var(--live)}.job .st.done{color:var(--safe)}.job .st.failed{color:var(--armed)}.log{background:var(--ash);border-radius:4px;padding:12px 16px;max-height:240px;overflow:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:18px;color:var(--graphite)}.log div{white-space:pre-wrap;word-break:break-word}.log .warn{color:var(--live)}.log .error{color:var(--armed)}.previewPane{position:fixed;top:0;right:0;bottom:0;width:min(920px,60vw);background:#fff;border-left:1px solid var(--ash);box-shadow:-8px 0 24px rgba(0,0,0,.08);z-index:20;display:flex;flex-direction:column}.previewPane iframe{flex:1 1;width:100%;border:0;border-top:1px solid var(--ash);background:#fff}@media (max-width:960px){.previewPane{width:100vw}}.preview{background:var(--ash);border-radius:12px;padding:32px;max-height:640px;overflow:auto;color:var(--carbon);line-height:1.8}.preview h1{font-family:var(--font-display);font-size:24px;line-height:32px;margin:0 0 20px}.preview h2{font-size:17px;margin:28px 0 8px}.preview p{margin:0 0 14px;color:var(--graphite)}.preview blockquote{margin:20px 0;padding:12px 16px;border-left:2px solid var(--carbon);color:var(--carbon)}.preview hr{border:0;border-top:1px solid var(--silver);margin:24px 0}.preview mark{background:#FFF6CC;color:var(--carbon)}.preview b.point{color:#1E6FD9}.preview .list{margin:0 0 14px}.preview .list p{margin:0 0 4px}.preview table.tbl{border-collapse:collapse;width:100%;margin:0 0 14px;font-size:14px}.preview table.tbl td,.preview table.tbl th{border:1px solid var(--silver);padding:6px 8px;text-align:center}.preview table.tbl th{background:#fff}.preview figure{margin:20px 0}.preview figure img{max-width:100%;border-radius:12px;display:block}.preview figcaption{color:var(--pewter);margin-top:6px;font-size:12px}.preview .empty-slot{border:1px dashed var(--silver);color:var(--fog);padding:16px;border-radius:12px;font-size:12px}.shot img{max-width:100%;border-radius:12px;display:block}.images{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:12px;gap:12px}.images figure{margin:0;font-size:12px;line-height:16px;color:var(--pewter)}.images img{width:100%;height:100px;object-fit:cover;border-radius:12px;display:block;margin-bottom:6px}.images .no img{opacity:.35}.images .ok figcaption:before{content:"●";color:var(--safe);margin-right:4px}.images .no figcaption:before{content:"●";color:var(--armed);margin-right:4px}.drawer-backdrop{position:fixed;inset:0;background:rgba(128,128,128,.65);z-index:20}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,100vw);background:var(--white);z-index:21;overflow:auto;padding:24px 32px}.drawer h2{margin:0;font-size:17px}.drawer section{border-top:1px solid var(--cloud);padding:20px 0}.drawer section h3{margin:0 0 8px;color:var(--pewter);font-weight:500}.setting{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:10px 0}.setting .l{display:flex;flex-direction:column;color:var(--carbon)}.setting .l small{color:var(--pewter);font-size:12px;line-height:16px}.setting input[type=number]{width:88px;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.setting input[type=number],.setting select{background:var(--ash);border:0;border-radius:4px;padding:8px 10px;color:var(--carbon)}.switch{width:44px;height:24px;border-radius:12px;background:var(--silver);position:relative;flex:none;transition:background-color var(--ease)}.switch:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--white);transition:left var(--ease)}.switch[aria-checked=true]{background:var(--sw,var(--carbon))}.switch[aria-checked=true]:after{left:23px}@media (max-width:900px){.rail{flex-wrap:wrap;gap:12px 16px}.rail .mode{flex-basis:100%;order:3}.rail .dots{margin-left:auto}.app{padding:0 16px 64px}.btn.wide{width:100%}}@media (max-width:480px){.rail .dots{flex-basis:100%;order:4}.rail .mode span{white-space:normal}}