:root,:root[data-theme=dark]{--bg:#0b1018;--bg-raise:#0e1520;--panel:#111a28;--panel-2:#0d1420;--line:#1e2c42;--line-soft:#172336;--ink:#e9eff8;--ink-dim:#c3d0e0;--muted:#8299b3;--faint:#7d90a8;--accent:#53b9ff;--accent-deep:#2a84d2;--accent-ink:#06121f;--accent-wash:rgba(83,185,255,0.1);--accent-edge:rgba(83,185,255,0.32);--grid:rgba(83,185,255,0.025);--amber:#ffb454;--ok:#3ecf8e;--err:#ff7070;--err-wash:rgba(255,112,112,0.09);--ok-wash:rgba(62,207,142,0.09);--scroll:#223350;--radius:10px;--radius-sm:6px;--mono:"Cascadia Code","JetBrains Mono",Consolas,"SF Mono",ui-monospace,monospace;--sans:"Segoe UI Variable Text","Segoe UI",Inter,system-ui,-apple-system,sans-serif;--shadow:0 10px 30px rgba(0,0,0,0.45)}:root[data-theme=light]{--bg:#eef2f8;--bg-raise:#ffffff;--panel:#ffffff;--panel-2:#f6f9fc;--line:#d3dde9;--line-soft:#e4ebf3;--ink:#12212f;--ink-dim:#2c3f52;--muted:#5b7189;--faint:#5b6e85;--accent:#1668c4;--accent-deep:#0f4f9e;--accent-ink:#ffffff;--accent-wash:rgba(22,104,196,0.08);--accent-edge:rgba(22,104,196,0.3);--grid:rgba(22,104,196,0.04);--amber:#955a00;--ok:#16794a;--err:#c0392b;--err-wash:rgba(192,57,43,0.07);--ok-wash:rgba(22,121,74,0.08);--scroll:#c2cfdd;--shadow:0 10px 30px rgba(21,40,64,0.14)}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}body{background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:28px 28px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.offscreen{position:absolute;left:-99999px;top:0;pointer-events:none}button{font-family:inherit;font-size:13px;cursor:pointer;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:var(--radius-sm);padding:6px 12px;transition:background .12s,border-color .12s,color .12s}button:hover:not(:disabled){border-color:var(--accent-deep)}button:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:linear-gradient(180deg,var(--accent),var(--accent-deep));border-color:var(--accent-deep);color:var(--accent-ink);font-weight:600}.btn-primary:hover:not(:disabled){filter:brightness(1.08);border-color:var(--accent)}.btn-ghost{background:transparent}.btn-danger{color:var(--err)}.btn-danger:hover:not(:disabled){border-color:var(--err)}.icon-btn{background:transparent;border-color:transparent;color:var(--muted);padding:5px 9px;font-size:14px;line-height:1}.icon-btn:hover{color:var(--accent)}input[type=text],textarea{font-family:inherit;background:var(--panel-2);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;font-size:13px}input:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent-deep)}::placeholder{color:var(--faint);opacity:1}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--scroll);border-radius:6px}::-webkit-scrollbar-track{background:transparent}.topbar{gap:14px;height:52px;padding:0 18px;border-bottom:1px solid var(--line);background:var(--bg-raise);position:-webkit-sticky;position:sticky;top:0;z-index:50}.brand,.topbar{display:flex;align-items:center}.brand{gap:10px;font-weight:700;font-size:15px;letter-spacing:.2px;color:var(--ink)}.brand:hover{text-decoration:none}.brand .mark{width:26px;height:26px;display:grid;place-items:center;border-radius:7px;background:linear-gradient(135deg,var(--accent) 0,#7a5cff 100%);color:#06121f;font-weight:800;font-size:13px;font-family:var(--mono)}.brand .dock{color:var(--accent)}.spacer{flex:1 1}.topbar .ws-name{font-family:var(--mono);font-size:12.5px;color:var(--ink-dim);padding:4px 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel-2)}.badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;padding:3px 9px;border-radius:999px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}.badge.ephemeral{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 40%,transparent)}.badge.plan{color:var(--accent);border-color:var(--accent-edge)}.avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--panel);border:1px solid var(--line);font-size:12px;font-weight:700;color:var(--accent);flex-shrink:0;padding:0;cursor:pointer}.avatar:hover{border-color:var(--accent-deep)}.page{max-width:1060px;margin:0 auto;padding:40px 24px 80px}.page h1{font-size:22px;margin:0 0 4px}.page .sub{color:var(--muted);margin:0 0 28px}.new-ws{display:flex;gap:8px;margin:0 0 22px;flex-wrap:wrap}.new-ws input{flex:1 1 260px;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);padding:9px 12px;font:inherit;font-size:13px}.new-ws input:focus-visible{outline:2px solid var(--accent-deep);outline-offset:1px}.new-ws select{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--muted);padding:9px 10px;font:inherit;font-size:12.5px}.ws-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:16px;gap:16px}.ws-card{display:block;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;color:var(--ink);transition:border-color .12s,transform .12s}.ws-card:hover{border-color:var(--accent-deep);text-decoration:none;transform:translateY(-1px)}.ws-card h3{margin:0 0 6px;font-size:15px}.ws-card .meta{color:var(--muted);font-size:12px;display:flex;gap:12px;flex-wrap:wrap}.ws-card .foot{margin-top:14px;display:flex;justify-content:space-between;align-items:center}.ws-card.new{display:grid;place-items:center;min-height:130px;border-style:dashed;color:var(--muted);background:transparent;font-size:13.5px}.ws-card.new:hover{color:var(--accent);text-decoration:none}.trust-strip{margin-top:40px;display:flex;gap:22px;flex-wrap:wrap;padding:16px 18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);color:var(--muted);font-size:12.5px}.trust-strip b{color:var(--ink-dim);font-weight:600}.trust-strip .dot{color:var(--ok)}.editor{display:grid;height:calc(100vh - 52px)}.editor,.pane{overflow:hidden}.pane{display:flex;flex-direction:column;min-width:0;background:var(--bg-raise)}.splitter{border:none;border-radius:0;padding:0;background:var(--line);cursor:col-resize;position:relative}.splitter:focus-visible,.splitter:hover:not(.disabled){background:var(--accent-deep)}.splitter.disabled{cursor:default}.splitter:focus-visible{outline-offset:-2px}.pane-head{display:flex;align-items:center;gap:8px;height:42px;padding:0 12px;border-bottom:1px solid var(--line);font-size:12px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);flex-shrink:0}.pane-body{flex:1 1;min-height:0;display:flex;flex-direction:column}.pane.collapsed{background:var(--panel-2)}.collapsed-rail{flex:1 1;border:none;border-radius:0;background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:14px;padding-top:14px}.collapsed-rail:hover{color:var(--accent)}.collapsed-rail .vertical{writing-mode:vertical-rl;font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase}.input-pane{padding:12px;gap:10px;overflow-y:auto}.input-pane textarea{flex:1 1;min-height:120px;resize:none;line-height:1.55;font-size:13px}.mode-row{display:flex;gap:6px;flex-shrink:0}.mode-row button{flex:1 1;font-size:12px;padding:5px 0}.mode-row button.active{border-color:var(--accent-deep);color:var(--accent);background:var(--accent-wash)}.input-pane.dropping{outline:2px dashed var(--accent);outline-offset:-4px;background:var(--accent-wash)}.attach-row{display:flex;align-items:center;gap:8px;flex-shrink:0}.attach-btn{font-size:12px;padding:4px 10px;white-space:nowrap}.attach-hint{font-size:11.5px;color:var(--faint);line-height:1.3}.attach-note{margin:0;display:flex;align-items:flex-start;gap:8px;padding:7px 9px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--ink-dim);font-size:11.5px;line-height:1.45}.attach-note .icon-btn{margin-left:auto;flex-shrink:0}.diagram-card{flex-shrink:0;border:1px solid var(--accent-deep);border-radius:var(--radius-sm);background:var(--accent-wash);padding:9px 10px}.diagram-card-head{display:flex;align-items:center;gap:8px}.diagram-name{font-size:12.5px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.diagram-size{font-family:var(--mono);font-size:11px;color:var(--muted);margin-left:auto}.diagram-note{margin:7px 0 0;font-size:11.5px;line-height:1.5;color:var(--ink-dim)}.diagram-note.conflict,.diff-modal header .sub.warn{color:var(--amber)}.input-meta{display:flex;align-items:baseline;gap:10px}.hint{font-size:11.5px;flex:1 1}.char-count,.hint{color:var(--faint)}.char-count{font-family:var(--mono);font-size:11px;white-space:nowrap}.char-count.near{color:var(--amber)}.char-count.over{color:var(--err);font-weight:700}.inline-error{margin:0;font-size:12px;color:var(--err);background:var(--err-wash);border:1px solid color-mix(in srgb,var(--err) 35%,transparent);border-radius:var(--radius-sm);padding:7px 10px}.submit{flex-shrink:0;padding:9px}.progress-rail{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);padding:10px 12px;display:flex;flex-direction:column;gap:7px;flex-shrink:0}.progress-step{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--faint);font-family:var(--mono)}.progress-step .tick{width:15px;height:15px;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;font-size:9px;flex-shrink:0}.progress-step.done{color:var(--muted)}.progress-step.done .tick{border-color:var(--ok);color:var(--ok)}.progress-step.active{color:var(--ink)}.progress-step.active .tick{border-color:var(--accent);color:var(--accent);animation:pulse 1.1s ease-in-out infinite}.progress-step.failed{color:var(--err)}.progress-step.failed .tick{border-color:var(--err);color:var(--err)}.progress-step .note{color:var(--amber);font-size:11px;margin-left:auto}@keyframes pulse{50%{box-shadow:0 0 0 4px var(--accent-wash)}}@media (prefers-reduced-motion:reduce){.progress-step.active .tick{animation:none}}.elapsed{font-size:11px;color:var(--faint);font-family:var(--mono);text-align:right}.failure-panel{border:1px solid var(--err);border-radius:var(--radius-sm);background:var(--err-wash);padding:12px;display:flex;flex-direction:column;gap:9px;flex-shrink:0}.failure-panel.quota{border-color:var(--amber);background:color-mix(in srgb,var(--amber) 8%,transparent)}.failure-head{display:flex;align-items:center;gap:9px}.failure-head h4{margin:0;font-size:13.5px}.failure-icon{color:var(--err);font-weight:700}.failure-panel.quota .failure-icon{color:var(--amber)}.failure-detail{margin:0;font-family:var(--mono);font-size:11px;line-height:1.5;color:var(--ink-dim);background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 10px;max-height:170px;overflow:auto;white-space:pre}.failure-detail-text{margin:0;font-size:12.5px;color:var(--ink-dim)}.failure-hint{margin:0;font-size:12px;color:var(--muted)}.failure-actions{display:flex;gap:6px;flex-wrap:wrap}.failure-actions button{font-size:12px;padding:5px 10px}.dsl-editor{flex:1 1;display:flex;min-height:0;font-family:var(--mono);font-size:12.5px;line-height:1.6}.dsl-gutter{padding:10px 8px 10px 14px;text-align:right;color:var(--faint);-webkit-user-select:none;-moz-user-select:none;user-select:none;background:var(--panel-2);border-right:1px solid var(--line-soft);overflow:hidden;white-space:pre;flex-shrink:0}.dsl-editor textarea{flex:1 1;border:none;border-radius:0;resize:none;background:transparent;font-family:var(--mono);font-size:12.5px;line-height:1.6;padding:10px 14px;white-space:pre;overflow:auto}.dsl-editor textarea:focus{outline-offset:-2px}.dsl-error{border-top:1px solid var(--err);background:var(--err-wash);padding:9px 12px;flex-shrink:0;max-height:180px;overflow:auto}.dsl-error-head{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--err);margin-bottom:6px}.dsl-error-head button{font-size:11.5px;padding:3px 9px}.dsl-error pre{margin:0;font-family:var(--mono);font-size:11px;color:var(--ink-dim);white-space:pre-wrap}.dsl-footer{display:flex;align-items:center;gap:10px;padding:7px 12px;border-top:1px solid var(--line);font-size:11.5px;color:var(--muted);font-family:var(--mono);flex-shrink:0}.dsl-footer .status-ok{color:var(--ok)}.dsl-footer .status-dirty{color:var(--amber)}.dsl-footer button{font-size:11.5px;padding:4px 10px;font-family:var(--sans)}.tab-row{display:flex;gap:2px}.tab-row button{border:none;background:transparent;color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;padding:4px 10px;border-radius:var(--radius-sm)}.tab-row button.active{color:var(--accent);background:var(--accent-wash)}.tab-row button .count{color:var(--faint);font-weight:500;margin-left:4px}.level-switch{display:flex;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}.level-switch button{border:none;border-radius:0;font-size:11.5px;padding:4px 10px;background:transparent;color:var(--muted)}.level-switch button.active{background:var(--accent-wash);color:var(--accent)}.level-switch button:focus-visible{outline-offset:-2px}.diagram-canvas{flex:1 1;min-height:0;overflow:hidden;position:relative;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 0,var(--accent-wash),transparent 60%),var(--panel-2);cursor:-webkit-grab;cursor:grab;touch-action:none}.diagram-canvas:active{cursor:-webkit-grabbing;cursor:grabbing}.diagram-canvas:focus-visible{outline-offset:-3px}.diagram-canvas.full{position:fixed;inset:52px 0 0 0;z-index:60;border-top:1px solid var(--line)}.diagram-stage{transform-origin:center center;will-change:transform}.diagram-stage svg{display:block}.diagram-stage img{display:block;max-width:none;background:#fff;border-radius:4px}.zoom-cluster{position:absolute;right:14px;bottom:14px;display:flex;align-items:stretch;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--panel);box-shadow:var(--shadow);z-index:2}.zoom-cluster button{border:none;border-radius:0;background:transparent;font-size:14px;padding:4px 11px;line-height:1.4}.zoom-cluster button:hover{background:var(--accent-wash);color:var(--accent)}.zoom-cluster .zoom-level{font-family:var(--mono);font-size:11px;min-width:54px;border-left:1px solid var(--line);border-right:1px solid var(--line);color:var(--muted)}.diagram-foot{padding:7px 12px;border-top:1px solid var(--line);font-size:11.5px;color:var(--faint);display:flex;gap:14px;flex-shrink:0}.export-wrap{position:relative}.export-menu{position:absolute;right:0;top:calc(100% + 6px);min-width:250px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:6px;z-index:40;display:flex;flex-direction:column}.export-menu button{border:none;background:transparent;text-align:left;padding:7px 10px;font-size:12.5px;display:flex;justify-content:space-between;align-items:center;gap:12px;text-transform:none;letter-spacing:0;font-weight:400}.export-menu button:hover{background:var(--accent-wash)}.export-menu button em{display:block;font-style:normal;font-size:11px;color:var(--faint);margin-top:1px}.export-menu button span.ext{color:var(--faint);font-family:var(--mono);font-size:11px;flex-shrink:0}.export-menu .sep{height:1px;background:var(--line);margin:5px 4px}.empty-state{flex:1 1;display:grid;place-content:center;justify-items:center;grid-gap:8px;gap:8px;text-align:center;padding:40px 32px;color:var(--muted)}.empty-state.standalone{border:1px dashed var(--line);border-radius:var(--radius);margin-top:30px}.empty-state .empty-mark{font-size:30px;color:var(--faint);line-height:1}.empty-state h3{margin:4px 0 0;font-size:15px;color:var(--ink)}.empty-state p{margin:0;font-size:12.5px;max-width:42ch;line-height:1.6}.empty-state code{font-family:var(--mono);color:var(--accent)}.empty-state button{margin-top:10px}.adr-list{overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:8px}.adr-card{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel)}.adr-card.open,.adr-card:hover{border-color:var(--accent-deep)}.adr-head{width:100%;display:flex;align-items:center;gap:9px;background:transparent;border:none;border-radius:var(--radius-sm);padding:12px 14px;text-align:left}.adr-head:hover{border-color:transparent}.adr-head:focus-visible{outline-offset:-2px}.adr-head .num{font-family:var(--mono);font-size:11px;color:var(--faint);flex-shrink:0}.adr-head .adr-title{font-size:13.5px;font-weight:600;flex:1 1}.adr-head .chev{color:var(--faint);font-size:10px}.adr-status{font-size:10.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;padding:2px 8px;border-radius:999px;border:1px solid;white-space:nowrap}.adr-status.proposed{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 45%,transparent)}.adr-status.accepted{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 45%,transparent)}.adr-status.superseded{color:var(--faint);border-color:var(--line);text-decoration:line-through}.adr-body{padding:0 14px 14px;font-size:12.5px;color:var(--ink-dim);display:flex;flex-direction:column;gap:8px}.adr-body h5{margin:0;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}.adr-body p{margin:0;line-height:1.6}.adr-links{display:flex;gap:6px;flex-wrap:wrap}.adr-links code{font-family:var(--mono);font-size:11px;color:var(--accent);background:var(--accent-wash);border:1px solid var(--accent-edge);padding:1px 7px;border-radius:999px}.adr-actions{display:flex;gap:6px;margin-top:4px}.adr-actions button{font-size:11.5px;padding:4px 10px}.history-list{overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:6px}.version-row{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);padding:10px 14px}.version-row .v{font-family:var(--mono);font-size:12px;color:var(--accent);flex-shrink:0}.version-row .when{font-size:11px;color:var(--faint);font-family:var(--mono);white-space:nowrap}.version-row .log{flex:1 1;font-size:12.5px;color:var(--ink-dim)}.version-row .current-tag{font-size:10.5px;color:var(--ok);font-weight:700;text-transform:uppercase;letter-spacing:.5px}.overlay{position:fixed;inset:0;background:rgba(4,8,14,.72);display:grid;place-items:center;z-index:100;padding:30px}.diff-modal{width:min(880px,100%);max-height:84vh;display:flex;flex-direction:column;background:var(--bg-raise);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.diff-modal header{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diff-modal header h3{margin:0;font-size:15px;flex:1 1}.diff-modal header .sub{color:var(--muted);font-size:12px}.diff-body{flex:1 1;overflow:auto;font-family:var(--mono);font-size:12px;line-height:1.55;padding:10px 0;background:var(--panel-2)}.diff-line{display:flex;white-space:pre}.diff-line .ln{width:46px;flex-shrink:0;text-align:right;padding-right:10px;color:var(--faint);-webkit-user-select:none;-moz-user-select:none;user-select:none}.diff-line .txt{padding-right:16px}.diff-line.add{background:var(--ok-wash)}.diff-line.add .txt{color:var(--ok)}.diff-line.del{background:var(--err-wash)}.diff-line.del .txt{color:var(--err);text-decoration:line-through;-webkit-text-decoration-color:color-mix(in srgb,var(--err) 50%,transparent);text-decoration-color:color-mix(in srgb,var(--err) 50%,transparent)}.diff-modal footer{padding:12px 18px;border-top:1px solid var(--line);display:flex;align-items:center;gap:10px;flex-wrap:wrap}.diff-modal footer .stats{flex:1 1;font-size:12px;font-family:var(--mono);color:var(--muted)}.diff-modal footer .stats .plus{color:var(--ok)}.diff-modal footer .stats .minus{color:var(--err)}.login-wrap{min-height:calc(100vh - 52px);display:grid;place-items:center;padding:40px 20px}.login-card{width:min(400px,100%);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:34px 32px;box-shadow:var(--shadow);text-align:center}.login-card h1{font-size:20px;margin:14px 0 6px}.login-card .sub{color:var(--muted);font-size:13px;margin:0 0 24px}.login-card .btn-primary{width:100%;padding:10px;font-size:14px}.login-card .fine{margin-top:20px;font-size:11.5px;color:var(--faint);line-height:1.6}.toast{position:fixed;bottom:22px;right:22px;max-width:380px;background:var(--panel);border:1px solid var(--ok);color:var(--ink);border-radius:var(--radius-sm);padding:10px 16px;font-size:13px;box-shadow:var(--shadow);z-index:200}@media (max-width:1100px){.editor{grid-template-columns:1fr 1fr!important;grid-template-rows:minmax(220px,34%) 1fr}.pane.input{grid-column:1/-1;border-bottom:1px solid var(--line)}.splitter{display:none}.pane{border-right:1px solid var(--line)}}@media (max-width:720px){.editor{grid-template-columns:1fr!important;grid-template-rows:none;height:auto;overflow:visible}.pane{height:70vh;border-right:none;border-bottom:1px solid var(--line)}.diagram-canvas.full{inset:0}}