@font-face{font-family:Departure Mono;src:url(https://cdn.jsdelivr.net/gh/rektdeckard/departure-mono@latest/fonts/DepartureMono-Regular.woff2) format("woff2");font-weight:400;font-display:swap}*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0a0a0a;--bg-alt:#141414;--fg:#f2f2f2;--fg-muted:#888;--border:#f2f2f2;--pink:#e84393;--cyan:#00cec9;--green:#00b894;--orange:#e17055;--yellow:#fdcb6e;--status-ok:var(--green);--status-warn:var(--yellow);--status-error:var(--pink);--font-size:14px;--line-height:1.5;--border-width:1px;--spacing:12px;--spacing-sm:8px;--spacing-lg:24px}body,html{font-family:Departure Mono,Consolas,Monaco,monospace;font-size:var(--font-size);line-height:var(--line-height);letter-spacing:.05em;background:var(--bg);color:var(--fg);min-height:100vh}.container{max-width:820px;margin:0 auto;padding:var(--spacing-lg);min-height:100vh;display:flex;flex-direction:column;justify-content:center}.panel{border:var(--border-width) solid var(--border);background:var(--bg)}.panel-header{border-bottom:var(--border-width) solid var(--border);padding:var(--spacing);text-transform:uppercase}.panel-title{font-weight:600}.panel-subtitle{color:var(--fg-muted);margin-top:var(--spacing-sm)}.panel-body{padding:var(--spacing-lg)}.panel-body.panel-body-flush{padding:0}.section{border-bottom:var(--border-width) solid var(--border)}.section:last-child{border-bottom:none}.row{display:flex;align-items:stretch}.row-label{width:170px;flex-shrink:0;border-right:var(--border-width) solid var(--border);color:var(--fg);text-transform:uppercase;font-weight:600}.row-label,.row-value{padding:var(--spacing)}.row-value{flex:1 1}.status-dot{display:inline-block;width:10px;height:10px;margin-right:2px;margin-left:2px}.status-dot.running{background:var(--green)}.status-dot.starting{background:var(--yellow);animation:blink 1s infinite}.status-dot.stopped{background:var(--orange)}.status-dot.not-ready{background:var(--pink);animation:blink 1s infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.5}}input,select{font-family:inherit;font-size:inherit;line-height:inherit;padding:var(--spacing-sm) var(--spacing);border:var(--border-width) solid var(--border);background:var(--bg);color:var(--fg);width:100%}input.borderless-input{border:none;border-bottom:var(--border-width) solid var(--border);padding:var(--spacing-sm) 0}select.borderless-select{border:none;padding:var(--spacing-sm) 0;width:auto;color:var(--fg-muted)}input:focus,select:focus{outline:none;background:var(--bg-alt)}input::placeholder{color:var(--fg-muted)}.btn,button{font-family:inherit;font-size:inherit;line-height:inherit;padding:2px 4px;border:var(--border-width) solid var(--border);background:var(--bg);color:var(--fg);cursor:pointer;text-transform:uppercase}button.block{width:100%;padding:var(--spacing-sm) var(--spacing)}.btn:hover,button:hover{background:var(--fg);color:var(--bg)}button:disabled{opacity:.5;cursor:not-allowed}button:disabled:hover{background:var(--bg);color:var(--fg)}button.primary{background:var(--fg);color:var(--bg)}button.primary:hover{background:var(--bg);color:var(--fg)}button.small{padding:2px 4px}button.ghost{border-color:transparent}button.ghost:hover{border-color:var(--border);background:var(--bg);color:var(--fg)}button.ghost.accent-pink{color:var(--pink)}button.ghost.accent-pink:hover{border-color:transparent;background:var(--pink);color:#fff}button.ghost.accent-orange{color:var(--orange)}button.ghost.accent-orange:hover{border-color:transparent;background:var(--orange);color:#fff}button.ghost.accent-green{color:var(--green)}button.ghost.accent-green:hover{border-color:transparent;background:var(--green);color:#fff}button.ghost.accent-cyan{color:var(--cyan)}button.ghost.accent-cyan:hover{border-color:transparent;background:var(--cyan);color:#fff}a{color:var(--fg);text-decoration:underline}a:hover{color:var(--pink)}.toggle{position:relative;display:inline-flex;align-items:center;gap:var(--spacing-sm);cursor:pointer}.toggle input{position:absolute;opacity:0;width:0;height:0}.toggle-track{width:40px;height:20px;border:var(--border-width) solid var(--border);position:relative}.toggle-thumb{position:absolute;width:14px;height:14px;top:1px;left:1px;background:var(--fg-muted);transition:left .15s,background .15s}.toggle input:checked+.toggle-track .toggle-thumb{left:21px;background:var(--green)}.toggle-label{text-transform:uppercase}.error{border:var(--border-width) solid var(--pink);background:var(--bg);color:var(--pink);padding:var(--spacing);margin-bottom:var(--spacing)}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--fg-muted);border-top-color:var(--fg);border-radius:50%;animation:spin .6s linear infinite}.spinner.large{width:32px;height:32px;border-width:3px}@keyframes spin{to{transform:rotate(1turn)}}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap{gap:var(--spacing)}.gap-sm{gap:var(--spacing-sm)}.mt{margin-top:var(--spacing)}.mb{margin-bottom:var(--spacing)}.mt-sm{margin-top:var(--spacing-sm)}.mb-sm{margin-bottom:var(--spacing-sm)}.mt-lg{margin-top:var(--spacing-lg)}.mb-lg{margin-bottom:var(--spacing-lg)}.text-muted{color:var(--fg-muted)}.hoverable-text:hover{color:#fff}.toast{position:fixed;bottom:var(--spacing-lg);left:50%;transform:translateX(-50%);background:var(--fg);color:var(--bg);padding:var(--spacing-sm) var(--spacing);animation:toast-in .2s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateX(-50%) translateY(8px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--bg);border:1px solid var(--border);padding:var(--spacing-lg);max-width:480px;width:90%}.modal.wide{max-width:640px;max-height:85vh;overflow-y:auto}.config-pre{overflow:auto;max-height:500px;white-space:pre;word-break:break-all}.config-pre,.config-textarea{background:var(--bg-alt);border:1px solid var(--border);padding:var(--spacing)}.config-textarea{color:var(--fg);font-family:inherit;font-size:inherit;width:100%;min-height:200px;resize:vertical}.config-textarea:focus{outline:1px solid var(--pink)}.config-section{border-top:1px solid var(--border);padding-top:var(--spacing);margin-top:var(--spacing)}.config-section-title{text-transform:uppercase;margin-bottom:var(--spacing-sm)}.text-center{text-align:center}.uppercase{text-transform:uppercase}.list{list-style:none}.list-item:first-child{border-top-width:var(--border-width)}.file-tree-item{padding:4px 0;cursor:default}.file-tree-item.dir{cursor:pointer}.file-tree-item:hover{background:var(--bg-alt)}.file-tree-icon{display:inline-block;width:16px;text-align:center;margin-right:20px;color:var(--fg-muted)}.file-tree-size{color:var(--fg-muted);margin-left:var(--spacing)}.steps{margin-bottom:var(--spacing-lg)}.step,.steps{display:flex;align-items:center}.step{flex-direction:column;flex:0 1}.step-number{width:28px;height:28px;border:var(--border-width) solid var(--border);display:flex;align-items:center;justify-content:center}.step.active .step-number{background:var(--fg);color:var(--bg)}.step.completed .step-number{background:var(--green);color:var(--bg)}.step-label{margin-top:4px;text-transform:uppercase;color:var(--fg-muted)}.step-line{flex:1 1;height:1px;background:var(--border);margin:0 var(--spacing-sm)}code,pre{font-family:inherit;background:var(--bg-alt);border:var(--border-width) solid var(--border)}pre{padding:var(--spacing);overflow-x:auto}code{padding:2px 4px}.page-center{min-height:100vh;justify-content:center}.header,.page-center{display:flex;align-items:center;padding:var(--spacing)}.header{justify-content:space-between;border-bottom:var(--border-width) solid var(--border)}.header-title{font-weight:600;text-transform:uppercase}.header-subtitle{color:var(--fg-muted)}.barcode{height:24px;padding:0 var(--spacing-sm);background:repeating-linear-gradient(90deg,var(--fg) 0,var(--fg) 2px,var(--bg) 2px,var(--bg) 14px);background-clip:content-box;border-bottom:var(--border-width) solid var(--border)}.accent-pink{color:var(--pink)}.accent-cyan{color:var(--cyan)}.accent-green{color:var(--green)}.accent-orange{color:var(--orange)}.bg-accent-pink{background:var(--pink);color:var(--bg)}.bg-accent-cyan{background:var(--cyan);color:var(--fg)}.bg-accent-green{background:var(--green);color:var(--bg)}