@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-vietnamese-wdth-normal-rJmnGBSt.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-ext-wdth-normal-7khWdh9v.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-wdth-normal-DY7AcnAa.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/public-sans-vietnamese-wght-normal-CtlIRbEm.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/public-sans-latin-ext-wght-normal-MQgHevqp.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/public-sans-latin-wght-normal-DdeTHZLK.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink-950: #070c17;--ink-900: #0b1324;--ink-800: #141e33;--ink-700: #223049;--ink-600: #3a4863;--ink-500: #5a6782;--ink-400: #8590a8;--ink-300: #b4bccc;--ink-200: #d6dbe5;--ink-100: #e8ebf1;--ink-50: #f3f5f8;--paper: #eef1f5;--surface: #ffffff;--signal: #cdf54a;--signal-strong: #b5e01f;--signal-ink: #3c4a00;--success: #0e9f6e;--success-bg: #e6f6ef;--danger: #d93a40;--danger-bg: #fdecec;--warning: #c48a00;--repl: #2f6fb3;--font-display: "Archivo Variable", "Archivo", ui-sans-serif, system-ui, sans-serif;--display-stretch: 87.5%;--font-body: "Public Sans Variable", "Public Sans", ui-sans-serif, system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-md: .9375rem;--text-lg: 1.0625rem;--text-xl: 1.375rem;--text-2xl: 1.875rem;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--s-10: 40px;--s-12: 48px;--r-xs: 4px;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--sh-1: 0 1px 0 rgba(11, 19, 36, .06), 0 1px 3px rgba(11, 19, 36, .08);--sh-2: 0 2px 0 rgba(11, 19, 36, .05), 0 6px 16px -6px rgba(11, 19, 36, .22);--sh-3: 0 24px 60px -18px rgba(7, 12, 23, .45);--ease: cubic-bezier(.2, .7, .2, 1);--t-fast: .12s;--t-med: .22s;--focus: 0 0 0 2px var(--surface), 0 0 0 4px var(--ink-900);--rail-w: 288px}*{box-sizing:border-box}html,body{margin:0}body{font-family:var(--font-body);font-size:var(--text-md);line-height:1.5;color:var(--ink-900);background:var(--paper);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0;padding:0}button:disabled{cursor:default}:focus-visible{outline:none;box-shadow:var(--focus)}h1,h2,h3{font-family:var(--font-display);font-stretch:var(--display-stretch);letter-spacing:-.01em;margin:0}code,kbd{font-family:var(--font-mono)}.skip{position:absolute;left:-999px;top:8px;z-index:100;background:var(--signal);color:var(--ink-900);padding:8px 12px;border-radius:var(--r-sm)}.skip:focus{left:8px}.eyebrow{display:block;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-500)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);height:40px;padding:0 var(--s-4);border-radius:var(--r-sm);font-weight:600;font-size:var(--text-sm);white-space:nowrap;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast),transform var(--t-fast)}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{background:var(--ink-900);color:#fff}.btn-primary:hover:not(:disabled){background:var(--ink-700)}.btn-primary:disabled{background:var(--ink-200);color:var(--ink-400)}.btn-secondary{background:var(--surface);border:1px solid var(--ink-200);color:var(--ink-800)}.btn-secondary:hover{border-color:var(--ink-400)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#b92f35}.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:var(--r-sm);color:var(--ink-600);transition:background var(--t-fast),color var(--t-fast)}.icon-btn:hover{background:var(--ink-100);color:var(--ink-900)}.icon-btn.sm{width:30px;height:30px;background:var(--surface);border:1px solid var(--ink-200);box-shadow:var(--sh-1)}.icon-btn.sm:hover{border-color:var(--ink-900)}.icon-btn.danger:hover{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}kbd{display:inline-block;padding:1px 6px;border-radius:var(--r-xs);border:1px solid var(--ink-200);border-bottom-width:2px;background:var(--surface);font-size:11px;color:var(--ink-500);line-height:1.5}.shell{display:grid;grid-template-columns:var(--rail-w) 1fr;min-height:100vh}.workspace{display:flex;flex-direction:column;min-width:0}.rail{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:var(--ink-900);color:var(--ink-200);border-right:1px solid var(--ink-800)}.rail-head{display:flex;align-items:center;justify-content:space-between;padding:var(--s-5) var(--s-4) var(--s-4) var(--s-5)}.rail-brand{display:flex;align-items:center;gap:var(--s-3);text-align:left;border-radius:var(--r-sm)}.rail-brand strong{display:block;font-family:var(--font-display);font-stretch:var(--display-stretch);font-size:var(--text-lg);color:#fff;letter-spacing:-.01em}.rail-brand small{display:block;font-size:11px;color:var(--ink-400)}.rail-close{display:none;color:var(--ink-300)}.rail-close:hover{background:var(--ink-800);color:#fff}.rail-section{display:flex;justify-content:space-between;align-items:baseline;margin:var(--s-2) var(--s-5) var(--s-2);padding-top:var(--s-4);border-top:1px solid var(--ink-800)}.rail-section .eyebrow{color:var(--ink-400)}.rail-stat{font-family:var(--font-mono);font-size:11px;color:var(--signal)}.rail-tree{flex:1;overflow-y:auto;padding:0 var(--s-3) var(--s-4)}.rail-tree ul{list-style:none;margin:0;padding:0}.tree-row{display:flex;align-items:center;gap:2px;padding-left:calc(var(--depth) * 14px);border-radius:var(--r-sm);position:relative}.tree-toggle{width:22px;height:30px;display:grid;place-items:center;color:var(--ink-500);flex:none;border-radius:var(--r-xs)}.tree-toggle:hover{color:#fff}.tree-toggle svg{transition:transform var(--t-fast) var(--ease)}.tree-toggle svg.rot{transform:rotate(90deg)}.tree-link{flex:1;min-width:0;display:flex;align-items:center;gap:var(--s-2);height:32px;padding:0 var(--s-2);border-radius:var(--r-sm);text-align:left;font-size:var(--text-sm);color:var(--ink-300);transition:background var(--t-fast),color var(--t-fast)}.tree-link:hover{background:var(--ink-800);color:#fff}.tree-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-count{font-family:var(--font-mono);font-size:10px;color:var(--ink-500)}.tree-swatch{width:8px;height:8px;border-radius:2px;background:var(--c, var(--ink-500));flex:none}.tree-row.on-trail>.tree-link{color:#fff}.tree-row.is-active>.tree-link{background:var(--ink-800);color:var(--signal);font-weight:600}.tree-row.is-active>.tree-link .tree-count{color:var(--signal)}.tree-row.is-active:before{content:"";position:absolute;left:-12px;top:6px;bottom:6px;width:3px;border-radius:0 2px 2px 0;background:var(--signal)}.rail :focus-visible{box-shadow:0 0 0 2px var(--signal)}.rail-foot{padding:var(--s-4);border-top:1px solid var(--ink-800);display:grid;gap:var(--s-3)}.rail-mode{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3);border-radius:var(--r-md);background:var(--ink-800);text-align:left;border:1px solid var(--ink-700);transition:background var(--t-fast),border-color var(--t-fast)}.rail-mode:hover{border-color:var(--ink-500)}.rail-mode strong{display:block;font-size:var(--text-sm);color:#fff}.rail-mode small{display:block;font-size:11px;color:var(--ink-400)}.rail-mode-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:var(--r-sm);background:var(--ink-700);color:var(--ink-200);flex:none}.rail-mode.is-on{background:var(--signal);border-color:var(--signal)}.rail-mode.is-on strong{color:var(--ink-900)}.rail-mode.is-on small{color:var(--signal-ink)}.rail-mode.is-on .rail-mode-icon{background:var(--ink-900);color:var(--signal)}.btn-rail{background:transparent;border:1px solid var(--ink-700);color:var(--ink-200)}.btn-rail:hover{border-color:var(--ink-400);color:#fff}.rail-note{margin:0;font-size:11px;color:var(--ink-500);line-height:1.4}.rail-scrim{display:none}.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:var(--s-4);height:64px;padding:0 var(--s-8);background:var(--paper);border-bottom:1px solid var(--ink-200)}.menu-btn,.topbar.is-off-home{display:none}.crumbs{display:flex;align-items:center;flex-wrap:wrap;min-width:0;flex:1}.crumb{display:inline-flex;align-items:center}.crumb button{padding:var(--s-1) var(--s-2);border-radius:var(--r-xs);font-size:var(--text-sm);color:var(--ink-500);font-weight:500;transition:color var(--t-fast),background var(--t-fast)}.crumb button:hover{color:var(--ink-900);background:var(--ink-100)}.crumb button.is-current{color:var(--ink-900);font-weight:700}.crumb-sep{color:var(--ink-300)}.search{position:relative;display:flex;align-items:center;gap:var(--s-2);width:min(360px,40vw);height:40px;padding:0 var(--s-3);background:var(--surface);border:1px solid var(--ink-200);border-radius:var(--r-sm);color:var(--ink-500);transition:border-color var(--t-fast),box-shadow var(--t-fast)}.search:focus-within{border-color:var(--ink-900);box-shadow:0 0 0 3px #0b132414}.search input{flex:1;min-width:0;border:0;outline:none;background:none;font:inherit;font-size:var(--text-sm);color:var(--ink-900)}.search input::-webkit-search-cancel-button{display:none}.search-clear{display:grid;place-items:center;width:24px;height:24px;border-radius:var(--r-xs)}.search-clear:hover{background:var(--ink-100);color:var(--ink-900)}.edit-banner{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-8);background:var(--ink-900);color:var(--ink-200);font-size:var(--text-sm)}.edit-banner b{color:var(--signal);font-weight:600}.dot{width:8px;height:8px;border-radius:50%;background:var(--signal);flex:none}.canvas{flex:1;position:relative;padding:var(--s-8) var(--s-8) var(--s-6);background-image:radial-gradient(var(--ink-200) 1px,transparent 1px);background-size:24px 24px;background-position:-12px -12px}.canvas-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s-6);max-width:1100px;margin:0 auto}.canvas-head h1{font-size:var(--text-2xl);line-height:1.15;margin-top:var(--s-1)}.stats{display:flex;margin:0}.stats div{padding:0 var(--s-5);border-left:1px solid var(--ink-300)}.stats div:first-child{padding-left:0;border-left:0}.stats dt{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-500)}.stats dd{margin:0;font-family:var(--font-display);font-stretch:var(--display-stretch);font-size:var(--text-xl);font-weight:600;line-height:1.2}.canvas-hint{text-align:center;font-size:var(--text-xs);color:var(--ink-500);margin:0}.map{--size: 760px;position:relative;width:var(--size);height:var(--size);margin:0 auto}.map-links{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}.orbit-ring{fill:none;stroke:var(--ink-300);stroke-width:1;stroke-dasharray:2 6}.map-links line{stroke:var(--ink-400);stroke-width:1.25;animation:draw .5s var(--ease) var(--delay) both}.map-links g circle{fill:var(--ink-900);animation:fade .4s var(--delay) both}.slot{position:absolute;left:50%;top:50%}.slot-center{transform:translate(-50%,-50%);z-index:2}.slot-empty{transform:translate(-50%,calc(-50% + 200px))}.slot-orbit{transform:translate(calc(-50% + var(--x) * var(--radius)),calc(-50% + var(--y) * var(--radius)));z-index:1}.slot-orbit>.node{animation:enter .42s var(--ease) var(--delay) both}.node-hub{position:relative;width:196px;height:196px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-1);padding:var(--s-6);text-align:center;background:var(--ink-900);color:#fff;box-shadow:0 0 0 8px var(--paper),0 0 0 9px var(--ink-300);animation:enter .35s var(--ease) both;transition:transform var(--t-med) var(--ease)}.node-hub:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:3px solid var(--accent);clip-path:polygon(0 0,100% 0,100% 50%,0 50%)}.node-hub:not(:disabled):hover{transform:scale(1.03)}.hub-icon{font-size:34px;line-height:1;margin-bottom:var(--s-1)}.hub-label{font-family:var(--font-display);font-stretch:var(--display-stretch);font-size:var(--text-lg);font-weight:600;line-height:1.2}.hub-meta{display:inline-flex;align-items:center;gap:4px;margin-top:var(--s-1);font-family:var(--font-mono);font-size:11px;color:var(--signal)}.node{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border-radius:50%;text-align:center;padding:var(--s-5);transition:transform var(--t-med) var(--ease),box-shadow var(--t-med),border-color var(--t-med),background var(--t-med)}.node-label{font-weight:700;font-size:var(--text-sm);line-height:1.25}.node-tag{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.04em}.node-cat{width:152px;height:152px;background:var(--surface);border:1.5px solid var(--ink-200);box-shadow:var(--sh-1)}.node-cat:before{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border-radius:50%;border:1.5px solid var(--c);opacity:0;transition:opacity var(--t-med)}.node-icon{font-size:24px;line-height:1;margin-bottom:2px}.node-cat .node-tag{color:var(--ink-500);padding-top:4px;border-top:2px solid var(--c)}.node-cat:hover{transform:translateY(-2px);border-color:var(--c)}.node-cat:hover:before{opacity:.35}.node-q{width:164px;height:164px;padding:var(--s-6) var(--s-5);background:var(--surface);border:1.5px dashed color-mix(in srgb,var(--c) 45%,var(--ink-200));box-shadow:var(--sh-1)}.node-q .node-tag{color:var(--c)}.node-q .node-label{font-weight:600;font-size:12.5px;color:var(--ink-800);display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.node-cta{font-size:11px;font-weight:600;color:var(--ink-900);opacity:0;transform:translateY(2px);transition:opacity var(--t-fast),transform var(--t-fast)}.node-q:hover{border-style:solid;border-color:var(--c);transform:translateY(-2px)}.node-q:hover .node-cta,.node-q:focus-visible .node-cta{opacity:1;transform:none}.node-add{width:120px;height:120px;color:var(--ink-900);background:var(--signal);border:1.5px solid var(--signal-strong)}.node-add:hover{background:var(--signal-strong)}.node-actions{position:absolute;top:-6px;right:-6px;display:flex;gap:4px;z-index:3;animation:fade .2s both}.node-link{width:140px;height:140px;color:inherit;text-decoration:none;background:color-mix(in srgb,var(--c) 6%,var(--surface));border:1.5px solid color-mix(in srgb,var(--c) 35%,var(--ink-200));box-shadow:var(--sh-1)}.node-link .node-tag{display:inline-flex;align-items:center;gap:3px;color:var(--c)}.node-link:hover,.node-link:focus-visible{transform:translateY(-2px);border-color:var(--c)}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--s-1);text-align:center;width:280px;padding:var(--s-5);border:1px dashed var(--ink-300);border-radius:var(--r-md);background:var(--surface);color:var(--ink-500);font-size:var(--text-sm)}.empty svg{color:var(--ink-400);margin-bottom:var(--s-1)}.empty strong{color:var(--ink-900);font-size:var(--text-md)}.empty-lg{width:100%;padding:var(--s-12) var(--s-6)}.results{max-width:820px;margin:0 auto}.results-head{margin-bottom:var(--s-5)}.results-head h1{font-size:var(--text-xl);margin-top:var(--s-1)}.results-head h1 span{color:var(--ink-500);font-weight:500}.result-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-2)}.result{position:relative;width:100%;display:grid;gap:2px;text-align:left;padding:var(--s-4) var(--s-12) var(--s-4) var(--s-5);background:var(--surface);border:1px solid var(--ink-200);border-left:3px solid var(--c);border-radius:var(--r-sm);transition:border-color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast)}.result{color:inherit;text-decoration:none}.result-ref{overflow-wrap:anywhere}.result:hover{border-color:var(--ink-400);border-left-color:var(--c)}.result-trail{font-family:var(--font-mono);font-size:11px;color:var(--ink-500)}.result-title{font-weight:700;color:var(--ink-900)}.result-ref{font-size:11px;color:var(--ink-500)}.result-go{position:absolute;right:var(--s-4);top:50%;transform:translateY(-50%);color:var(--ink-400);transition:transform var(--t-fast),color var(--t-fast)}.result:hover .result-go{color:var(--ink-900);transform:translate(3px,-50%)}mark{background:var(--signal);color:var(--ink-900);border-radius:2px;padding:0 2px}.drawer-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;justify-content:flex-end;background:#070c1761;animation:fade var(--t-med) both}.drawer{width:min(560px,100%);height:100%;display:flex;flex-direction:column;background:var(--surface);box-shadow:var(--sh-3);outline:none;border-left:4px solid var(--c, var(--ink-900));animation:slide var(--t-med) var(--ease) both}.drawer.is-wide{width:min(820px,100%)}.drawer-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s-4);padding:var(--s-6) var(--s-6) var(--s-5) var(--s-8);border-bottom:1px solid var(--ink-100)}.drawer-head .eyebrow{color:var(--c, var(--ink-500));margin-bottom:var(--s-2)}.drawer-title{font-size:var(--text-xl);line-height:1.25}.drawer-body{flex:1;overflow-y:auto;padding:var(--s-6) var(--s-8)}.drawer-foot{display:flex;justify-content:flex-end;gap:var(--s-2);padding:var(--s-4) var(--s-8);border-top:1px solid var(--ink-100);background:var(--ink-50)}.prose{font-size:var(--text-md);line-height:1.7;color:var(--ink-800)}.prose p{margin:0 0 var(--s-4)}.prose ul{margin:0 0 var(--s-4);padding:0;list-style:none}.prose li{position:relative;padding-left:var(--s-5);margin-bottom:var(--s-1)}.prose li:before{content:"";position:absolute;left:4px;top:.7em;width:7px;height:7px;border-radius:1px;background:var(--c)}.ref{display:flex;gap:var(--s-3);align-items:flex-start;margin-top:var(--s-4);padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);background:var(--ink-900);color:var(--ink-200)}.ref svg{color:var(--signal);margin-top:2px;flex:none}.ref .eyebrow{color:var(--ink-400)}.ref code{font-size:var(--text-sm);color:#fff}.table-wrap{overflow-x:auto;margin:var(--s-2) 0 var(--s-4);border:1px solid var(--ink-200);border-radius:var(--r-sm)}.prose table{width:100%;border-collapse:collapse;font-size:var(--text-sm);line-height:1.4}.prose th,.prose td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--ink-100);white-space:nowrap}.prose th{background:var(--ink-50);font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-600)}.prose tr:last-child td{border-bottom:0}.prose tbody tr:hover{background:color-mix(in srgb,var(--c) 5%,white)}.field{display:grid;gap:6px;margin-bottom:var(--s-5)}.field-label{font-size:var(--text-sm);font-weight:700;color:var(--ink-800)}.field-label em{color:var(--danger);font-style:normal}.field-hint{font-size:var(--text-xs);color:var(--ink-500)}.field-row{display:grid;grid-template-columns:120px 1fr;gap:var(--s-4)}.input{width:100%;font:inherit;font-size:var(--text-md);color:var(--ink-900);padding:10px 12px;background:var(--surface);border:1px solid var(--ink-200);border-radius:var(--r-sm);outline:none;resize:vertical;transition:border-color var(--t-fast),box-shadow var(--t-fast)}.input:hover{border-color:var(--ink-300)}.input:focus{border-color:var(--ink-900);box-shadow:0 0 0 3px #0b132414}.input::placeholder{color:var(--ink-400)}.input.mono{font-family:var(--font-mono);font-size:var(--text-sm)}.input-icon{text-align:center;font-size:20px}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-2);margin-bottom:var(--s-6);padding:4px;background:var(--ink-50);border:1px solid var(--ink-100);border-radius:var(--r-md)}.segmented button{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3);border-radius:var(--r-sm);text-align:left;color:var(--ink-500);transition:background var(--t-fast),color var(--t-fast),box-shadow var(--t-fast)}@media(max-width:520px){.segmented button{flex-direction:column;align-items:flex-start;gap:var(--s-1)}}.segmented button strong{display:block;font-size:var(--text-sm);color:var(--ink-800)}.segmented button small{display:block;font-size:11px}.segmented button.is-on{background:var(--surface);color:var(--ink-900);box-shadow:var(--sh-1),inset 0 0 0 1px var(--ink-900)}.swatches{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:44px}.swatch{width:26px;height:26px;border-radius:var(--r-xs);background:var(--s);box-shadow:inset 0 0 0 1px #0000001a;transition:transform var(--t-fast)}.swatch:hover{transform:scale(1.12)}.swatch.is-on{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--s)}.swatch-custom{padding:0;border:1px dashed var(--ink-300);background:none;cursor:pointer}.swatch-custom::-webkit-color-swatch-wrapper{padding:3px}.swatch-custom::-webkit-color-swatch{border:0;border-radius:2px}.dialog-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:var(--s-4);background:#070c1780;animation:fade var(--t-fast) both}.dialog{width:min(420px,100%);padding:var(--s-6);background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-3);animation:enter var(--t-med) var(--ease) both}.dialog-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:var(--r-md);background:var(--danger-bg);color:var(--danger);margin-bottom:var(--s-4)}.dialog h3{font-size:var(--text-lg);margin-bottom:var(--s-2)}.dialog p{margin:0 0 var(--s-6);color:var(--ink-600);font-size:var(--text-sm)}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--s-2)}.toast{position:fixed;right:var(--s-6);bottom:var(--s-6);z-index:50;display:flex;align-items:flex-start;gap:var(--s-3);max-width:420px;padding:var(--s-3) var(--s-4);border-radius:var(--r-md);font-size:var(--text-sm);font-weight:500;background:var(--ink-900);color:#fff;box-shadow:var(--sh-3);cursor:pointer;animation:rise var(--t-med) var(--ease) both}.toast-icon{display:grid;place-items:center;width:22px;height:22px;border-radius:var(--r-xs);flex:none}.toast.is-saving .toast-icon{color:var(--ink-300)}.toast.is-ok .toast-icon{background:var(--signal);color:var(--ink-900)}.toast.is-err{background:var(--surface);color:var(--ink-900);border:1px solid var(--danger);border-left-width:4px}.toast.is-err .toast-icon{color:var(--danger)}.spinner{animation:spin .8s linear infinite}.infra-page{max-width:1240px;margin:0 auto}.infra-page .canvas-head{max-width:none;flex-wrap:wrap}.infra-filters{display:flex;gap:var(--s-2);flex-wrap:wrap}.infra-filter{display:grid;text-align:left;min-width:104px;padding:var(--s-2) var(--s-3);background:var(--surface);border:1px solid var(--ink-200);border-radius:var(--r-sm);transition:border-color var(--t-fast),box-shadow var(--t-fast)}.infra-filter span{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-500)}.infra-filter strong{font-family:var(--font-display);font-stretch:var(--display-stretch);font-size:var(--text-xl);font-weight:600;line-height:1.2}.infra-filter:hover{border-color:var(--ink-400)}.infra-filter[aria-pressed=true]{border-color:var(--ink-900);box-shadow:inset 0 0 0 1px var(--ink-900)}.infra-filter.f-bad strong{color:var(--danger)}.infra-legend{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2) var(--s-5);margin:var(--s-5) 0 var(--s-6);font-size:var(--text-xs);color:var(--ink-600)}.infra-legend>span{display:inline-flex;align-items:center;gap:var(--s-2)}.infra-legend path{stroke-width:2;fill:none}.lg-data{stroke:var(--ink-600)}.lg-repl{stroke:var(--repl);stroke-dasharray:2 3}.lg-admin{stroke:var(--ink-400);stroke-dasharray:5 4}.infra-note{margin-left:auto;color:var(--ink-500)}.infra-note code{font-size:11px;background:var(--ink-100);padding:1px 5px;border-radius:var(--r-xs)}.infra{position:relative;isolation:isolate;display:grid;gap:52px;padding-bottom:var(--s-8)}.infra-wires{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;overflow:visible}.infra-row{display:grid;gap:var(--s-6);align-items:start}.infra-row-top{grid-template-columns:3fr 2fr;justify-items:stretch}.infra-row-top>.entry{justify-self:center}.infra-row-ops{grid-template-columns:190px 1fr;align-items:center}.wire path{fill:none;stroke-width:1.5;transition:opacity var(--t-med),stroke var(--t-fast)}.wire-data path{stroke:var(--ink-600)}.wire-repl path{stroke:var(--repl);stroke-dasharray:2 3}.wire-admin path{stroke:var(--ink-400);stroke-dasharray:5 4}.wire.is-on path{stroke:var(--ink-900);stroke-width:2.25}.wire.is-off{opacity:.12}.wire rect{fill:var(--paper);stroke:var(--ink-200)}.wire text{font-family:var(--font-mono);font-size:10px;fill:var(--ink-600)}.ah{fill:var(--ink-500)}.ah-on{fill:var(--ink-900)}.entry{position:relative;z-index:2;display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);background:var(--ink-900);color:#fff;border-radius:var(--r-md);box-shadow:var(--sh-2);transition:opacity var(--t-med)}.entry-icon{font-size:22px;line-height:1}.entry strong{display:block;font-family:var(--font-display);font-stretch:var(--display-stretch);font-size:var(--text-sm)}.entry small{display:block;font-size:11px;color:var(--ink-300)}.zone{position:relative;display:grid;gap:var(--s-3);align-content:start;padding:var(--s-4);background:#ffffffb8;border:1px solid var(--ink-200);border-top:3px solid var(--zc, var(--ink-400));border-radius:var(--r-lg)}.zone-staging{background:#fff6;border-style:dashed;border-top-style:solid}.zone-head{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}.zone-flag{font-family:var(--font-mono);font-size:10px;font-weight:600;padding:2px 6px;border-radius:var(--r-xs);background:var(--zc, var(--ink-900));color:#fff}.zone-head strong{font-family:var(--font-display);font-stretch:var(--display-stretch);font-size:var(--text-lg);letter-spacing:-.01em}.zone-env{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-500);border:1px solid var(--ink-200);padding:1px 6px;border-radius:var(--r-xs)}.zone-count{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--ink-500)}.zone-count b{color:var(--danger);font-weight:600}.tier{display:grid;gap:var(--s-2);align-content:start}.zone-prod .tier+.tier{padding-top:var(--s-3);border-top:1px dashed var(--ink-200)}.tier-label{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-400);justify-self:start}.tier-items{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-2) var(--s-4)}.zone-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--s-3)}.tier-col .tier-items{flex-direction:column;flex-wrap:nowrap;align-items:stretch;justify-content:flex-start;gap:var(--s-2)}.tier-col .host{width:auto}.zone-split{display:grid;grid-template-columns:3fr 1fr;gap:var(--s-6)}.zone-split .tier-items{justify-content:flex-start}.host{--lvl: var(--ink-300);position:relative;z-index:2;display:grid;gap:3px;align-content:start;width:176px;padding:8px 10px 9px 13px;text-align:left;text-decoration:none;color:inherit;background:var(--surface);border:1px solid var(--ink-200);border-radius:var(--r-sm);box-shadow:var(--sh-1);transition:opacity var(--t-med),border-color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast)}.host:before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:4px;border-radius:var(--r-sm) 0 0 var(--r-sm);background:var(--lvl)}.host:hover{border-color:var(--ink-500);transform:translateY(-1px)}.host.is-active{border-color:var(--ink-900);box-shadow:0 0 0 1px var(--ink-900),var(--sh-2)}.host-name{display:flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--ink-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.host-role{font-size:11.5px;line-height:1.3;color:var(--ink-500)}.host-meta{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.chip{--lvl: var(--ink-300);font-family:var(--font-mono);font-size:10px;line-height:1;padding:3px 5px;border-radius:var(--r-xs);border:1px solid var(--lvl);color:var(--ink-700);background:color-mix(in srgb,var(--lvl) 10%,var(--surface))}.host.svc{--lvl: var(--signal-strong)}.host.svc svg{color:var(--ink-400);flex:none}.is-dim{opacity:.25}.lvl-ok{--lvl: var(--success)}.lvl-warn{--lvl: var(--warning)}.lvl-bad{--lvl: var(--danger)}.lvl-unknown{--lvl: var(--ink-300)}.lvl-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--lvl);flex:none}.inspector{position:fixed;right:var(--s-6);bottom:var(--s-6);z-index:40;width:340px;max-height:calc(100vh - 48px);overflow-y:auto;padding:var(--s-4) var(--s-5) var(--s-5);background:var(--surface);border:1px solid var(--ink-200);border-radius:var(--r-lg);box-shadow:var(--sh-3);animation:insp-in var(--t-med) var(--ease)}@keyframes insp-in{0%{opacity:0;transform:translateY(8px)}}.inspector header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s-2)}.inspector h2{font-family:var(--font-mono);font-size:var(--text-md);letter-spacing:0;margin-top:2px;word-break:break-all}.insp-role{margin:var(--s-2) 0 var(--s-3);color:var(--ink-600);font-size:var(--text-sm)}.insp-level{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 8px;border-radius:var(--r-xs);background:color-mix(in srgb,var(--lvl) 12%,var(--surface));color:var(--ink-800)}.insp-list{margin:var(--s-4) 0 0;display:grid;gap:var(--s-3)}.insp-list div{display:grid;grid-template-columns:72px 1fr;gap:var(--s-2)}.insp-list dt{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-500);padding-top:3px}.insp-list dd{margin:0;display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:6px;font-size:var(--text-sm)}.insp-list dd small{grid-column:2;color:var(--ink-500);font-size:12px}.insp-flows{margin-top:var(--s-4);padding-top:var(--s-3);border-top:1px solid var(--ink-100)}.insp-flows ul{list-style:none;margin:var(--s-2) 0 0;padding:0;display:grid;gap:6px}.insp-flows li{display:flex;align-items:center;gap:var(--s-2);font-size:var(--text-sm)}.insp-flows li button{font-family:var(--font-mono);font-size:12px;text-decoration:underline;text-underline-offset:2px}.insp-flows code{margin-left:auto;font-size:10px;color:var(--ink-500)}.insp-dir{color:var(--ink-400);font-family:var(--font-mono)}@media(max-width:1100px){.infra-row-top,.zone-split{grid-template-columns:1fr}.infra-note{margin-left:0}}@media(max-width:900px){.infra-row-ops{grid-template-columns:1fr}.infra-row-ops>.entry{justify-self:center}.host{width:100%;max-width:260px}.inspector{left:var(--s-3);right:var(--s-3);bottom:var(--s-3);width:auto;max-height:60vh}}@keyframes enter{0%{opacity:0;transform:scale(.85)}}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}@keyframes slide{0%{transform:translate(32px);opacity:0}}@keyframes draw{0%{opacity:0}}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-delay:0ms!important;transition-duration:1ms!important}}@media(max-width:1200px)and (min-width:901px){.map{zoom:.82}}@media(max-width:900px){.shell{grid-template-columns:1fr}.rail{position:fixed;left:0;top:0;bottom:0;width:min(var(--rail-w),86vw);z-index:60;transform:translate(-100%);transition:transform var(--t-med) var(--ease)}.rail.is-open{transform:none;box-shadow:var(--sh-3)}.rail-close{display:inline-grid}.rail-scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;background:#070c1773;opacity:0;pointer-events:none;transition:opacity var(--t-med)}.rail-scrim.is-open{opacity:1;pointer-events:auto}.menu-btn{display:inline-grid}.topbar.is-off-home{display:flex}.topbar.is-off-home>:not(.menu-btn){display:none}.topbar{flex-wrap:wrap;height:auto;padding:var(--s-3) var(--s-4);gap:var(--s-2) var(--s-3)}.search{order:3;width:100%}.search kbd{display:none}.edit-banner{padding:var(--s-2) var(--s-4)}.canvas{padding:var(--s-6) var(--s-4)}.canvas-head{flex-direction:column;align-items:flex-start;gap:var(--s-4);margin-bottom:var(--s-5)}.canvas-head h1{font-size:var(--text-xl)}.canvas-hint{display:none}.map{width:100%;height:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:var(--s-3)}.map-links{display:none}.slot,.slot-center,.slot-orbit,.slot-empty{position:relative;left:auto;top:auto;transform:none}.slot-center,.slot-empty{grid-column:1 / -1}.slot-empty .empty{width:100%}.node-hub{width:100%;height:auto;border-radius:var(--r-lg);flex-direction:row;justify-content:flex-start;gap:var(--s-3);padding:var(--s-4);text-align:left;box-shadow:var(--sh-2)}.node-hub:after{display:none}.hub-icon{margin:0;font-size:26px}.hub-meta{margin:0 0 0 auto}.node,.node-cat,.node-q,.node-add{width:100%;height:auto;min-height:148px;border-radius:var(--r-lg)}.node-cta{opacity:1;transform:none}.drawer{border-left:0;border-top:4px solid var(--c, var(--ink-900))}.drawer-head,.drawer-body,.drawer-foot{padding-left:var(--s-5);padding-right:var(--s-5)}.field-row{grid-template-columns:1fr}.toast{left:var(--s-4);right:var(--s-4);bottom:var(--s-4);max-width:none}}.move-hint{margin:0 0 var(--s-4)}.move-list,.move-list ul{list-style:none;margin:0;padding:0}.move-row{width:100%;display:flex;align-items:center;gap:var(--s-2);text-align:left;padding:var(--s-2) var(--s-3);padding-left:calc(var(--s-3) + var(--depth) * 18px);border-radius:var(--r-sm);border-left:3px solid transparent;color:var(--ink-800);transition:background var(--t-fast),border-color var(--t-fast)}.move-row:hover:not(:disabled){background:var(--ink-50);border-left-color:var(--c)}.move-row.is-on{background:color-mix(in srgb,var(--c) 10%,var(--surface));border-left-color:var(--c);font-weight:700}.move-row:disabled{opacity:.45;cursor:not-allowed}.move-chev{color:var(--ink-400);flex:none}.move-icon{flex:none}.move-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.move-note{font-family:var(--font-mono);font-size:10px;color:var(--ink-500)}.slot-orbit[draggable=true]{cursor:grab}.slot-orbit.is-dragging{opacity:.4}.slot-orbit.is-drop>.node,.slot-center.is-drop>.node-hub{outline:3px dashed var(--c, var(--accent));outline-offset:6px;transform:scale(1.05)}.boot{min-height:100vh;display:grid;place-items:center;color:var(--ink-500)}.login{min-height:100vh;display:grid;grid-template-columns:minmax(320px,5fr) 7fr;background:var(--paper)}.login-side{display:flex;flex-direction:column;justify-content:space-between;gap:var(--s-8);padding:var(--s-10) var(--s-10) var(--s-8);color:var(--ink-300);background:radial-gradient(circle at 1px 1px,rgba(255,255,255,.07) 1px,transparent 0) 0 0 / 24px 24px,var(--ink-900);border-right:4px solid var(--signal)}.login-brand{display:flex;align-items:center;gap:var(--s-3)}.login-brand strong{display:block;font-family:var(--font-display);font-stretch:var(--display-stretch);font-size:var(--text-lg);line-height:1.2;color:#fff}.login-brand small{display:block;font-size:11px;color:var(--ink-400)}.login-pitch{max-width:22ch;text-wrap:balance;margin:0;font-family:var(--font-display);font-stretch:var(--display-stretch);font-size:var(--text-xl);line-height:1.35;color:#fff;letter-spacing:-.01em}.login-pitch span{color:var(--signal)}.login-foot{margin:0;font-family:var(--font-mono);font-size:11px;color:var(--ink-500)}.login-main{display:grid;place-items:center;padding:var(--s-8) var(--s-6)}.login-form{width:min(360px,100%);animation:fade var(--t-med) both}.login-form h1{font-size:var(--text-2xl)}.login-sub{margin:var(--s-1) 0 var(--s-6);padding-bottom:var(--s-5);border-bottom:1px solid var(--ink-200);color:var(--ink-500);font-size:var(--text-sm)}.login-submit{width:100%;height:44px}@media(max-width:760px){.login{grid-template-columns:1fr;grid-template-rows:auto 1fr}.login-side{padding:var(--s-5) var(--s-4);border-right:0;border-bottom:4px solid var(--signal)}.login-pitch,.login-foot{display:none}.login-main{place-items:start center;padding-top:var(--s-10)}}.login-error{display:flex;align-items:center;gap:var(--s-2);margin:0 0 var(--s-4);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);background:var(--danger-bg);color:var(--danger);font-size:var(--text-sm);font-weight:600}.login-error svg{flex:none}.rail-admin{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-2)}.rail-admin .btn:only-child{grid-column:1 / -1}.rail-user{display:flex;align-items:center;gap:var(--s-3);padding-top:var(--s-1)}.rail-user-id{flex:1;min-width:0}.rail-user-id strong{display:block;font-size:var(--text-sm);color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rail-user-id small{display:block;font-size:11px;color:var(--ink-400)}.rail-logout{color:var(--ink-400)}.rail-logout:hover{background:var(--ink-800);color:#fff}.user-avatar{width:32px;height:32px;flex:none;display:grid;place-items:center;border-radius:var(--r-sm);background:var(--ink-700);color:var(--signal);font-family:var(--font-display);font-stretch:var(--display-stretch);font-weight:600}.user-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink-900)}.user-row{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-2);border-bottom:1px solid var(--ink-200)}.user-row .user-avatar{background:var(--ink-900)}.user-id{flex:1;min-width:0;display:grid}.user-id strong{font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-id em{font-style:normal;font-weight:500;color:var(--ink-500)}.user-id code{font-size:11px;color:var(--ink-500)}.role-badge{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:3px 7px;border-radius:var(--r-xs);background:var(--ink-100);color:var(--ink-600)}.role-badge.is-admin{background:var(--ink-900);color:var(--signal)}.user-actions{display:flex;gap:4px}.user-form-head{margin-bottom:var(--s-5);font-family:var(--font-display);font-stretch:var(--display-stretch);font-size:var(--text-lg)}.user-form-actions{display:flex;justify-content:flex-end;gap:var(--s-2)}.segmented.segmented-2{grid-template-columns:1fr 1fr;margin-bottom:0}.segmented button:disabled{opacity:.55}@media(max-width:520px){.user-row{flex-wrap:wrap}}.masthead{position:sticky;top:0;z-index:6}.masthead .topbar{position:relative;top:auto}.navbar{position:relative;background:var(--surface);border-bottom:1px solid var(--ink-200)}.navbar-tabs{list-style:none;margin:0;padding:0 var(--s-6);display:flex;align-items:stretch;gap:var(--s-1);overflow-x:auto;scrollbar-width:none}.navbar-tabs::-webkit-scrollbar{display:none}.navbar-tab{position:relative;display:inline-flex;align-items:center;gap:var(--s-2);height:44px;padding:0 var(--s-3);font-size:var(--text-sm);font-weight:600;color:var(--ink-500);white-space:nowrap;transition:color var(--t-fast),background var(--t-fast)}.navbar-tab:after{content:"";position:absolute;left:var(--s-2);right:var(--s-2);bottom:-1px;height:3px;border-radius:2px 2px 0 0;background:var(--c, var(--ink-900));transform:scaleX(0);transition:transform var(--t-fast) var(--ease)}.navbar-tab:hover{color:var(--ink-900);background:var(--ink-50)}.navbar-tab.is-active,.navbar-tab.is-open{color:var(--ink-900)}.navbar-tab.is-active:after{transform:none}.navbar-tab.is-open{background:var(--ink-50)}.navbar-tab:focus-visible{box-shadow:inset 0 0 0 2px var(--ink-900)}@media(max-width:900px){.navbar-tabs{padding:0 var(--s-2);gap:0}}@media(max-width:520px){.navbar-tab svg{display:none}.navbar-tab{padding:0 var(--s-2)}}.page{max-width:1100px;margin:0 auto;width:100%}.page>.canvas-head{margin-bottom:var(--s-6)}.page-head-actions{display:flex;align-items:flex-end;gap:var(--s-3);flex-wrap:wrap}.page-section{display:flex;align-items:center;gap:var(--s-2);margin:var(--s-6) 0 var(--s-3);font-size:var(--text-lg)}.page-section span{font-family:var(--font-mono);font-size:11px;color:var(--ink-500);font-weight:500}.page-note{margin-top:var(--s-4)}.ledger{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink-900)}.ledger-row{position:relative;display:flex;align-items:center;border-bottom:1px solid var(--ink-200)}.ledger-link{flex:1;min-width:0;display:grid;grid-template-columns:260px 1fr 200px 16px;align-items:baseline;gap:var(--s-5);padding:var(--s-3) var(--s-2);color:inherit;text-decoration:none;transition:background var(--t-fast)}.ledger-link:hover{background:var(--surface)}.ledger-link:focus-visible{box-shadow:inset 0 0 0 2px var(--ink-900)}.ledger-name{font-family:var(--font-display);font-stretch:var(--display-stretch);font-size:var(--text-md);font-weight:600;color:var(--ink-900)}.ledger-desc{font-size:var(--text-sm);color:var(--ink-600);min-width:0}.ledger-host{font-size:11px;color:var(--ink-500);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ledger-go{align-self:center;color:var(--ink-300);transition:color var(--t-fast),transform var(--t-fast)}.ledger-link:hover .ledger-go{color:var(--ink-900);transform:translate(1px,-1px)}.ledger-link:hover .ledger-name{text-decoration:underline;text-decoration-color:var(--c, var(--signal-strong));text-decoration-thickness:2px;text-underline-offset:3px}.ledger-actions{display:flex;gap:2px;padding:0 var(--s-2);opacity:0;transition:opacity var(--t-fast)}.ledger-row:hover .ledger-actions,.ledger-row:focus-within .ledger-actions{opacity:1}@media(hover:none){.ledger-actions{opacity:1}}.icon-btn.xs{width:28px;height:28px;color:var(--ink-500)}.icon-btn.xs:disabled{opacity:.3}.icon-btn.xs.danger:hover{background:var(--danger-bg);color:var(--danger)}@media(max-width:1100px){.ledger-link{grid-template-columns:200px 1fr 16px}.ledger-host{display:none}}@media(max-width:760px){.ledger-host{display:block}.ledger-link{grid-template-columns:1fr 16px;gap:2px var(--s-3)}.ledger-name{grid-column:1}.ledger-go{grid-column:2;grid-row:1}.ledger-desc,.ledger-host{grid-column:1 / -1}.ledger-desc:empty{display:none}}.icon-btn.sm:disabled{opacity:.4}.user-since{font-size:var(--text-xs);color:var(--ink-500);white-space:nowrap}@media(max-width:520px){.user-since{display:none}}.page-wide{max-width:1400px}.btn-ghost-danger{background:transparent;color:var(--danger);padding:0 var(--s-2)}.btn-ghost-danger:hover{background:var(--danger-bg)}.drawer-foot-spacer{flex:1}.access-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap;margin-bottom:var(--s-4)}.access-search{width:min(360px,100%)}.access-legend{list-style:none;margin:0;padding:0;display:flex;gap:var(--s-4);font-size:var(--text-xs);color:var(--ink-600)}.access-legend li{display:inline-flex;align-items:center;gap:6px}.access-mark{display:inline-block;min-width:52px;padding:2px 6px;border-radius:var(--r-xs);border:1px solid transparent;font-family:var(--font-mono);font-size:11px;font-weight:500;line-height:1.4;text-align:center}.access-mark.lv-none{color:var(--ink-300)}.access-mark.lv-read{color:var(--ink-600);border-color:var(--ink-300);border-style:dashed}.access-mark.lv-user{color:var(--ink-900);border-color:var(--ink-900)}.access-mark.lv-root{color:var(--signal);background:var(--ink-900);border-color:var(--ink-900);font-weight:600}.access-wrap{overflow:auto;max-height:calc(100vh - 250px);min-height:240px;border-top:1px solid var(--ink-900);background:var(--paper)}.access-matrix{border-collapse:separate;border-spacing:0;min-width:100%;font-size:var(--text-sm)}.access-matrix th,.access-matrix td{padding:0;border-bottom:1px solid var(--ink-200)}.access-matrix thead th{position:sticky;top:0;z-index:2;background:var(--paper);border-bottom:1px solid var(--ink-900);vertical-align:bottom}.access-matrix thead .access-corner{left:0;z-index:3}.access-corner,.access-host{position:sticky;left:0;z-index:1;background:var(--paper);text-align:left;border-right:1px solid var(--ink-200)}.access-matrix .access-corner{padding:var(--s-2) var(--s-3);font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-500)}.access-person{min-width:116px}.access-person button{width:100%;display:grid;gap:1px;padding:var(--s-3) var(--s-2) var(--s-2);text-align:center;transition:background var(--t-fast)}.access-person button:hover{background:var(--surface)}.access-person strong{font-family:var(--font-display);font-stretch:var(--display-stretch);font-size:var(--text-sm);font-weight:600;color:var(--ink-900)}.access-person small{font-family:var(--font-mono);font-size:10px;color:var(--ink-500);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.access-group th{position:sticky;left:0;padding:var(--s-4) var(--s-3) var(--s-1);text-align:left;border-bottom:2px solid var(--c)}.access-group span{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-700)}.access-group small{margin-left:var(--s-3);font-size:var(--text-xs);font-weight:400;color:var(--ink-500)}.access-matrix .access-host{padding:var(--s-2) var(--s-4) var(--s-2) var(--s-3);min-width:220px;font-weight:400}.access-host code{display:block;font-size:12px;font-weight:600;color:var(--ink-900)}.access-host small{display:block;font-size:11.5px;color:var(--ink-500);line-height:1.3}.is-orphan .access-host code{color:var(--danger);text-decoration:line-through;text-decoration-thickness:1px}.access-matrix tbody tr:not(.access-group):hover>*{background:var(--surface)}.access-cell{position:relative;width:100%;height:44px;display:grid;place-items:center;transition:background var(--t-fast)}.access-cell:hover{background:var(--ink-100)}.access-cell:focus-visible{box-shadow:inset 0 0 0 2px var(--ink-900)}.access-note{position:absolute;top:4px;right:4px;width:0;height:0;border-top:6px solid var(--ink-500);border-left:6px solid transparent}.access-role{margin:0 0 var(--s-5);color:var(--ink-600);font-size:var(--text-sm)}.access-levels{border:0;padding:0;margin:0 0 var(--s-5);border-top:1px solid var(--ink-900)}.access-levels legend{padding:0;margin-bottom:var(--s-2)}.access-level{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-2);border-bottom:1px solid var(--ink-200);cursor:pointer;transition:background var(--t-fast)}.access-level input{position:absolute;opacity:0;pointer-events:none}.access-level:hover{background:var(--ink-50)}.access-level:focus-within{box-shadow:inset 0 0 0 2px var(--ink-900)}.access-level.is-on{background:var(--ink-50);box-shadow:inset 3px 0 0 var(--ink-900)}.access-level strong{display:block;font-size:var(--text-sm)}.access-level small{display:block;font-size:var(--text-xs);color:var(--ink-500)}.access-summary{margin-top:var(--s-6);padding-top:var(--s-4);border-top:1px solid var(--ink-200)}.access-summary ul{list-style:none;margin:var(--s-2) 0 0;padding:0}.access-summary li{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:6px 0;border-bottom:1px solid var(--ink-100)}.access-summary code{font-size:12px}@media(max-width:900px){.access-wrap{max-height:none}.access-host{min-width:160px}.access-legend{flex-wrap:wrap;gap:var(--s-2) var(--s-4)}}.infra-edit-bar{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:calc(-1 * var(--s-2)) 0 var(--s-6);padding:var(--s-3) 0;border-top:1px solid var(--ink-900);border-bottom:1px solid var(--ink-200)}.edit-tools{display:inline-flex;gap:4px;margin-left:var(--s-2)}.edit-chip{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;border-radius:var(--r-xs);font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-700);border:1px dashed var(--ink-400);background:var(--surface);transition:border-color var(--t-fast),color var(--t-fast)}.edit-chip:hover{border-style:solid;border-color:var(--ink-900);color:var(--ink-900)}.tier-label-edit{display:inline-flex;align-items:center;gap:4px;text-align:left;border-radius:var(--r-xs);justify-self:start}.tier-label-edit:hover{color:var(--ink-900);text-decoration:underline;text-underline-offset:2px}.tier-head{display:flex;align-items:center;gap:var(--s-2);justify-self:start}.tier-head .edit-chip{height:20px;padding:0 6px;flex:none}.tier-col .edit-chip-text{display:none}.is-editing .host:not(.svc),.entry.is-editable{cursor:pointer;outline:1px dashed transparent;outline-offset:3px}.is-editing .host:not(.svc):hover,.entry.is-editable:hover{outline-color:var(--ink-500)}.entry.is-editable{text-align:left;font:inherit;color:#fff}.flow-intro{margin:0 0 var(--s-4)}.flow-editor ul{list-style:none;margin:0 0 var(--s-3);padding:0;border-top:1px solid var(--ink-900)}.flow-row{display:grid;grid-template-columns:1fr auto 1fr 200px 100px 28px;align-items:center;gap:var(--s-2);padding:var(--s-2) 0;border-bottom:1px solid var(--ink-200)}.flow-row .input{padding:6px 8px;font-size:var(--text-sm);min-width:0}.flow-arrow{font-family:var(--font-mono);color:var(--ink-500)}.drawer:not(.is-wide) .flow-row{grid-template-columns:1fr auto 1fr 28px}.drawer:not(.is-wide) .flow-kind{grid-column:1 / 2}.drawer:not(.is-wide) .flow-label{grid-column:3 / 4}.flow-add{height:34px}.order-tools{display:flex;gap:var(--s-2)}.check-list{border:0;padding:0;margin:0 0 var(--s-5)}.check-list legend{padding:0;margin-bottom:2px}.check{display:flex;align-items:center;gap:var(--s-2);padding:6px 0;border-bottom:1px solid var(--ink-100);font-size:var(--text-sm);cursor:pointer}.check input{accent-color:var(--ink-900);width:16px;height:16px}@media(max-width:760px){.flow-row,.drawer:not(.is-wide) .flow-row{grid-template-columns:1fr 28px}.flow-row .flow-arrow{display:none}.flow-row>*{grid-column:1 / 2!important}.flow-row>.icon-btn{grid-column:2 / 3!important;grid-row:1}}.infra-viewport{position:relative;overflow:hidden;height:calc(100vh - 230px);min-height:420px;border-top:1px solid var(--ink-900);border-bottom:1px solid var(--ink-200);background-color:var(--paper);background-image:radial-gradient(var(--ink-200) 1px,transparent 1px);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;outline:none}.infra-viewport:focus-visible{box-shadow:inset 0 0 0 2px var(--ink-900)}.infra-viewport.is-panning{cursor:grabbing}.infra-viewport.is-panning *{cursor:grabbing!important}.infra-stage{position:absolute;left:0;top:0;width:100%;padding:var(--s-6) var(--s-2) 0;transform-origin:0 0;will-change:transform}.infra-zoom{position:absolute;right:var(--s-3);bottom:var(--s-3);z-index:5;display:flex;align-items:center;gap:2px;padding:3px;background:var(--surface);border:1px solid var(--ink-200);border-radius:var(--r-sm)}.infra-zoom .icon-btn{font-family:var(--font-mono);font-size:16px;color:var(--ink-700)}.infra-zoom-level{min-width:52px;height:28px;font-family:var(--font-mono);font-size:11px;color:var(--ink-600);border-radius:var(--r-xs)}.infra-zoom-fit{height:28px;padding:0 var(--s-2);font-size:var(--text-xs);font-weight:600;color:var(--ink-800);border-left:1px solid var(--ink-200)}.infra-zoom-level:hover,.infra-zoom-fit:hover{background:var(--ink-100)}.infra-hint{position:absolute;left:var(--s-3);bottom:var(--s-3);margin:0;padding:4px 8px;background:var(--paper);border:1px solid var(--ink-200);border-radius:var(--r-xs);font-family:var(--font-mono);font-size:10px;color:var(--ink-500);pointer-events:none}@media(max-width:900px){.infra-viewport{height:70vh}.infra-hint{display:none}}
