:root{--gray-0: #ffffff;--gray-5: #f4f5f6;--gray-10: #e9ebee;--gray-20: #dcdee1;--gray-30: #cdd1d5;--gray-40: #b1b8be;--gray-50: #8a9199;--gray-60: #6d7882;--gray-70: #575e64;--gray-80: #464c53;--gray-90: #33363d;--gray-100: #1e2124;--primary: #256ef4;--primary-strong: #0b50d0;--primary-dark: #083891;--primary-light: #e8f1ff;--primary-lighter: #f3f8ff;--secondary: #0b50d0;--point: #f70b55;--success: #00751a;--success-light: #e8f6ea;--warning: #8a5600;--warning-light: #fdf3e4;--danger: #c02c0f;--danger-light: #fdeeeb;--info: #1f75cb;--info-light: #eaf3fc;--request: #c0400a;--request-light: #fdf0e9;--response: #00713c;--response-light: #e6f4ec;--sql: #6b3fa0;--sql-light: #f1ecf9;--db-result: #0b50d0;--db-result-light: #e8f1ff;--bg: #ffffff;--bg-subtle: #f4f5f6;--bg-muted: #e9ebee;--surface: #ffffff;--surface-alt: #fbfcfd;--text: #1e2124;--text-strong: #12141a;--text-muted: #6d7882;--text-subtle: #6d7882;--text-on-fill: #5c646c;--text-on-fill-soft: #616a72;--text-inverse: #ffffff;--text-link: #0b50d0;--border: #cdd1d5;--border-soft: #e9ebee;--border-strong: #8a9199;--border-heavy: #464c53;--focus-ring: #ff9d00;--focus-ring-outer: #083891;--font-sans: "Pretendard", "Pretendard Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", "Malgun Gothic", "Apple SD Gothic Neo", system-ui, sans-serif;--font-mono: "D2Coding", "SFMono-Regular", "Consolas", "JetBrains Mono", "Liberation Mono", monospace;--fs-xs: .75rem;--fs-sm: .8125rem;--fs-base: .9375rem;--fs-md: 1rem;--fs-lg: 1.125rem;--fs-xl: 1.375rem;--fs-2xl: 1.75rem;--fs-3xl: 2.125rem;--lh-tight: 1.25;--lh-snug: 1.45;--lh-normal: 1.6;--lh-loose: 1.75;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--fw-extrabold: 800;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-7: 2rem;--space-8: 2.5rem;--space-9: 3rem;--space-10: 4rem;--space-11: 5rem;--space-12: 6rem;--radius-xs: 2px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 24px;--radius-pill: 999px;--shadow-xs: 0 1px 2px rgba(30, 33, 36, .06);--shadow-sm: 0 1px 3px rgba(30, 33, 36, .08), 0 1px 2px rgba(30, 33, 36, .04);--shadow-md: 0 4px 12px rgba(30, 33, 36, .1), 0 2px 4px rgba(30, 33, 36, .05);--shadow-lg: 0 12px 28px rgba(30, 33, 36, .14), 0 4px 8px rgba(30, 33, 36, .06);--shadow-xl: 0 20px 48px rgba(30, 33, 36, .18);--reading-max: 820px;--wide-max: 1120px;--page-max: 1120px;--page-wide: 1280px;--page-pad: var(--space-6);--header-h: 64px;--z-base: 0;--z-raised: 10;--z-sticky: 100;--z-dropdown: 500;--z-overlay: 800;--z-toast: 1000;--z-skip: 1200;--dur-instant: 80ms;--dur-fast: .15s;--dur-base: .24s;--dur-slow: .4s;--dur-slower: .64s;--ease: cubic-bezier(.2, 0, .2, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-spring: cubic-bezier(.34, 1.4, .64, 1)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + var(--space-4))}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-normal);font-weight:var(--fw-regular);letter-spacing:-.01em;word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{margin:0;color:var(--text-strong);font-weight:var(--fw-bold);line-height:var(--lh-tight);letter-spacing:-.02em}h1{font-size:var(--fs-2xl)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}h4{font-size:var(--fs-md)}h5,h6{font-size:var(--fs-base)}p{margin:0;line-height:var(--lh-loose)}ul,ol{margin:0;padding:0;list-style:none}figure,blockquote,dl,dd{margin:0}a{color:var(--text-link);text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{color:var(--primary-dark)}img,svg,video,canvas{max-width:100%;vertical-align:middle}svg{display:block}button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit;margin:0}button{background:none;border:0;padding:0;cursor:pointer;text-align:inherit;color:inherit}button:disabled{cursor:not-allowed}code,kbd,pre,samp{font-family:var(--font-mono);font-size:.925em}pre{margin:0;overflow-x:auto}table{border-collapse:collapse;width:100%}hr{border:0;border-top:1px solid var(--border-soft);margin:var(--space-6) 0}:focus{outline:none}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--radius-sm);box-shadow:0 0 0 4px #08389159}::selection{background:var(--primary-light);color:var(--primary-dark)}.skip-link{position:absolute;top:0;left:50%;z-index:var(--z-skip);transform:translate(-50%,-120%);padding:var(--space-3) var(--space-6);background:var(--primary-dark);color:var(--text-inverse);font-size:var(--fs-sm);font-weight:var(--fw-bold);text-decoration:none;border-radius:0 0 var(--radius-md) var(--radius-md);box-shadow:var(--shadow-md)}.skip-link:focus,.skip-link:focus-visible{transform:translate(-50%);color:var(--text-inverse)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}*{scrollbar-width:thin;scrollbar-color:var(--gray-40) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:var(--gray-40);border:3px solid var(--bg);border-radius:var(--radius-pill)}*::-webkit-scrollbar-thumb:hover{background:var(--gray-50)}.app{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;background:var(--bg);isolation:isolate}#chapter-main{flex:1 0 auto;display:block;width:100%}#chapter-main:focus{outline:none}.chapter-page{display:flex;flex-direction:column;gap:var(--space-9);width:100%;max-width:var(--page-max);margin:0 auto;padding:var(--space-8) var(--page-pad) var(--space-11)}.chapter-page>section,.chapter-page>article,.chapter-page>div{min-width:0}.chapter-page>section>h2,.chapter-page>section>header>h2{margin-bottom:var(--space-4)}.container{width:100%;max-width:var(--page-max);margin:0 auto;padding-inline:var(--page-pad)}.container--wide{max-width:var(--page-wide)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.row{display:flex;align-items:center;gap:var(--space-3)}.row--between{justify-content:space-between}.row--wrap{flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5)}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-5)}.spacer{flex:1 1 auto}.site-footer{flex:0 0 auto;margin-top:auto;background:var(--gray-5);border-top:1px solid var(--border-soft);color:var(--text-muted)}.site-footer-inner{display:flex;flex-direction:column;gap:var(--space-3);width:100%;max-width:var(--page-max);margin:0 auto;padding:var(--space-8) var(--page-pad) var(--space-9)}.site-footer-inner p{margin:0;font-size:var(--fs-sm);line-height:var(--lh-loose);color:var(--text-muted)}.site-footer-title{font-size:var(--fs-md)!important;font-weight:var(--fw-bold);color:var(--text-strong)!important;letter-spacing:-.02em}.site-header{position:sticky;top:0;z-index:var(--z-sticky);flex:0 0 auto;background:#fffffff0;-webkit-backdrop-filter:saturate(180%) blur(8px);backdrop-filter:saturate(180%) blur(8px);border-bottom:1px solid var(--border-soft)}.site-header-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);flex-wrap:wrap;width:100%;max-width:var(--page-max);margin:0 auto;padding:var(--space-3) var(--page-pad);min-height:var(--header-h)}.site-header-brand{display:flex;flex-direction:column;gap:2px;min-width:0}.site-header-title{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong);letter-spacing:-.02em;line-height:1.3}.site-header-now{display:flex;align-items:center;gap:var(--space-2);min-width:0;font-size:var(--fs-xs);color:var(--text-muted);line-height:1.3}.site-header-chip{flex:0 0 auto;padding:1px var(--space-2);border-radius:var(--radius-pill);background:var(--primary-light);color:var(--primary-dark);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums}.site-header-chapter{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-header-tools{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.section{display:flex;flex-direction:column;gap:var(--space-4);min-width:0;scroll-margin-top:calc(var(--header-h) + var(--space-5))}.section-title{font-size:var(--fs-xl);font-weight:var(--fw-bold);color:var(--text-strong)}.section-desc{font-size:var(--fs-base);color:var(--text-muted);margin-top:calc(var(--space-3) * -1)}.card{padding:var(--space-6);background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.card-title{font-size:var(--fs-md);font-weight:var(--fw-bold);margin-bottom:var(--space-3)}.placeholder-note{padding:var(--space-6);border:1px dashed var(--border);border-radius:var(--radius-lg);background:var(--gray-5);color:var(--text-muted);font-size:var(--fs-base);text-align:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);min-height:44px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text-strong);font-size:var(--fs-base);font-weight:var(--fw-semibold);line-height:1.2;white-space:nowrap;text-decoration:none;cursor:pointer}.btn:hover{background:var(--gray-5);border-color:var(--border-strong);color:var(--text-strong)}.btn:active{background:var(--gray-10)}.btn[aria-expanded=true]{background:var(--primary-light);border-color:var(--primary);color:var(--primary-dark)}.btn:disabled,.btn[aria-disabled=true]{background:var(--gray-10);border-color:var(--border-soft);color:var(--text-subtle);cursor:not-allowed}.btn--sm{min-height:36px;padding:var(--space-2) var(--space-4);font-size:var(--fs-sm);border-radius:var(--radius-sm)}.btn--lg{min-height:52px;padding:var(--space-4) var(--space-7);font-size:var(--fs-md)}.btn--primary{background:var(--primary);border-color:var(--primary);color:var(--text-inverse)}.btn--primary:hover{background:var(--primary-strong);border-color:var(--primary-strong);color:var(--text-inverse)}.btn--ghost{background:transparent;border-color:transparent;color:var(--text-link)}.btn--ghost:hover{background:var(--primary-lighter);border-color:transparent}.tag{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;padding:2px var(--space-2);min-width:48px;height:24px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--gray-5);color:var(--text-muted);font-size:var(--fs-xs);font-weight:var(--fw-semibold);line-height:1;white-space:nowrap}.tag--done{background:var(--success-light);border-color:var(--success);color:var(--success)}.tag--now{background:var(--primary-light);border-color:var(--primary);color:var(--primary-dark)}.tag--warn{background:var(--warning-light);border-color:var(--warning);color:var(--warning)}.tag--error{background:var(--danger-light);border-color:var(--danger);color:var(--danger)}.dropdown{position:relative;display:inline-block}.dropdown-panel{position:absolute;top:calc(100% + var(--space-2));right:0;z-index:var(--z-dropdown);width:min(420px,calc(100vw - var(--space-8)));max-height:min(70vh,560px);display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.dropdown-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex:0 0 auto;padding:var(--space-4) var(--space-5);background:var(--gray-5);border-bottom:1px solid var(--border-soft);font-size:var(--fs-sm);color:var(--text-muted)}.dropdown-head>span:first-child{font-weight:var(--fw-bold);color:var(--text-strong)}.dropdown-list{flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;padding:var(--space-2)}.dropdown-list>li+li{margin-top:2px}.dropdown-item{display:flex;align-items:flex-start;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-3);border:1px solid transparent;border-radius:var(--radius-md);background:transparent;text-align:left;cursor:pointer}.dropdown-item:hover{background:var(--gray-5)}.dropdown-item.is-active{background:var(--primary-lighter);border-color:var(--primary-light)}.dropdown-item[aria-current=true]{background:var(--primary-light);border-color:var(--primary)}.dropdown-num{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-pill);background:var(--gray-10);color:var(--text-muted);font-size:var(--fs-xs);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums}.dropdown-item[aria-current=true] .dropdown-num{background:var(--primary);color:var(--text-inverse)}.dropdown-item:has(.tag--done) .dropdown-num{background:var(--success-light);color:var(--success)}.dropdown-text{flex:1 1 auto;display:flex;flex-direction:column;gap:2px;min-width:0;font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--text-strong);line-height:var(--lh-snug)}.dropdown-q{font-size:var(--fs-xs);font-weight:var(--fw-regular);color:var(--text-muted);line-height:var(--lh-snug);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.toast{position:fixed;left:50%;bottom:var(--space-8);z-index:var(--z-toast);transform:translate(-50%);display:inline-flex;align-items:center;gap:var(--space-3);max-width:min(560px,calc(100vw - var(--space-8)));padding:var(--space-4) var(--space-6);border:1px solid var(--border-heavy);border-radius:var(--radius-pill);background:var(--gray-100);color:var(--text-inverse);font-size:var(--fs-base);font-weight:var(--fw-medium);box-shadow:var(--shadow-lg)}.toast--ok{background:var(--gray-100);border-color:var(--gray-100)}.toast--error{background:var(--danger);border-color:var(--danger)}.toast--warn{background:var(--warning);border-color:var(--warning)}.scene-svg{display:block;width:100%;height:auto;max-height:70vh;background:var(--surface-alt);border:1px solid var(--border-soft);border-radius:var(--radius-lg);font-family:var(--font-sans);overflow:visible}.node-ico circle{fill:var(--gray-70);stroke:none}.node-ico path{fill:none;stroke:var(--gray-70);stroke-width:2.5;stroke-linecap:round}.machine-body{fill:var(--gray-10);stroke:var(--border);stroke-width:1.5}.machine-label{fill:var(--text-muted);font-size:12px;font-weight:var(--fw-bold);letter-spacing:.02em}.machine-bar{fill:var(--gray-5);stroke:var(--border-soft);stroke-width:1}.screen-field{fill:var(--gray-5);stroke:var(--border);stroke-width:1}.screen-btn{fill:var(--primary)}.screen-btn.is-pressed{fill:var(--primary-dark)}.screen-btn-text{fill:var(--text-inverse);font-size:13px;font-weight:var(--fw-bold);pointer-events:none}.screen-value{fill:var(--text-strong);font-size:17px;font-weight:var(--fw-bold)}.screen-score{fill:var(--primary);font-size:26px;font-weight:var(--fw-extrabold);letter-spacing:-.02em}.rack-body{fill:var(--gray-5);stroke:var(--border-heavy);stroke-width:1.5}.rack-title{fill:var(--text-muted);font-size:12px;font-weight:var(--fw-bold);letter-spacing:.12em}.bay{fill:var(--surface);stroke:var(--border);stroke-width:1.5}.bay.is-done{fill:var(--success-light);stroke:var(--success)}.bay.is-active{fill:var(--primary-light);stroke:var(--primary);stroke-width:2.5}.bay-name{fill:var(--text-strong);font-size:14px;font-weight:var(--fw-bold)}.bay-role{fill:var(--text-muted);font-size:12px}.led{fill:var(--gray-30);stroke:var(--surface);stroke-width:1}.led.is-on{fill:var(--success)}.led.is-busy{fill:var(--primary)}.wire{fill:none;stroke:var(--border-strong);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.wire.is-live-req{stroke:var(--request);stroke-width:3}.wire.is-live-res{stroke:var(--response);stroke-width:3}.wire-label{fill:var(--text-muted);font-size:11px;font-weight:var(--fw-semibold)}.packet-group{pointer-events:none}circle.packet-card{fill:var(--primary);stroke:var(--surface);stroke-width:3}rect.packet-card{fill:var(--surface);stroke:var(--border-strong);stroke-width:1.5;filter:drop-shadow(0 2px 6px rgba(30,33,36,.14))}.packet-kind{fill:var(--text-strong);font-size:12px;font-weight:var(--fw-bold)}.packet-line{fill:var(--text-muted);font-family:var(--font-mono);font-size:11.5px}circle.packet-card.is-req,circle.packet-card.is-request,circle.packet-card.is-http{fill:var(--request)}rect.packet-card.is-req,rect.packet-card.is-request,rect.packet-card.is-http{stroke:var(--request)}.packet-kind.is-req,.packet-kind.is-request,.packet-kind.is-http{fill:var(--request)}circle.packet-card.is-res,circle.packet-card.is-response,circle.packet-card.is-json,circle.packet-card.is-ok{fill:var(--response)}rect.packet-card.is-res,rect.packet-card.is-response,rect.packet-card.is-json,rect.packet-card.is-ok{stroke:var(--response)}.packet-kind.is-res,.packet-kind.is-response,.packet-kind.is-json,.packet-kind.is-ok{fill:var(--response)}circle.packet-card.is-sql,circle.packet-card.is-query,circle.packet-card.is-data,circle.packet-card.is-row{fill:var(--secondary)}rect.packet-card.is-sql,rect.packet-card.is-query,rect.packet-card.is-data,rect.packet-card.is-row{stroke:var(--secondary)}.packet-kind.is-sql,.packet-kind.is-query,.packet-kind.is-data,.packet-kind.is-row{fill:var(--secondary)}circle.packet-card.is-err,circle.packet-card.is-error,circle.packet-card.is-fail{fill:var(--danger)}rect.packet-card.is-err,rect.packet-card.is-error,rect.packet-card.is-fail{stroke:var(--danger)}.packet-kind.is-err,.packet-kind.is-error,.packet-kind.is-fail{fill:var(--danger)}circle.packet-card.is-warn,circle.packet-card.is-wait{fill:var(--warning)}rect.packet-card.is-warn,rect.packet-card.is-wait{stroke:var(--warning)}.packet-kind.is-warn,.packet-kind.is-wait{fill:var(--warning)}.hero-eyebrow{display:flex;align-items:baseline;gap:var(--space-2);font-size:var(--fs-sm);color:var(--text-muted)}.hero-num{font-weight:var(--fw-extrabold);color:var(--primary);letter-spacing:.02em}.hero-total{font-size:var(--fs-xs)}.hero-title{font-size:var(--fs-3xl);line-height:1.2}.hero-question{padding-left:var(--space-4);border-left:3px solid var(--primary);font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--primary-dark);line-height:var(--lh-snug)}.hero-intro{font-size:var(--fs-md);color:var(--text-muted);max-width:62ch}.hero-goals{background:var(--primary-lighter);border-color:var(--primary-light)}.check-list{display:flex;flex-direction:column;gap:var(--space-2)}.check-list li{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--fs-base);line-height:var(--lh-snug)}.check-mark{flex:0 0 auto;color:var(--success);font-weight:var(--fw-bold)}.summary-card{display:flex;flex-direction:column;gap:var(--space-5);background:var(--gray-5)}.summary-list{display:flex;flex-direction:column;gap:var(--space-3)}.summary-list li{display:flex;align-items:flex-start;gap:var(--space-3);line-height:var(--lh-snug)}.summary-num{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin-top:1px;border-radius:var(--radius-pill);background:var(--primary);color:var(--text-inverse);font-size:var(--fs-xs);font-weight:var(--fw-bold)}.summary-keywords{display:flex;flex-wrap:wrap;gap:var(--space-2)}.summary-keywords>li{min-width:0}.summary-keywords .term{padding:var(--space-1) var(--space-3);border:1px solid var(--border-soft);border-radius:var(--radius-pill);background:var(--surface-alt);font-size:var(--fs-xs)}.summary-keywords .term.is-open{flex:1 1 100%;border-radius:var(--radius-md)}.summary-next{padding-top:var(--space-4);border-top:1px solid var(--border-soft);font-size:var(--fs-sm);color:var(--text-muted)}.chapter-nav{flex-direction:row;align-items:stretch;justify-content:space-between;gap:var(--space-4);padding-top:var(--space-6);border-top:1px solid var(--border-soft)}.chapter-nav-btn{flex:1 1 0;flex-direction:column;align-items:flex-start;gap:var(--space-1);min-height:0;padding:var(--space-4) var(--space-5);white-space:normal;text-align:left}.chapter-nav-btn--next{align-items:flex-end;text-align:right}.chapter-nav-dir{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--primary)}.chapter-nav-title{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--text-strong);line-height:var(--lh-snug)}.chapter-nav-empty{flex:1 1 0;display:flex;align-items:center;justify-content:center;padding:var(--space-4);font-size:var(--fs-sm);color:var(--text-subtle)}.error-list{display:flex;flex-direction:column;gap:var(--space-3)}.error-item{padding:0;overflow:hidden}.error-item.is-open{border-color:var(--danger)}.error-head{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-4) var(--space-5);cursor:pointer}.error-head:hover{background:var(--gray-5)}.error-title{flex:1 1 auto;font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--text-strong);text-align:left;line-height:var(--lh-snug)}.error-toggle{flex:0 0 auto;color:var(--text-subtle);font-size:var(--fs-xs)}.error-body{display:grid;grid-template-columns:64px minmax(0,1fr);gap:var(--space-2) var(--space-4);padding:0 var(--space-5) var(--space-5);font-size:var(--fs-base);line-height:var(--lh-snug)}.error-body dt{font-weight:var(--fw-bold);color:var(--text-muted);font-size:var(--fs-sm)}.error-body dd{margin:0;color:var(--text)}.arch-card{display:flex;flex-direction:column;gap:var(--space-5);background:var(--surface-alt)}.arch-path{display:flex;align-items:stretch;flex-wrap:wrap;gap:var(--space-2)}.arch-step{display:flex;align-items:center;gap:var(--space-2);min-width:0}.arch-edge{display:flex;flex-direction:column;align-items:center;gap:2px;flex:0 0 auto;color:var(--text-subtle)}.arch-edge-line{display:block;width:34px;height:2px;background:var(--border-strong);clip-path:polygon(0 0,calc(100% - 6px) 0,calc(100% - 6px) -3px,100% 50%,calc(100% - 6px) 103%,calc(100% - 6px) 100%,0 100%)}.arch-edge-label{font-size:.6875rem;white-space:nowrap}.arch-edge.is-live{color:var(--primary)}.arch-edge.is-live .arch-edge-line{background:var(--primary);height:3px}.arch-edge.is-error{color:var(--danger)}.arch-edge.is-error .arch-edge-line{background:var(--danger);height:3px}.arch-node{display:flex;flex-direction:column;gap:2px;flex:0 0 auto;padding:var(--space-3) var(--space-4);min-width:104px;border:1.5px solid var(--border);border-radius:var(--radius-md);background:var(--surface);cursor:pointer}.arch-node:hover{border-color:var(--border-strong)}.arch-node-role{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.arch-node-name{font-size:.6875rem;font-weight:var(--fw-semibold);color:var(--text-subtle);font-family:var(--font-mono)}.arch-node.is-selected{border-color:var(--gray-100);background:var(--gray-5)}.arch-node.is-live{border-color:var(--primary);background:var(--primary-light)}.arch-node.is-live .arch-node-role{color:var(--primary-dark)}.arch-node.is-error{border-color:var(--danger);background:var(--danger-light)}.arch-node.is-error .arch-node-role{color:var(--danger)}.arch-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);font-size:var(--fs-xs);color:var(--text-muted)}.arch-legend-item{display:inline-flex;align-items:center;gap:var(--space-2)}.dot{display:inline-block;width:10px;height:10px;border-radius:var(--radius-pill);background:var(--border)}.dot--live{background:var(--primary)}.dot--selected{background:var(--gray-100)}.dot--error{background:var(--danger)}.arch-detail{padding:var(--space-4);border-radius:var(--radius-md);background:var(--gray-5);font-size:var(--fs-base);line-height:var(--lh-snug);min-height:56px}.arch-detail-empty{color:var(--text-subtle)}.arch-note{font-size:var(--fs-xs);color:var(--text-subtle);line-height:var(--lh-snug)}.code-card{padding:0;overflow:hidden}.code-tabs{display:flex;gap:2px;padding:var(--space-2) var(--space-2) 0;background:var(--gray-5);border-bottom:1px solid var(--border-soft);overflow-x:auto}.code-tab{flex:0 0 auto;padding:var(--space-2) var(--space-4);border:1px solid transparent;border-bottom:0;border-radius:var(--radius-sm) var(--radius-sm) 0 0;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-muted);font-family:var(--font-mono);cursor:pointer;white-space:nowrap}.code-tab:hover{color:var(--text-strong)}.code-tab.is-active{background:var(--surface);border-color:var(--border-soft);color:var(--primary-dark)}.code-panel{padding:var(--space-5)}.code-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-3)}.code-path{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted)}.code-desc{font-size:var(--fs-sm);color:var(--text-muted);margin-bottom:var(--space-4)}.code-lines{display:flex;flex-direction:column;border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--gray-5);padding:var(--space-3) 0;overflow-x:auto}.code-line{display:flex;align-items:stretch;min-width:0}.code-lineno{flex:0 0 auto;width:40px;padding-right:var(--space-3);text-align:right;font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1.7;color:var(--text-subtle);-webkit-user-select:none;user-select:none}.code-text{flex:1 1 auto;display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4) 0 var(--space-2);font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.7;color:var(--text);white-space:pre;min-width:0}.code-text code{font-family:inherit;font-size:inherit}.code-text--link{cursor:pointer;text-align:left}.code-text--link:hover{background:var(--primary-light);color:var(--primary-dark)}.code-locate{flex:0 0 auto;margin-left:auto;padding:0 var(--space-2);border-radius:var(--radius-sm);background:var(--gray-20);color:var(--text-muted);font-family:var(--font-sans);font-size:.625rem;font-weight:var(--fw-bold);opacity:0}.code-text--link:hover .code-locate,.code-text--link:focus-visible .code-locate{opacity:1}.result-card{display:flex;flex-direction:column;gap:var(--space-4);border-left:4px solid var(--border)}.result-card.is-success{border-left-color:var(--success);background:var(--surface-alt)}.result-card.is-error{border-left-color:var(--danger);background:var(--danger-light)}.result-head{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.result-title{font-size:var(--fs-md);color:var(--text-strong)}.result-text{font-size:var(--fs-base);color:var(--text-muted)}.result-rows{display:flex;flex-direction:column;gap:var(--space-2)}.result-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-3) var(--space-4);border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface)}.result-label{flex:0 0 auto;min-width:88px;font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-muted)}.result-value{flex:1 1 200px;min-width:0;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-strong);word-break:break-all}.result-raw{border-top:1px solid var(--border-soft);padding-top:var(--space-4)}.result-raw-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-2);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-muted)}.result-raw pre{padding:var(--space-4);border-radius:var(--radius-md);background:var(--gray-100);color:#e9ebee;font-size:var(--fs-xs);line-height:1.7}.activity-card{display:flex;flex-direction:column;gap:var(--space-5);padding:var(--space-5)}.scene-wrap{min-width:0}.scene-wrap:focus{outline:none}.step-info{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-4) var(--space-5);border-left:3px solid var(--primary);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--primary-lighter);min-height:108px}.step-count{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--primary);font-variant-numeric:tabular-nums}.step-id{font-family:var(--font-mono);color:var(--text-subtle);font-weight:var(--fw-regular)}.step-text{font-size:var(--fs-base);color:var(--text-muted);line-height:var(--lh-snug)}.step-controls{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.step-dots{display:flex;align-items:center;gap:6px;flex:1 1 auto;justify-content:center;flex-wrap:wrap}.step-dot{width:8px;height:8px;border-radius:var(--radius-pill);background:var(--gray-20)}.step-dot.is-done{background:var(--success)}.step-dot.is-active{width:22px;background:var(--primary)}.step-foot{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;padding-top:var(--space-4);border-top:1px solid var(--border-soft)}.chapter-page{max-width:var(--wide-max)}.chapter-page>.section{width:100%;max-width:var(--reading-max);margin-inline:auto}.chapter-page>.section:has(.arch-panel),.chapter-page>.section:has(.code-card),.chapter-page>.section:has(.activity-panel),.chapter-page>.section:has(.result-card){max-width:var(--wide-max)}.chapter-page>.section:has(.activity-panel)>.section-title,.chapter-page>.section:has(.activity-panel)>.section-desc,.chapter-page>.section:has(.code-card)>.section-title,.chapter-page>.section:has(.code-card)>.section-desc,.chapter-page>.section:has(.arch-panel)>.section-title,.chapter-page>.section:has(.arch-panel)>.section-desc{max-width:var(--reading-max);width:100%}@supports not selector(:has(*)){.chapter-page>.section{max-width:var(--wide-max)}}.panel{padding:var(--space-6);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);min-width:0}.hero-goals{padding-top:var(--space-5);border-top:1px solid var(--border-soft)}.hero-goals-title{margin-bottom:var(--space-3);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-muted);letter-spacing:.02em}.summary-block{display:flex;flex-direction:column;gap:var(--space-5);padding:var(--space-5) 0 0;border-top:2px solid var(--text-strong)}.summary-position,.summary-next{display:flex;flex-direction:column;gap:var(--space-1);padding-top:var(--space-4);border-top:1px solid var(--border-soft);font-size:var(--fs-sm);color:var(--text-muted);line-height:var(--lh-snug)}.summary-position-label,.summary-next-label{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.concept-lead{font-size:var(--fs-md);color:var(--text);max-width:62ch}.role-list{display:flex;flex-direction:column;margin:0;border-top:1px solid var(--border-soft)}.role-item{display:grid;grid-template-columns:minmax(180px,240px) minmax(0,1fr);gap:var(--space-2) var(--space-5);padding:var(--space-4) var(--space-2);border-bottom:1px solid var(--border-soft)}.role-item.is-selected{background:var(--primary-lighter);box-shadow:inset 3px 0 0 var(--primary)}.role-term{display:flex;flex-direction:column;gap:2px;min-width:0}.role-role{font-size:var(--fs-base);font-weight:var(--fw-bold);color:var(--text-strong);line-height:var(--lh-snug)}.role-tech{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-muted);text-align:left}.role-tech--link{color:var(--text-link);text-decoration:underline;text-underline-offset:.2em;cursor:pointer;width:fit-content}.role-tech--link:hover{color:var(--primary-dark)}.role-item.is-selected .role-tech--link{color:var(--primary-dark);font-weight:var(--fw-bold)}.role-desc{margin:0;font-size:var(--fs-base);color:var(--text);line-height:var(--lh-loose)}.role-hint{grid-column:2;margin:0;display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-left:3px solid var(--border);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--gray-5);font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.role-hint-label{flex:0 0 auto;font-weight:var(--fw-bold);color:var(--text-strong)}.concept-note{padding:var(--space-4) var(--space-5);border-left:3px solid var(--border-strong);background:var(--gray-5);font-size:var(--fs-sm);color:var(--text-muted);line-height:var(--lh-loose)}.activity-panel{display:flex;flex-direction:column;gap:var(--space-5);padding:var(--space-5)}.mock-note{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-xs);color:var(--text-muted)}.node-detail{min-height:52px;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--gray-5);font-size:var(--fs-sm);line-height:var(--lh-snug)}.node-detail p{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.node-detail-role,.arch-detail-role{padding:1px var(--space-2);border-radius:var(--radius-sm);background:var(--gray-20);color:var(--text-muted);font-size:var(--fs-xs);font-weight:var(--fw-semibold)}.node-detail-empty{color:var(--text-subtle)}.step-preview{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2);padding-top:var(--space-3);border-top:1px dashed var(--border)}.step-preview-label{flex:0 0 auto;font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--primary-dark)}.step-preview-value{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-strong);word-break:break-all}.step-foot-note{font-size:var(--fs-xs);color:var(--text-subtle)}.btn.is-playing{background:var(--primary-light);border-color:var(--primary);color:var(--primary-dark)}.code-copy.is-copied{border-color:var(--success);color:var(--success);background:var(--success-light)}.code-copy.is-copy_error{border-color:var(--danger);color:var(--danger);background:var(--danger-light)}.code-actions{display:inline-flex;gap:var(--space-2);flex-wrap:wrap}.code-lang{margin-left:var(--space-2);padding:1px var(--space-2);border-radius:var(--radius-sm);background:var(--gray-10);color:var(--text-muted);font-family:var(--font-sans);font-size:.625rem;font-weight:var(--fw-bold);text-transform:uppercase}.scene-hit{cursor:pointer}.scene-hit-area{fill:transparent;stroke:transparent;stroke-width:2}.scene-hit:hover .scene-hit-area{stroke:var(--border-strong)}.scene-hit.is-selected .scene-hit-area{stroke:var(--text-strong);stroke-width:2.5;stroke-dasharray:5 3}.scene-hit:focus{outline:none}.scene-hit:focus-visible .scene-hit-area{stroke:var(--focus-ring);stroke-width:3.5;stroke-dasharray:none}.bay-state{fill:var(--primary-dark);font-size:11px;font-weight:var(--fw-bold)}circle.packet-card.is-request{fill:var(--request)}rect.packet-card.is-request{stroke:var(--request);stroke-width:2}.packet-kind.is-request{fill:var(--request)}circle.packet-card.is-sql{fill:var(--sql)}rect.packet-card.is-sql{stroke:var(--sql);stroke-width:2}.packet-kind.is-sql{fill:var(--sql)}circle.packet-card.is-dbResult{fill:var(--db-result)}rect.packet-card.is-dbResult{stroke:var(--db-result);stroke-width:2}.packet-kind.is-dbResult{fill:var(--db-result)}circle.packet-card.is-response{fill:var(--response)}rect.packet-card.is-response{stroke:var(--response);stroke-width:2;stroke-dasharray:6 3}.packet-kind.is-response{fill:var(--response)}.wire.is-live-req{stroke:var(--request)}.wire.is-live-res{stroke:var(--response)}.arch-axis-label{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-muted);letter-spacing:.06em}.arch-aside{display:flex;flex-wrap:wrap;gap:var(--space-4) var(--space-8);padding-top:var(--space-4);border-top:1px dashed var(--border)}.arch-axis{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.arch-axis-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.arch-axis-node{padding:2px var(--space-3);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);background:var(--gray-5);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted)}.arch-axis-link{color:var(--text-subtle);font-size:var(--fs-xs)}.arch-axis-node{display:inline-flex;align-items:baseline;gap:var(--space-2)}.arch-axis-role{font-weight:var(--fw-bold);color:var(--text-strong)}.arch-axis-name{font-family:var(--font-mono);font-size:.6875rem;color:var(--text-on-fill)}.arch-axis-node.is-focus .arch-axis-role{color:var(--primary-dark)}.arch-axis-tech{margin-left:var(--space-2);font-family:var(--font-mono);font-weight:var(--fw-regular);letter-spacing:0;color:var(--text-on-fill)}.arch-axis-desc{font-size:var(--fs-xs);color:var(--text-subtle)}.hero-title{font-size:clamp(1.5rem,1.1rem + 2vw,2.125rem)}.section-title{font-size:clamp(1.125rem,.98rem + .7vw,1.375rem)}.wire-label{font-size:12.5px;font-weight:var(--fw-semibold);letter-spacing:-.01em}.wire-label--req{fill:var(--request)}.wire-label--res{fill:var(--response)}.wire-label.is-live{font-size:13.5px;font-weight:var(--fw-extrabold)}.wire--req{stroke-dasharray:none}.wire--res{stroke-dasharray:6 4}.wire--req.is-live-req,.wire--res.is-live-res{stroke-width:3.5}.band-label{fill:var(--text-subtle);font-size:11.5px;font-weight:var(--fw-extrabold);letter-spacing:.18em}.bay{fill:var(--gray-5);stroke:var(--border);stroke-width:1.5}.bay.is-done{fill:var(--surface);stroke:var(--success);stroke-width:1.5}.bay.is-active{fill:var(--primary-light);stroke:var(--primary);stroke-width:3}.bay.is-selected{stroke:var(--text-strong);stroke-width:2.5}.bay-state{font-size:10.5px;font-weight:var(--fw-bold);letter-spacing:.02em}.bay-state.is-active{fill:var(--primary-dark)}.bay-state.is-done{fill:var(--success);font-weight:var(--fw-semibold)}.led{fill:var(--gray-30);stroke:var(--gray-5);stroke-width:1}.led.is-on{fill:var(--success);stroke:var(--success-light);stroke-width:2.5}.led.is-busy{fill:var(--primary);stroke:var(--primary-light);stroke-width:4}.machine-screen{fill:var(--surface);stroke:var(--border-heavy);stroke-width:1.5}.machine-screen.is-loading{stroke:var(--primary);stroke-width:2}.machine-screen.is-success{stroke:var(--response);stroke-width:2.5}.screen-score{fill:var(--response);font-size:27px}.screen-value{fill:var(--text-strong);font-size:17px}.machine-label{fill:var(--gray-70);font-size:12.5px;font-weight:var(--fw-bold);letter-spacing:.04em}.rack-title{fill:var(--gray-70);font-size:12.5px;font-weight:var(--fw-extrabold);letter-spacing:.14em}.bay-name{fill:var(--text-on-fill);font-size:14.5px;font-weight:var(--fw-bold)}.bay.is-done~.bay-name{fill:var(--text-strong)}.bay.is-active~.bay-name{fill:var(--primary-dark)}.bay-role{fill:var(--text-on-fill-soft);font-size:12px;font-weight:var(--fw-regular)}.bay.is-done~.bay-role,.bay.is-active~.bay-role{fill:var(--text-muted)}.screen-title{fill:var(--text-strong);font-size:13px;font-weight:var(--fw-bold)}.screen-hint{fill:var(--text-muted);font-size:12px}.scene-svg{background:var(--surface);border-color:var(--border-soft)}.node-detail{padding:var(--space-3) 0 0;border-top:1px solid var(--border-soft);border-radius:0;background:transparent;min-height:44px}.node-detail-role,.arch-detail-role{padding:0;background:none;color:var(--text-subtle);font-family:var(--font-mono);font-weight:var(--fw-regular)}.node-detail-role:before,.arch-detail-role:before{content:"· "}.node-detail-role:after,.arch-detail-role:after{content:" ·"}.step-info{padding:var(--space-4) 0 0;border-left:0;border-top:1px solid var(--border-soft);border-radius:0;background:transparent;min-height:96px}.step-count{display:flex;align-items:center;gap:var(--space-2);color:var(--text-muted);font-weight:var(--fw-semibold)}.step-count:before{content:"";width:6px;height:6px;border-radius:var(--radius-pill);background:var(--primary)}.step-title{font-size:var(--fs-lg);color:var(--text-strong)}.step-text{color:var(--text)}.step-preview{border-top:0;padding-top:var(--space-2);margin-top:var(--space-1)}.step-preview-label{padding:1px var(--space-2);border-radius:var(--radius-sm);background:var(--gray-5);color:var(--text-muted)}.mock-note{color:var(--text-subtle)}.activity-panel{gap:var(--space-4)}.builder{display:flex;flex-direction:column;gap:var(--space-5)}.builder-title{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-muted);letter-spacing:.02em}.builder-row{display:grid;grid-template-columns:minmax(150px,190px) minmax(0,1fr);gap:var(--space-2) var(--space-5);align-items:start}.builder-row.is-off{opacity:.55}.builder-label{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-strong);padding-top:var(--space-2)}.choice-group{display:flex;flex-wrap:wrap;gap:var(--space-2);min-width:0}.choice{display:flex;flex-direction:column;gap:1px;align-items:flex-start;min-height:44px;padding:var(--space-2) var(--space-4);border:1.5px solid var(--border);border-radius:var(--radius-md);background:var(--surface);cursor:pointer}.choice:hover:not(:disabled){border-color:var(--border-strong);background:var(--gray-5)}.choice.is-picked{border-color:var(--primary);background:var(--primary-light)}.choice:disabled{cursor:default}.choice-group .choice:disabled:not(.is-picked){opacity:.5}.choice-main{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.choice.is-picked .choice-main{color:var(--primary-dark)}.choice-sub{font-size:.6875rem;color:var(--text-muted)}.choice.is-picked .choice-sub{color:var(--text-on-fill)}.builder-hint{grid-column:2;font-size:var(--fs-xs);color:var(--text-muted);line-height:var(--lh-snug)}.wire-view{display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--border-soft)}.wire-block{display:block;padding:var(--space-4);border-radius:var(--radius-md);border-left:3px solid var(--border-strong);background:var(--gray-5);font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.7;overflow-x:auto}.wire-block--req{border-left-color:var(--request)}.wire-block--res{border-left-color:var(--response)}.wire-block code{display:flex;flex-direction:column;font:inherit}.wire-line{white-space:pre;color:var(--text-strong)}.wire-line--dim{color:var(--text-on-fill)}.wire-line--body{color:var(--text)}.part{font:inherit;color:var(--text-strong);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:.25em;cursor:pointer}.part--method{color:var(--request);font-weight:var(--fw-bold)}.part--path{color:var(--primary-dark)}.part:hover{background:var(--primary-light)}.send-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3)}.send-note{font-size:var(--fs-xs);color:var(--text-muted)}.inspector-empty{padding:var(--space-5) var(--space-4);border:1px dashed var(--border);border-radius:var(--radius-md);color:var(--text-muted);font-size:var(--fs-sm);text-align:center}.status-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.status-code{padding:2px var(--space-3);border:1.5px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);font-family:var(--font-mono);font-size:var(--fs-lg);font-weight:var(--fw-extrabold);color:var(--text-strong);cursor:pointer}.status-line.is-ok .status-code{border-color:var(--response);color:var(--response);background:var(--response-light)}.status-line.is-error .status-code{border-color:var(--danger);color:var(--danger);background:var(--danger-light)}.status-text{font-family:var(--font-mono);font-size:var(--fs-base);font-weight:var(--fw-bold);color:var(--text-strong)}.status-meaning{flex:1 1 220px;font-size:var(--fs-sm);color:var(--text-muted);line-height:var(--lh-snug)}.inspector-summary{font-size:var(--fs-base);color:var(--text);line-height:var(--lh-loose)}.inspector-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.part-detail{padding:var(--space-3) 0 0;border-top:1px solid var(--border-soft);font-size:var(--fs-sm);line-height:var(--lh-snug);min-height:44px}.part-detail p{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.part-detail-role{color:var(--text-subtle);font-weight:var(--fw-semibold)}.part-detail-role:before{content:"· "}.part-detail-role:after{content:" ·"}.part-detail-empty{color:var(--text-subtle)}.arch-node.is-muted{border-style:dashed;border-color:var(--border);background:var(--gray-5)}.arch-node.is-muted .arch-node-name{color:var(--text-on-fill-soft)}.arch-node.is-muted .arch-node-role{color:var(--text-on-fill)}.arch-node-scope{margin-top:2px;font-size:.625rem;font-weight:var(--fw-semibold);color:var(--text-on-fill-soft);letter-spacing:-.01em}.arch-node.is-muted:hover{border-color:var(--border-strong);background:var(--gray-10)}.arch-node.is-muted.is-selected{border-style:solid;border-color:var(--gray-100);background:var(--gray-10)}.arch-edge.is-muted{color:var(--text-on-fill)}.arch-edge.is-muted .arch-edge-line{background:repeating-linear-gradient(to right,var(--border) 0 4px,transparent 4px 8px);clip-path:none}.dot--muted{background:var(--gray-5);border:1px dashed var(--border-strong)}.arch-detail-scope{margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px dashed var(--border);font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.folder-map{display:grid;grid-template-columns:minmax(240px,320px) minmax(0,1fr);gap:var(--space-5) var(--space-6);align-items:start}.tree{padding:var(--space-4);border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--gray-5);font-family:var(--font-mono);min-width:0}.tree-root{margin-bottom:var(--space-2);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.tree-list{display:flex;flex-direction:column;gap:1px}.tree-row{display:flex;align-items:center;gap:var(--space-2);width:100%;min-height:36px;padding:var(--space-1) var(--space-2);border:1px solid transparent;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--fs-sm);text-align:left;cursor:pointer}.tree-row:hover{background:var(--gray-10)}.tree-row.is-active{background:var(--primary-light);border-color:var(--primary)}.tree-row.is-solved{background:var(--success-light)}.tree-row.is-solved.is-active{background:var(--primary-light);border-color:var(--primary)}.tree-branch{flex:0 0 auto;color:var(--text-on-fill-soft)}.tree-name{flex:1 1 auto;min-width:0;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis}.tree-name.is-dir{font-weight:var(--fw-bold)}.tree-name.is-file{font-weight:var(--fw-regular);color:var(--text-on-fill)}.tree-row.is-info .tree-name{color:var(--text-on-fill-soft)}.tree-mark{flex:0 0 auto;color:var(--success);font-weight:var(--fw-bold)}.tree-note{flex:0 0 auto;font-family:var(--font-sans);font-size:.625rem;color:var(--text-on-fill-soft)}.tree-children{display:flex;flex-direction:column;gap:1px;padding:var(--space-1) 0 var(--space-2) var(--space-4)}.tree-child{font-size:var(--fs-xs);color:var(--text-on-fill);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-detail{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.map-detail-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.map-detail-name{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--text-strong)}.map-detail-role{padding:1px var(--space-2);border-radius:var(--radius-sm);background:var(--gray-5);color:var(--text-on-fill);font-size:var(--fs-xs);font-weight:var(--fw-semibold)}.map-detail-why{font-size:var(--fs-base);color:var(--text);line-height:var(--lh-loose)}.map-detail-note{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-left:3px solid var(--border-strong);background:var(--gray-5);font-size:var(--fs-sm);color:var(--text-on-fill);line-height:var(--lh-snug)}.map-choices{display:flex;flex-direction:column;gap:var(--space-3)}.map-choices-q{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.map-answer{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);border-left:3px solid var(--primary);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--primary-lighter);font-size:var(--fs-base)}.map-answer-axis{font-size:var(--fs-xs);color:var(--text-on-fill)}.map-foot{padding-top:var(--space-3);border-top:1px solid var(--border-soft);font-size:var(--fs-xs);color:var(--text-muted);line-height:var(--lh-snug)}.arch-axis-node.is-selected{border-style:solid;border-color:var(--gray-100);background:var(--gray-10);color:var(--text-strong)}.tree-child-branch{color:var(--text-on-fill-soft)}.tree-file{padding:1px var(--space-2);border-radius:var(--radius-xs);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-link);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:.25em;cursor:pointer}.tree-file:hover{background:var(--primary-light);color:var(--primary-dark)}.tree-file.is-open{background:var(--primary-light);color:var(--primary-dark);font-weight:var(--fw-bold);text-decoration-style:solid}.tree-file-note{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill-soft)}.map-detail-change{font-size:var(--fs-sm);color:var(--text-muted);line-height:var(--lh-snug)}.map-detail-misread{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--fs-sm);color:var(--text-muted);line-height:var(--lh-snug)}.file-preview{display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--border-soft);min-width:0}.file-tabs{display:flex;gap:var(--space-1);flex-wrap:wrap}.file-tab{padding:var(--space-1) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted);cursor:pointer}.file-tab.is-active{border-color:var(--primary);background:var(--primary-light);color:var(--primary-dark);font-weight:var(--fw-bold)}.file-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.file-path{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted);min-width:0;overflow-wrap:anywhere}.file-purpose{font-size:var(--fs-base);color:var(--text);line-height:var(--lh-snug)}.file-here{display:flex;flex-direction:column;gap:2px;padding:var(--space-3) var(--space-4);border-left:3px solid var(--border-strong);background:var(--gray-5);font-size:var(--fs-sm);color:var(--text-on-fill);line-height:var(--lh-snug)}.file-here-label{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.file-code{padding:var(--space-4);border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--gray-5);font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.7;color:var(--text-strong);overflow-x:auto;white-space:pre}.git-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4);align-items:start}.git-area{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface-alt);min-width:0}.git-area.is-working{border-left:3px solid var(--border-strong)}.git-area.is-staging{border-left:3px solid var(--primary)}.git-area.is-history{border-left:3px solid var(--success)}.git-area-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2)}.git-area-name{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.git-area-ko{font-size:var(--fs-xs);color:var(--text-muted)}.git-area-desc{font-size:var(--fs-xs);color:var(--text-muted);line-height:var(--lh-snug)}.git-items{display:flex;flex-direction:column;gap:var(--space-2)}.git-item{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:0}.git-item .btn{align-self:flex-start;margin-top:var(--space-1)}.git-item.is-staged{border-color:var(--primary);background:var(--primary-lighter)}.git-item.is-commit{border-color:var(--success);background:var(--success-light)}.git-item-path{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-strong);overflow-wrap:anywhere}.git-item-change{font-size:.6875rem;color:var(--text-muted);line-height:var(--lh-snug);overflow-wrap:anywhere}.git-item-hash{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-extrabold);color:var(--success)}.git-empty{padding:var(--space-3);border:1px dashed var(--border);border-radius:var(--radius-sm);font-size:var(--fs-xs);color:var(--text-on-fill-soft);text-align:center}.git-ignored{display:flex;flex-direction:column;gap:2px;padding:var(--space-2) var(--space-3);border-top:1px dashed var(--border);opacity:.75}.git-ignored .git-item-path{text-decoration:line-through;color:var(--text-on-fill-soft)}.git-area-foot{padding-top:var(--space-2);border-top:1px solid var(--border-soft);font-size:var(--fs-xs);color:var(--text-muted);line-height:var(--lh-snug)}.cmd-result{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--border-soft);min-width:0}.cmd-output-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2)}.cmd-output-head .code-copy{flex:0 0 auto;min-height:0;padding:0;border:0;border-radius:0;background:transparent;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-on-fill);text-decoration:underline;text-underline-offset:3px}.cmd-output-head .code-copy:hover:not(:disabled){background:transparent;color:var(--text-strong)}.cmd-output-head .code-copy:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.cmd-output{max-height:16rem;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--gray-100);color:#e9ebee;font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1.7;overflow:auto;white-space:pre}.cmd-output:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.cmd-echo{font-weight:var(--fw-bold);color:#fff}.cmd-echo-prompt,.cmd-caret{color:#9fd0a8}.cmd-note{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.cmd-detail{flex:1 1 16rem;min-width:0;font-size:var(--fs-sm);color:var(--text-muted);line-height:var(--lh-loose)}.cmd-empty{font-size:var(--fs-sm);color:var(--text-muted)}.arch-axis-node.is-focus{border-style:solid;border-color:var(--primary);background:var(--primary-light);color:var(--primary-dark);font-weight:var(--fw-bold)}.arch-axis-badge{margin-left:var(--space-2);padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--primary);color:var(--text-inverse);font-size:.625rem;font-weight:var(--fw-bold)}.arch-axis-label,.arch-legend,.arch-axis-desc,.arch-note,.arch-detail-empty,.arch-axis-node,.git-area-ko,.git-area-desc,.git-area-foot{color:var(--text-on-fill)}.sim-notice{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-1) var(--space-2);padding:var(--space-2) var(--space-3);border-left:3px solid var(--warning);border-radius:var(--radius-sm);background:var(--warning-light);line-height:var(--lh-snug)}.sim-notice-title{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.sim-notice-body{font-size:var(--fs-xs);color:var(--text-on-fill)}.cmd-output-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-on-fill)}.goal-panel{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);background:var(--surface-alt)}.goal-task{flex:1 1 14rem;min-width:0;font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--text-strong);line-height:var(--lh-snug)}.goal-hint{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.goal-hint-label{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-on-fill)}.goal-hint-list{flex:1 1 16rem;display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.goal-hint-item{font-size:var(--fs-sm);color:var(--text);line-height:var(--lh-snug)}.goal-hint-cmd{display:inline-block;padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--gray-5);font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong);overflow-wrap:anywhere}.goal-hint-more{flex:0 0 auto}.goal-tip{font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.cmd-form{display:flex;flex-direction:column;gap:var(--space-2)}.cmd-form-label{font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--text-strong)}.cmd-input-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-2) var(--space-3);border:2px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface)}.cmd-input-row:focus-within{border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-lighter)}.cmd-prompt{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-on-fill);white-space:nowrap}.cmd-input{flex:1 1 12rem;min-width:0;min-height:52px;border:0;background:transparent;font-family:var(--font-mono);font-size:var(--fs-md);color:var(--text-strong)}.cmd-input:focus{outline:none}.cmd-input::placeholder{color:var(--text-subtle)}.cmd-run{flex:0 0 auto}.cmd-form-help{font-size:var(--fs-xs);color:var(--text-muted);line-height:var(--lh-snug)}.cmd-help{border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface-alt)}.cmd-help-summary{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);font-size:var(--fs-sm);color:var(--text-on-fill);cursor:pointer}.cmd-help-summary::-webkit-details-marker{display:none}.cmd-help-summary::marker{content:""}.cmd-help-caret{display:inline-block;font-size:var(--fs-xs)}.cmd-help[open] .cmd-help-caret{transform:rotate(180deg)}.cmd-help[open] .cmd-help-summary{border-bottom:1px solid var(--border-soft)}.cmd-help-list{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4)}.cmd-help-row{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-1) var(--space-3);min-width:0}.cmd-help-what{flex:0 0 9rem;font-size:var(--fs-xs);color:var(--text-on-fill)}.cmd-help-cmd{min-width:0;font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-strong);overflow-wrap:anywhere}.cmd-help-foot{padding:0 var(--space-4) var(--space-4);font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.repo-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3);align-items:stretch}.repo-cell{display:flex;flex-direction:column;min-width:0}.repo-link{display:flex;align-items:baseline;gap:var(--space-2);padding-bottom:var(--space-2);font-size:var(--fs-xs);color:var(--text-on-fill)}.repo-link-arrow{font-size:var(--fs-md);font-weight:var(--fw-bold)}.repo-link.is-live{color:var(--primary-dark);font-weight:var(--fw-bold)}.repo-link.is-live .repo-link-arrow{color:var(--primary)}.repo-card{flex:1 1 auto;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--border-soft);border-left:3px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-alt);min-width:0}.repo-card.is-live{border-left-color:var(--primary);background:var(--primary-lighter)}.repo-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2)}.repo-name{padding:0;border:0;background:transparent;font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.repo-name.is-selected{color:var(--primary-dark)}.repo-tech{font-size:var(--fs-xs);color:var(--text-on-fill)}.repo-desc{font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.repo-sync{align-self:flex-start;padding:2px var(--space-2);border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);font-size:.6875rem;font-weight:var(--fw-semibold);color:var(--text-on-fill)}.repo-commits{display:flex;flex-direction:column;gap:var(--space-2)}.repo-commit{display:flex;flex-direction:column;gap:2px;padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:0}.repo-hash{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-extrabold);color:var(--success)}.repo-msg{font-size:.6875rem;color:var(--text);line-height:var(--lh-snug);overflow-wrap:anywhere}.repo-head-tag{font-size:.625rem;color:var(--text-on-fill)}.repo-empty{padding:var(--space-3);border:1px dashed var(--border);border-radius:var(--radius-sm);font-size:var(--fs-xs);color:var(--text-on-fill);text-align:center}.repo-actions,.repo-action-list{display:flex;flex-direction:column;gap:var(--space-2)}.repo-action{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);min-width:0}.repo-run.is-last{border-color:var(--primary);background:var(--primary-lighter)}.repo-action-where{font-size:var(--fs-xs);color:var(--text-on-fill)}.repo-action-cmd{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-strong);overflow-wrap:anywhere}.repo-result-title{font-size:var(--fs-base);font-weight:var(--fw-bold);color:var(--text-strong)}.repo-rows{display:flex;flex-direction:column;gap:var(--space-1)}.repo-rows li{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-1) 0;border-bottom:1px solid var(--border-soft)}.repo-row-key{flex:0 0 9rem;font-size:var(--fs-xs);color:var(--text-muted)}.repo-row-val{flex:1 1 12rem;min-width:0;font-size:var(--fs-xs);color:var(--text-strong);overflow-wrap:anywhere;white-space:pre-line}.host-board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4);align-items:start}.host-card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--border-soft);border-top:3px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-alt);min-width:0}.host-card.is-ok{border-top-color:var(--success)}.host-card.is-fail{border-top-color:var(--danger)}.host-head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.host-name{font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--text-strong)}.host-note{font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.host-env{display:flex;flex-direction:column;gap:2px}.host-env li{display:flex;flex-wrap:wrap;gap:var(--space-2);font-size:var(--fs-xs)}.host-env-key{flex:0 0 8rem;color:var(--text-on-fill)}.host-env-val{color:var(--text-strong);font-weight:var(--fw-semibold)}.host-run{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-strong);overflow-wrap:anywhere}.host-output{padding:var(--space-3);border-radius:var(--radius-sm);background:var(--gray-100);color:#e9ebee;font-family:var(--font-mono);font-size:.6875rem;line-height:1.6;overflow-x:auto;white-space:pre}.host-verdict{font-size:var(--fs-xs);color:var(--text);line-height:var(--lh-snug)}.host-idle{font-size:var(--fs-xs);color:var(--text-on-fill)}.compare-note{padding:var(--space-3) var(--space-4);border-left:3px solid var(--primary);border-radius:var(--radius-sm);background:var(--primary-lighter);font-size:var(--fs-base);color:var(--text);line-height:var(--lh-snug)}.img-run{display:flex;flex-direction:column;gap:var(--space-3)}.img-card{padding:var(--space-4);border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface-alt)}.img-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2)}.img-kind{padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--gray-100);color:var(--text-inverse);font-size:.625rem;font-weight:var(--fw-bold)}.img-name{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.img-sub{font-size:var(--fs-xs);color:var(--text-on-fill)}.img-parts{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-3)}.img-part{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.img-part-label{flex:0 0 9rem;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-strong)}.img-part-value{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-strong);overflow-wrap:anywhere}.img-part-desc{font-size:var(--fs-xs);color:var(--text-on-fill)}.img-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.img-hint{font-size:var(--fs-xs);color:var(--text-muted)}.container-list{display:flex;flex-direction:column;gap:var(--space-2)}.container-item{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--success);border-radius:var(--radius-sm);background:var(--success-light)}.container-name{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.container-from{font-size:var(--fs-xs);color:var(--text-on-fill)}.container-empty{padding:var(--space-3);border:1px dashed var(--border);border-radius:var(--radius-sm);font-size:var(--fs-xs);color:var(--text-muted)}.dockerfile-board{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:var(--space-4);align-items:start}.dockerfile-pane,.layer-pane{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.dockerfile-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2)}.dockerfile-path{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.dockerfile-path-inline{color:#9fd0a8}.dockerfile-code{padding:var(--space-4);border-radius:var(--radius-md);background:var(--gray-100);color:#e9ebee;font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1.8;overflow-x:auto;white-space:pre}.dockerfile-line{display:block}.dockerfile-line.is-new{color:#fff;font-weight:var(--fw-bold)}.dockerfile-line.is-hot{background:#33363d;color:#fff;font-weight:var(--fw-bold)}.dockerfile-empty{color:#b1b8be}.layer-head{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.layer-stack{display:flex;flex-direction:column;gap:var(--space-1)}.layer-item{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.layer-item.is-new{border-color:var(--primary);background:var(--primary-lighter)}.layer-item.is-meta{border-style:dashed;background:var(--surface-alt)}.layer-n{flex:0 0 2.5rem;font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.layer-label{flex:1 1 8rem;min-width:0;font-size:var(--fs-xs);color:var(--text);overflow-wrap:anywhere}.layer-tag{font-size:.625rem;color:var(--text-on-fill)}.layer-empty{padding:var(--space-3);border:1px dashed var(--border);border-radius:var(--radius-sm);font-size:var(--fs-xs);color:var(--text-muted);text-align:center}.layer-foot{font-size:var(--fs-xs);color:var(--text-muted);line-height:var(--lh-snug)}.line-pick,.line-list{display:flex;flex-direction:column;gap:var(--space-2)}.line-option{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);min-width:0}.line-btn{text-align:left}.line-code{font-family:var(--font-mono);font-size:var(--fs-xs);overflow-wrap:anywhere}.line-goal{font-size:var(--fs-xs);color:var(--text-muted)}.compose-map{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-alt)}.compose-outside{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.compose-outside-label{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.compose-port{padding:2px var(--space-2);border:1px dashed var(--border-strong);border-radius:var(--radius-pill);font-size:.6875rem;color:var(--text-on-fill)}.compose-port.is-open{border-style:solid;border-color:var(--success);color:var(--success);font-weight:var(--fw-bold)}.compose-net{padding:var(--space-4);border:2px dashed var(--border-strong);border-radius:var(--radius-md);background:var(--surface)}.compose-net-label{font-size:var(--fs-xs);color:var(--text-muted);margin-bottom:var(--space-3)}.compose-services{display:flex;flex-direction:column;gap:var(--space-2)}.compose-service{display:flex;flex-direction:column;gap:2px;width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-left:3px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);text-align:left;cursor:pointer}.compose-service.is-up{border-left-color:var(--success)}.compose-service.is-waiting{border-left-color:var(--warning);border-style:dashed}.compose-service.is-picked{border-color:var(--primary);background:var(--primary-lighter)}.compose-waiting{padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--warning-light);color:var(--warning);font-size:.625rem;font-weight:var(--fw-bold)}.compose-service.is-waiting .compose-service-state{color:var(--warning);font-weight:var(--fw-bold)}.pending-cmd{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-left:3px solid var(--warning);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--warning-light)}.pending-label{flex:0 0 auto;font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--warning)}.pending-code{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong);overflow-wrap:anywhere}.pending-note{flex:1 1 12rem;min-width:0;font-size:var(--fs-xs);color:var(--text);line-height:var(--lh-snug)}.pending-note code{font-family:var(--font-mono);font-weight:var(--fw-semibold)}.cmd-block{display:block}.compose-service-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2)}.compose-service-name{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.compose-service-tech{font-size:var(--fs-xs);color:var(--text-on-fill)}.compose-service-role{font-size:var(--fs-xs);color:var(--text-muted)}.compose-service-addr{font-family:var(--font-mono);font-size:.6875rem;color:var(--text-on-fill);overflow-wrap:anywhere}.compose-service-state{font-size:.6875rem;font-weight:var(--fw-semibold);color:var(--text-on-fill)}.compose-service.is-up .compose-service-state{color:var(--success)}.compose-volume{font-size:.625rem;color:var(--text-on-fill)}.compose-dep{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-1) var(--space-2);padding:var(--space-1) var(--space-4);font-size:.6875rem;color:var(--text-muted)}.compose-dep-tech{font-family:var(--font-mono);font-size:.625rem;color:var(--text-on-fill)}.compose-foot{font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.compose-run{display:flex;flex-direction:column;gap:var(--space-3)}.compose-detail{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.fsm{display:flex;flex-direction:column;gap:var(--space-2)}.fsm-states{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-2)}.fsm-state{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);min-width:0}.fsm-state.is-seen{border-color:var(--border-strong)}.fsm-state.is-now{border-color:var(--primary);border-width:2px;background:var(--primary-lighter)}.fsm-state-ko{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.fsm-state-label{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill)}.fsm-now{font-size:.625rem;font-weight:var(--fw-bold);color:var(--primary-dark)}.fsm-desc{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--gray-5);font-size:var(--fs-sm);color:var(--text);line-height:var(--lh-snug)}.fsm-events,.fsm-event-list{display:flex;flex-direction:column;gap:var(--space-2)}.fsm-event{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.fsm-event-btn.is-server{border-style:dashed}.fsm-event-kind{font-size:var(--fs-xs);color:var(--text-on-fill)}.fsm-event-to{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted)}.render-board{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:var(--space-4);align-items:start}.render-screen,.render-code{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.render-screen-head{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.mini-screen{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-5) var(--space-4);border:2px solid var(--border-heavy);border-radius:var(--radius-md);background:var(--surface);text-align:center;min-height:9rem;justify-content:center}.mini-screen.is-loading{background:var(--gray-5)}.mini-screen.is-success{border-color:var(--success);background:var(--success-light)}.mini-screen.is-error{border-color:var(--danger);background:var(--danger-light)}.mini-title{font-size:var(--fs-xs);color:var(--text-on-fill)}.mini-body{font-size:var(--fs-base);color:var(--text)}.mini-body.is-error{color:var(--danger);font-weight:var(--fw-semibold)}.mini-name{font-size:var(--fs-xl);font-weight:var(--fw-extrabold);color:var(--text-strong)}.mini-score{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--success)}.mini-sub{font-size:var(--fs-xs);color:var(--text-on-fill)}.mini-btn{align-self:center;padding:var(--space-2) var(--space-5);border-radius:var(--radius-sm);background:var(--primary);color:var(--text-inverse);font-size:var(--fs-sm);font-weight:var(--fw-bold)}.render-note{font-size:var(--fs-xs);color:var(--text-muted);line-height:var(--lh-snug)}.branch-board{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface-alt)}.branch-in{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.branch-in-label{font-size:var(--fs-xs);color:var(--text-on-fill)}.branch-in-path{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.rule-list{display:flex;flex-direction:column;gap:var(--space-2)}.rule{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:0}.rule.is-hit{border-left-color:var(--border-strong)}.rule.is-win{border-color:var(--primary);border-left-color:var(--primary);background:var(--primary-lighter)}.rule-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.rule-prefix{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.rule-state{font-size:var(--fs-xs);color:var(--text-on-fill)}.rule.is-win .rule-state{color:var(--primary-dark);font-weight:var(--fw-bold)}.rule-body{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text);overflow-wrap:anywhere}.rule-role{font-size:var(--fs-xs);color:var(--text-muted)}.branch-split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.branch-arm{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);border:1px dashed var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:0}.branch-arm.is-taken{border-style:solid;border-color:var(--primary);background:var(--primary-light)}.branch-arm-label{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.branch-arm-sub{font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.branch-steps{display:flex;flex-direction:column;gap:var(--space-1);padding-left:var(--space-5);list-style:decimal}.branch-steps li{font-size:var(--fs-sm);color:var(--text);line-height:var(--lh-snug)}.route-table{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface-alt)}.route-table-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2)}.route-table-title{display:inline-flex;align-items:baseline;gap:var(--space-2);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.route-table-tech{font-family:var(--font-mono);font-size:.625rem;font-weight:var(--fw-regular);color:var(--text-on-fill)}.builder-label-tech{display:block;font-family:var(--font-mono);font-size:.625rem;font-weight:var(--fw-regular);color:var(--text-on-fill)}.route-table-file{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill)}.route-rows{display:flex;flex-direction:column;gap:var(--space-2)}.route-row{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:0}.route-row.is-win{border-color:var(--success);border-left-color:var(--success);background:var(--success-light)}.route-row.is-partial{border-color:var(--warning);border-left-color:var(--warning);background:var(--warning-light)}.route-decorator{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong);overflow-wrap:anywhere}.route-fn{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill)}.route-desc{font-size:var(--fs-xs);color:var(--text-muted)}.route-test{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-1)}.route-flag{padding:0 var(--space-2);border-radius:var(--radius-pill);font-size:.625rem;font-weight:var(--fw-semibold)}.route-flag.is-ok{background:var(--success-light);color:var(--success)}.route-flag.is-no{background:var(--gray-10);color:var(--text-on-fill)}.route-why{font-size:.6875rem;color:var(--text-on-fill)}.bind-chain{display:flex;align-items:stretch;flex-wrap:wrap;gap:var(--space-2)}.bind-node{display:flex;flex-direction:column;gap:2px;flex:1 1 11rem;min-width:0;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.bind-node.is-hit{border-color:var(--success);background:var(--success-light)}.bind-node.is-miss{border-style:dashed;background:var(--gray-5)}.bind-role{font-size:var(--fs-xs);color:var(--text-on-fill)}.bind-value{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong);overflow-wrap:anywhere}.bind-arrow{align-self:center;flex:0 0 auto;color:var(--text-on-fill)}.bind-note{font-size:var(--fs-sm);color:var(--text);line-height:var(--lh-snug)}.bind-note code{font-weight:var(--fw-bold);color:var(--text-strong)}.route-none{padding:var(--space-3);border:1px solid var(--danger);border-radius:var(--radius-sm);background:var(--danger-light);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--danger)}.rest-matrix{display:grid;grid-template-columns:minmax(9rem,1.4fr) repeat(4,minmax(0,1fr));gap:var(--space-2);align-items:stretch}.rest-corner{display:flex;flex-direction:column;gap:2px;justify-content:flex-end}.rest-corner-x{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.rest-corner-y{font-size:.6875rem;color:var(--text-on-fill)}.rest-col-head{display:flex;flex-direction:column;align-items:center;gap:2px;justify-content:flex-end}.rest-method{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.rest-method-ko{font-size:.6875rem;color:var(--text-on-fill)}.rest-row{display:contents}.rest-row-head{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);border-radius:var(--radius-sm);background:var(--surface-alt);min-width:0}.rest-path{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong);overflow-wrap:anywhere}.rest-row-label{font-size:var(--fs-xs);color:var(--text-on-fill)}.rest-row-means{font-size:.6875rem;color:var(--text-on-fill);line-height:var(--lh-snug)}.rest-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:4.5rem;padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer}.rest-cell.is-blocked{border-style:dashed;background:var(--gray-5)}.rest-cell.is-picked{border-color:var(--primary);border-width:2px;background:var(--primary-lighter)}.rest-cell.is-solved{border-color:var(--success);background:var(--success-light)}.rest-cell-status{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:var(--fw-extrabold);color:var(--text-strong)}.rest-cell.is-blocked .rest-cell-status{color:var(--text-on-fill)}.rest-cell-note{font-size:.625rem;color:var(--text-on-fill);text-align:center}.rest-cell-mark{font-size:.625rem;font-weight:var(--fw-bold);color:var(--success)}.rest-legend{font-size:var(--fs-xs);color:var(--text-muted);line-height:var(--lh-snug)}.rest-built{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.rest-built-label{font-size:var(--fs-xs);color:var(--text-on-fill)}.rest-built-line{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:var(--fw-extrabold);color:var(--text-strong);overflow-wrap:anywhere}.sql-table-wrap{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.sql-table-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.sql-table-name{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--text-strong)}.sql-table-file{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill)}.sql-table{width:100%;border-collapse:collapse;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.sql-caption{caption-side:top;padding-bottom:var(--space-2);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted);text-align:left}.sql-table.is-danger{border-color:var(--danger)}.sql-table.is-danger .sql-caption{color:var(--danger)}.sql-table th,.sql-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-soft);font-size:var(--fs-sm);text-align:left}.sql-table th{background:var(--gray-5);vertical-align:bottom}.sql-col{display:block;font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.sql-col-type{display:block;font-size:.625rem;color:var(--text-on-fill)}.sql-table td{color:var(--text)}.sql-table tr.is-hit td{background:var(--primary-lighter);font-weight:var(--fw-semibold)}.sql-table tr.is-warn td{background:var(--danger-light)}.sql-mark{margin-left:var(--space-2);padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--primary);color:var(--text-inverse);font-size:.625rem;font-weight:var(--fw-bold)}.sql-table tr.is-warn .sql-mark{background:var(--danger)}.sql-pick,.sql-list{display:flex;flex-direction:column;gap:var(--space-2)}.sql-option{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--border-soft);border-left:3px solid var(--border);border-radius:var(--radius-sm);min-width:0}.sql-option.is-danger{border-left-color:var(--danger);background:var(--danger-light)}.sql-btn.is-last{border-color:var(--primary);background:var(--primary-lighter)}.sql-code{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-strong);overflow-wrap:anywhere}.sql-desc{font-size:var(--fs-xs);color:var(--text-on-fill)}.sql-json-head{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted)}.sql-schema{display:flex;flex-direction:column;gap:var(--space-3)}.sql-schema-item{display:flex;flex-direction:column;gap:var(--space-1)}.sql-schema-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.sql-schema-label{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.sql-schema-id{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill)}.sql-schema-role{flex:1 1 12rem;min-width:0;font-size:var(--fs-xs);color:var(--text-on-fill)}.sql-schema-parts{display:flex;flex-direction:column;gap:2px;padding-left:var(--space-4)}.sql-schema-parts li{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.sql-schema-mark{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.sql-schema-desc{flex:1 1 12rem;min-width:0;font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.sql-params{display:flex;flex-direction:column;gap:var(--space-1)}.sql-param{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-2) var(--space-3);border-left:3px solid var(--sql);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--sql-light)}.sql-param-mark{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-extrabold);color:var(--sql)}.sql-param-role{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.sql-param-desc{flex:1 1 14rem;min-width:0;font-size:var(--fs-xs);color:var(--text);line-height:var(--lh-snug)}.trace-controls{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-md);background:var(--gray-5)}.trace-count{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--text-strong);min-width:8rem;text-align:center}.trace-foot{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.trace-foot-note{font-size:var(--fs-xs);color:var(--text-muted)}.shape-chain-lead{font-size:var(--fs-sm);color:var(--text);line-height:var(--lh-snug)}.shape-chain{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-1)}.shape-item{display:inline-flex;align-items:center;gap:var(--space-1)}.shape-arrow{color:var(--text-on-fill)}.shape-badge{padding:2px var(--space-2);border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);font-size:.6875rem;font-weight:var(--fw-semibold);color:var(--text-on-fill)}.shape-badge.is-on{border-color:var(--border-heavy);color:var(--text-strong)}.shape-badge.is-http.is-on{border-color:var(--request);background:var(--request-light);color:var(--request)}.shape-badge.is-sql.is-on{border-color:var(--sql);background:var(--sql-light);color:var(--sql)}.shape-badge.is-row.is-on{border-color:var(--db-result);background:var(--db-result-light);color:var(--db-result)}.shape-badge.is-json.is-on{border-color:var(--response);background:var(--response-light);color:var(--response)}.shape-badge.is-screen.is-on{border-color:var(--primary);background:var(--primary-light);color:var(--primary-dark)}.trace-board{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr);gap:var(--space-4);align-items:start}.trace-list{display:flex;flex-direction:column;gap:2px;min-width:0}.trace-step{display:grid;grid-template-columns:1.75rem minmax(0,1fr) auto;align-items:baseline;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border:1px solid transparent;border-left:3px solid var(--border-soft);border-radius:var(--radius-sm);background:transparent;text-align:left;cursor:pointer}.trace-step.is-done{border-left-color:var(--border-strong)}.trace-step.is-now{border-color:var(--primary);border-left-color:var(--primary);background:var(--primary-lighter)}.trace-step.is-req.is-now{border-left-color:var(--request)}.trace-step.is-res.is-now{border-left-color:var(--response)}.trace-n{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill)}.trace-title{font-size:var(--fs-sm);color:var(--text);min-width:0}.trace-step.is-now .trace-title{font-weight:var(--fw-bold);color:var(--text-strong)}.trace-tech{font-size:.625rem;color:var(--text-on-fill)}.trace-dir{grid-column:2 / -1;font-size:.625rem;color:var(--text-on-fill)}.trace-detail{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface-alt);min-width:0}.trace-detail-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2)}.trace-detail-n{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill)}.trace-detail-title{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--text-strong)}.trace-badge{padding:0 var(--space-2);border-radius:var(--radius-pill);font-size:.625rem;font-weight:var(--fw-bold)}.trace-badge.is-req{background:var(--request-light);color:var(--request)}.trace-badge.is-res{background:var(--response-light);color:var(--response)}.trace-what{font-size:var(--fs-base);color:var(--text);line-height:var(--lh-snug)}.trace-why{font-size:var(--fs-sm);color:var(--text-on-fill);line-height:var(--lh-loose)}.trace-facts{display:flex;flex-direction:column;gap:var(--space-1)}.trace-facts li{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-1) 0;border-bottom:1px solid var(--border-soft)}.trace-fact-key{flex:0 0 7rem;font-size:var(--fs-xs);color:var(--text-on-fill)}.trace-fact-val{flex:1 1 12rem;min-width:0;font-size:var(--fs-xs);color:var(--text-strong);overflow-wrap:anywhere}.trace-fact-code{font-family:var(--font-mono)}.trace-data{display:flex;flex-direction:column;gap:var(--space-2)}.trace-data-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted)}.trace-data-body{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--gray-100);color:#e9ebee;font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1.7;overflow-x:auto;white-space:pre}.axis-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3);align-items:start}.axis-card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--border-soft);border-top:3px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-alt);min-width:0}.axis-card.is-runtime{border-top-color:var(--primary)}.axis-card.is-source{border-top-color:var(--sql)}.axis-card.is-env{border-top-color:var(--db-result)}.axis-head{display:flex;flex-direction:column;gap:2px}.axis-ko{font-size:var(--fs-base);font-weight:var(--fw-bold);color:var(--text-strong)}.axis-label{font-family:var(--font-mono);font-size:.6875rem;font-weight:var(--fw-semibold);letter-spacing:0;color:var(--text-on-fill)}.axis-desc{font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.axis-nodes{display:flex;flex-direction:column;gap:var(--space-2)}.axis-node{display:flex;flex-direction:column;gap:2px;width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);text-align:left;cursor:pointer}.axis-node.is-up{border-color:var(--success);background:var(--success-light)}.axis-node.is-selected{outline:2px solid var(--primary);outline-offset:1px}.axis-node-name{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.axis-node-role{font-size:.6875rem;color:var(--text-on-fill)}.axis-node-state{font-size:.6875rem;font-weight:var(--fw-semibold);color:var(--text-on-fill)}.axis-node.is-up .axis-node-state{color:var(--success)}.axis-state{padding:var(--space-2);border-radius:var(--radius-sm);background:var(--surface);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-strong)}.axis-note{font-size:.625rem;color:var(--text-on-fill)}.final-steps,.final-list{display:flex;flex-direction:column;gap:var(--space-2)}.final-step{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--border-soft);border-left:3px solid var(--border);border-radius:var(--radius-sm);min-width:0}.final-step.is-source{border-left-color:var(--sql)}.final-step.is-env{border-left-color:var(--db-result)}.final-step.is-runtime{border-left-color:var(--primary)}.final-step.is-done{background:var(--success-light)}.final-btn.is-last{border-color:var(--primary);background:var(--primary-lighter)}.final-goal{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-strong)}.final-axis{padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--gray-10);font-size:.625rem;font-weight:var(--fw-semibold);color:var(--text-on-fill)}.final-cmd{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill);overflow-wrap:anywhere}.final-lock{font-size:.6875rem;color:var(--warning);font-weight:var(--fw-semibold)}.final-n{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--radius-pill);background:var(--gray-10);color:var(--text-on-fill);font-size:.625rem;font-weight:var(--fw-bold)}.final-step.is-done .final-n{background:var(--success);color:var(--text-inverse)}.final-use{flex:1 1 10rem;min-width:0;font-size:var(--fs-xs);color:var(--text-on-fill)}.danger-note{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3) var(--space-4);border:1px solid var(--danger);border-left-width:3px;border-radius:var(--radius-md);background:var(--danger-light)}.danger-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2)}.danger-cmd{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--danger)}.danger-title{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.danger-body{font-size:var(--fs-xs);color:var(--text);line-height:var(--lh-snug)}.final-banner{padding:var(--space-5);border:2px solid var(--success);border-radius:var(--radius-md);background:var(--success-light);font-size:var(--fs-xl);font-weight:var(--fw-extrabold);letter-spacing:-.01em;color:var(--success);text-align:center}.git-item-example{margin-left:var(--space-2);padding:0 var(--space-2);border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);color:var(--text-on-fill);font-family:var(--font-sans);font-size:.625rem;font-weight:var(--fw-semibold)}.term{display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-1) var(--space-2)}.term-role{font-size:inherit;font-weight:var(--fw-bold);color:var(--text-strong)}.term-tech{font-family:var(--font-mono);font-size:.9em;color:var(--text-on-fill)}.term-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);color:var(--text-on-fill);font-size:.6875rem;font-weight:var(--fw-bold);line-height:1;cursor:pointer}.term-toggle:hover{border-color:var(--primary);color:var(--primary-dark)}.term.is-open .term-toggle{border-color:var(--primary);background:var(--primary-light);color:var(--primary-dark)}.term-hint{flex:1 1 100%;margin-top:var(--space-1);padding:var(--space-2) var(--space-3);border-left:3px solid var(--primary);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--primary-lighter);font-family:var(--font-sans);font-size:var(--fs-xs);font-weight:var(--fw-regular);color:var(--text);line-height:var(--lh-snug)}.disclosure{border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--surface-alt)}.disclosure+.disclosure{margin-top:var(--space-2)}.disclosure-summary{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);min-height:44px;border-radius:var(--radius-md);cursor:pointer;list-style:none}.disclosure-summary::-webkit-details-marker{display:none}.disclosure-summary:hover{background:var(--gray-5)}.disclosure-label{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.disclosure-note{flex:1 1 12rem;min-width:0;font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.disclosure-mark{margin-left:auto;color:var(--text-on-fill);font-size:var(--fs-xs)}.disclosure[open]>.disclosure-summary{border-bottom:1px solid var(--border-soft);border-radius:var(--radius-md) var(--radius-md) 0 0}.disclosure[open]>.disclosure-summary .disclosure-mark{transform:rotate(180deg);display:inline-block}.disclosure-body{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);min-width:0}.disclosure.is-advanced{border-color:var(--border);background:var(--gray-5)}.disclosure.is-quiet{border-style:dashed;background:transparent}.termline{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-1) var(--space-3);min-width:0}.termline-role{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.termline-tech{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill)}.termline-hint{flex:1 1 14rem;min-width:0;font-size:var(--fs-xs);color:var(--text);line-height:var(--lh-snug)}.why-section{display:flex;flex-direction:column;gap:var(--space-4)}.why-line{font-size:var(--fs-md);color:var(--text);line-height:var(--lh-loose)}.why-line.is-problem{padding:var(--space-4) var(--space-5);border-left:3px solid var(--point);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--bg-subtle);font-weight:var(--fw-semibold);color:var(--text-strong)}.one-thing{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-5);border:2px solid var(--primary);border-radius:var(--radius-lg);background:var(--primary-lighter)}.one-thing-label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-xs);font-weight:var(--fw-extrabold);color:var(--primary-dark);letter-spacing:.02em}.one-thing-star{font-size:var(--fs-sm)}.one-thing-text{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--text-strong);line-height:var(--lh-snug)}.remember-list{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-4)}.remember-item{display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-4) var(--space-5);border:1px solid var(--border);border-left:3px solid var(--success);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--surface)}.remember-num{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--radius-pill);background:var(--success);color:var(--text-inverse);font-size:var(--fs-xs);font-weight:var(--fw-bold)}.remember-text{flex:1 1 auto;min-width:0;font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text-strong);line-height:var(--lh-snug)}.code-focus{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4) var(--space-5);border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:var(--radius-md);background:var(--surface)}.code-focus-label{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--primary-dark)}.code-focus-lines{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--gray-100);color:#e9ebee;font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.8;overflow-x:auto;white-space:pre}.code-focus-say{font-size:var(--fs-base);color:var(--text);line-height:var(--lh-loose)}.code-focus-file{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill);overflow-wrap:anywhere}.code-more{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3);margin-top:var(--space-3)}.code-more-note{flex:1 1 14rem;min-width:0;font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.arch-aside-fold{margin-top:var(--space-4)}.arch-aside-fold .disclosure-body{gap:var(--space-3)}.arch-aside-fold .arch-aside{padding-top:0;border-top:0}.result-plain{padding:var(--space-3) var(--space-4);border-left:3px solid var(--border-heavy);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--gray-5);font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--text-strong);line-height:var(--lh-snug)}.line-option.is-shown{border-left-color:var(--success)}.line-later{padding:0 var(--space-2);border-radius:var(--radius-pill);background:var(--gray-10);font-size:.625rem;color:var(--text-on-fill)}.explore-hint{padding:var(--space-3) var(--space-4);border:1px dashed var(--border);border-radius:var(--radius-md);background:var(--surface-alt);font-size:var(--fs-sm);color:var(--text);line-height:var(--lh-snug)}.explore-hint code{font-family:var(--font-mono);font-weight:var(--fw-bold);color:var(--text-strong)}.tree-role{margin-left:auto;padding-left:var(--space-2);font-family:var(--font-sans);font-size:.625rem;color:var(--text-on-fill);white-space:nowrap}.concept-advanced{margin-top:var(--space-3)}.concept-advanced-p{font-size:var(--fs-sm);color:var(--text);line-height:var(--lh-loose)}.checkpoint{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--success);border-left-width:3px;border-radius:var(--radius-md);background:var(--success-light)}.checkpoint-mark{font-size:var(--fs-sm);font-weight:var(--fw-extrabold);color:var(--success)}.checkpoint-text{flex:1 1 14rem;min-width:0;font-size:var(--fs-sm);color:var(--text);line-height:var(--lh-snug)}.learn-note{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-2) var(--space-3);border:1px dashed var(--border);border-radius:var(--radius-sm);background:var(--surface-alt);font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.learn-note .tag{flex:0 0 auto}.part-legend{display:flex;flex-wrap:wrap;gap:var(--space-2)}.part-legend-item{display:inline-flex;align-items:baseline;gap:var(--space-2);padding:2px var(--space-3);border:1px solid var(--border-soft);border-radius:var(--radius-pill);background:var(--surface-alt)}.part-legend-role{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.part-legend-tech{font-family:var(--font-mono);font-size:.625rem;color:var(--text-on-fill)}.guided{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:var(--radius-md);background:var(--primary-lighter)}.guided-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.guided-step{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--primary-dark)}.guided-task{flex:1 1 14rem;min-width:0;font-size:var(--fs-base);font-weight:var(--fw-bold);color:var(--text-strong)}.guided-why{font-size:var(--fs-sm);color:var(--text);line-height:var(--lh-snug)}.guided-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.guided-cmd{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill);overflow-wrap:anywhere}.guided-dir{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--primary-dark)}.guided-rest{display:flex;flex-direction:column;gap:var(--space-2)}.repo-model{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-alt)}.repo-model-title{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.repo-model-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3)}.repo-model-side{display:flex;flex-direction:column;gap:2px;flex:1 1 12rem;min-width:0;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.repo-model-role{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.repo-model-tech{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill)}.repo-model-link{flex:0 0 auto;font-size:var(--fs-lg);color:var(--text-on-fill)}.repo-model-note{font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.site-footer-meta{margin-top:var(--space-3)}.site-footer-meta .disclosure{background:transparent;border-color:var(--border-soft)}.site-footer-meta .disclosure-body p{font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.status-ref{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-5);padding:var(--space-4) var(--space-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-alt)}.status-ref-title{font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--text-strong)}.status-ref-note{font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.status-ref-list{display:flex;flex-direction:column;gap:var(--space-1)}.status-ref-row{display:grid;grid-template-columns:3.25rem 10rem minmax(0,1fr);align-items:baseline;gap:var(--space-1) var(--space-3);padding:var(--space-2) var(--space-3);border-left:3px solid var(--border-strong);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--surface)}.status-ref-row.is-2xx{border-left-color:var(--success)}.status-ref-row.is-4xx{border-left-color:var(--warning)}.status-ref-row.is-5xx{border-left-color:var(--danger)}.status-ref-code{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:var(--fw-extrabold);color:var(--text-strong)}.status-ref-name{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-on-fill);overflow-wrap:anywhere}.status-ref-meaning{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-strong);line-height:var(--lh-snug)}.status-ref-when{grid-column:3;font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.security-callout{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-5);padding:var(--space-5);border:2px solid var(--danger);border-radius:var(--radius-md);background:var(--danger-light)}.security-head{display:flex;align-items:baseline;gap:var(--space-2)}.security-icon{font-size:var(--fs-lg)}.security-title{font-size:var(--fs-md);font-weight:var(--fw-extrabold);color:var(--text-strong)}.security-body{font-size:var(--fs-sm);color:var(--text);line-height:var(--lh-loose)}.security-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.security-case{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:0}.security-case.is-safe{border-color:var(--success)}.security-case.is-unsafe{border-color:var(--danger);border-style:dashed}.security-case-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2)}.security-badge{padding:0 var(--space-2);border-radius:var(--radius-pill);font-size:.625rem;font-weight:var(--fw-extrabold);letter-spacing:.04em}.security-badge.is-safe{background:var(--success);color:var(--text-inverse)}.security-badge.is-unsafe{background:var(--danger);color:var(--text-inverse)}.security-case-label{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong)}.security-code{padding:var(--space-3);border-radius:var(--radius-sm);background:var(--gray-100);color:#e9ebee;font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1.7;overflow-x:auto;white-space:pre}.security-case-note{font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.security-foot{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-strong);line-height:var(--lh-snug)}.primer{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-5);padding:var(--space-4) var(--space-5);border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--primary-lighter)}.primer-title{font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--text-strong)}.primer-body{font-size:var(--fs-base);color:var(--text);line-height:var(--lh-loose)}.primer-examples{display:flex;flex-direction:column;gap:var(--space-2)}.primer-example{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--surface)}.primer-what{flex:0 0 auto;font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.primer-how{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text);overflow-wrap:anywhere}.primer-scope{font-size:var(--fs-xs);color:var(--text-on-fill);line-height:var(--lh-snug)}.sql-schema-combine{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);margin-top:var(--space-2);padding:var(--space-2) var(--space-3);border-left:3px solid var(--primary);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--primary-lighter)}.sql-schema-combine-code{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-strong);overflow-wrap:anywhere}.sql-schema-combine-say{flex:1 1 14rem;min-width:0;font-size:var(--fs-xs);color:var(--text);line-height:var(--lh-snug)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-slide-down{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%)}}@keyframes led-pulse{0%,to{opacity:1}50%{opacity:.25}}@keyframes wire-flow{0%{stroke-dashoffset:24}to{stroke-dashoffset:0}}@keyframes ring-pulse{0%{opacity:.65}70%{opacity:0}to{opacity:0}}@keyframes progress-shimmer{0%{opacity:.55}50%{opacity:1}to{opacity:.55}}.btn,.dropdown-item,.tag,.dropdown-num{transition:background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.btn:active{transform:translateY(1px);transition-duration:var(--dur-instant)}.skip-link{transition:transform var(--dur-base) var(--ease-out)}.dropdown-panel{transform-origin:top right;animation:fade-slide-down var(--dur-base) var(--ease-out) both}.toast{animation:toast-in var(--dur-base) var(--ease-spring) both}.packet-group{transition:transform var(--dur-slower) var(--ease-in-out)}.led.is-busy{animation:led-pulse .9s var(--ease-in-out) infinite}.wire.is-live-req,.wire.is-live-res{stroke-dasharray:10 6;animation:wire-flow .7s linear infinite}.bay,.led,.screen-btn,.machine-screen{transition:fill var(--dur-base) var(--ease),stroke var(--dur-base) var(--ease),stroke-width var(--dur-base) var(--ease)}.bay.is-active{filter:drop-shadow(0 0 6px rgba(37,110,244,.35))}.screen-btn.is-pressed+text+circle,.scene-svg circle[stroke="var(--primary)"]{animation:ring-pulse .8s var(--ease-out) infinite}.scene-svg rect[fill="var(--primary)"]{animation:progress-shimmer 1.2s var(--ease-in-out) infinite}.screen-value,.screen-score,.packet-kind,.packet-line{animation:fade-in var(--dur-base) var(--ease-out) both}.no-motion *,.no-motion *:before,.no-motion *:after{animation-duration:1ms!important;animation-iteration-count:1!important;animation-delay:0ms!important;transition-duration:1ms!important;transition-delay:0ms!important;scroll-behavior:auto!important}.no-motion .wire.is-live-req,.no-motion .wire.is-live-res{stroke-dasharray:none}.no-motion .btn:active{transform:none}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;animation-delay:0ms!important;transition-duration:1ms!important;transition-delay:0ms!important}.wire.is-live-req,.wire.is-live-res{stroke-dasharray:none}}.arch-node,.arch-edge-line,.code-tab,.code-text--link,.step-dot,.error-head{transition:background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),width var(--dur-base) var(--ease),height var(--dur-fast) var(--ease),opacity var(--dur-fast) var(--ease)}.arch-node.is-live{box-shadow:0 0 0 4px #256ef424}.arch-node.is-error{box-shadow:0 0 0 4px #de341224}.step-info,.result-card,.error-body{animation:fade-in var(--dur-base) var(--ease-out) both}.toast{will-change:transform,opacity}.led.is-busy{animation:none;fill:var(--primary);stroke:var(--primary-light);stroke-width:4}.led.is-on{animation:none;stroke:var(--success-light);stroke-width:3}.wire.is-live-req,.wire.is-live-res{stroke-dasharray:10 6;animation:wire-flow .7s linear 3}.wire.is-live-res{stroke-dasharray:3 5}.screen-btn.is-pressed+text+circle,.scene-svg circle[stroke="var(--primary)"]{animation:ring-pulse .8s var(--ease-out) 2}.scene-svg rect[fill="var(--primary)"]{animation:progress-shimmer 1.2s var(--ease-in-out) 3}.toast{animation:toast-in var(--dur-base) var(--ease-out) both}.role-item,.scene-hit-area,.code-copy,.step-preview{transition:background-color var(--dur-fast) var(--ease),stroke var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.no-motion .packet-group,.no-motion .wire.is-live-req,.no-motion .wire.is-live-res{animation:none!important}@media (prefers-reduced-motion: reduce){.packet-group{transition:none!important}.wire.is-live-req,.wire.is-live-res,.led.is-busy,.screen-btn.is-pressed+text+circle,.scene-svg rect[fill="var(--primary)"]{animation:none!important}.wire.is-live-req{stroke-dasharray:10 6;stroke-width:3.5}.wire.is-live-res{stroke-dasharray:3 5;stroke-width:3.5}}.bay.is-active{filter:none}.machine-screen,.screen-field,.screen-btn{transition:fill var(--dur-base) var(--ease),stroke var(--dur-base) var(--ease)}.screen-value,.screen-score{animation:fade-in var(--dur-slow) var(--ease-out) both}.bay-state{animation:fade-in var(--dur-fast) var(--ease-out) both}.wire-label{transition:font-size var(--dur-fast) var(--ease),fill var(--dur-fast) var(--ease)}@media (prefers-reduced-motion: reduce){.screen-value,.screen-score,.bay-state{animation:none!important}}.choice,.status-code,.part{transition:background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.status-line,.wire-block--res{animation:fade-in var(--dur-base) var(--ease-out) both}.tree-row,.arch-axis-node{transition:background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.map-answer,.tree-children{animation:fade-in var(--dur-base) var(--ease-out) both}.tree-file,.file-tab{transition:background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.file-preview{animation:fade-in var(--dur-base) var(--ease-out) both}.git-item,.arch-axis-node{transition:background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.git-item,.cmd-entry,.cmd-note{animation:fade-in var(--dur-base) var(--ease-out) both}.repo-card,.repo-link,.host-card,.layer-item,.compose-service,.fsm-state,.rule,.branch-arm,.route-row,.rest-cell,.trace-step,.shape-badge,.axis-node,.final-step{transition:background-color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.layer-item.is-new,.container-item,.mini-screen,.trace-data-body{animation:fade-in var(--dur-base) var(--ease-out) both}@media (max-width: 1280px){:root{--page-pad: var(--space-5)}}@media (max-width: 1024px){.chapter-page{gap:var(--space-8);padding-top:var(--space-7);padding-bottom:var(--space-10)}.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 768px){:root{--page-pad: var(--space-4);--fs-2xl: 1.5rem;--fs-3xl: 1.75rem}.chapter-page{gap:var(--space-7);padding-top:var(--space-6);padding-bottom:var(--space-9)}.grid-2,.grid-3{grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.dropdown{position:static}.dropdown-panel{left:var(--space-4);right:var(--space-4);width:auto;max-height:min(75vh,620px)}.dropdown-item{padding:var(--space-3) var(--space-2)}.dropdown-q{-webkit-line-clamp:3;line-clamp:3}.scene-svg{max-height:none;border-radius:var(--radius-md)}.toast{left:var(--space-4);right:var(--space-4);bottom:var(--space-5);max-width:none;transform:none;justify-content:center;border-radius:var(--radius-md);text-align:center}.site-footer-inner{padding-top:var(--space-7);padding-bottom:var(--space-8)}}@media (max-width: 768px){@keyframes toast-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}}@media (max-width: 480px){:root{--page-pad: var(--space-3)}body{font-size:.9375rem}.chapter-page{gap:var(--space-6)}.btn{padding-inline:var(--space-4)}.btn--sm{padding-inline:var(--space-3)}.dropdown-panel{left:var(--space-2);right:var(--space-2);top:calc(100% + var(--space-1))}.dropdown-head{flex-direction:column;align-items:flex-start;gap:var(--space-1);padding:var(--space-3) var(--space-4)}.dropdown-num{width:24px;height:24px}.dropdown-text{font-size:var(--fs-sm)}.tag{min-width:42px;height:22px;font-size:.6875rem}.site-footer-inner p{font-size:var(--fs-xs)}}@media (min-width: 1600px){.chapter-page{max-width:var(--page-wide)}}@media print{.skip-link,.dropdown,.toast{display:none!important}.app{min-height:auto}.chapter-page{gap:var(--space-6);padding:0;max-width:none}.site-footer{background:none}}@media (max-width: 768px){.site-header-inner{gap:var(--space-3);padding-block:var(--space-3)}.site-header-tools{width:100%;justify-content:space-between;gap:var(--space-2)}.arch-path{flex-direction:column;align-items:stretch}.arch-step{flex-direction:column;align-items:stretch;gap:var(--space-1)}.arch-edge{flex-direction:row;justify-content:center;gap:var(--space-2)}.arch-edge-line{width:2px;height:18px;clip-path:none}.arch-node{width:100%;align-items:center;text-align:center}.chapter-nav{flex-direction:column}.chapter-nav-btn,.chapter-nav-btn--next{align-items:flex-start;text-align:left}.error-body{grid-template-columns:minmax(0,1fr);gap:var(--space-1)}.error-body dd{margin-bottom:var(--space-2)}.step-controls{gap:var(--space-2)}.step-controls .btn{flex:1 1 auto}.step-dots{order:-1;width:100%;flex-basis:100%}.result-label{min-width:0;flex-basis:100%}}@media (max-width: 480px){.site-header-title{font-size:var(--fs-xs)}.hero-title{font-size:var(--fs-xl)}.hero-question{font-size:var(--fs-md)}.card,.code-panel{padding:var(--space-4)}}@media (max-width: 480px){.role-item{grid-template-columns:minmax(0,1fr);gap:var(--space-1)}.step-foot-note{flex-basis:100%}}@media (max-width: 768px){.chapter-page>.section{max-width:none}.role-item{grid-template-columns:minmax(0,1fr);gap:var(--space-1);padding-inline:0}.activity-panel{padding:var(--space-4)}.node-detail p{gap:var(--space-1) var(--space-2)}.step-controls .btn{flex:1 1 40%}.step-foot{gap:var(--space-2)}.step-foot .btn{flex:1 1 auto}}@media (max-width: 480px){.site-header-inner{gap:var(--space-2);padding-block:var(--space-2)}.site-header-title{font-size:.6875rem;font-weight:var(--fw-semibold);color:var(--text-subtle);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.site-header-chip{padding:2px var(--space-2);font-size:.6875rem}.site-header-chapter{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.site-header-now{gap:var(--space-2)}.site-header-tools{gap:var(--space-2);justify-content:space-between;align-items:center}.site-header-tools>.btn{order:2;min-height:32px;padding-inline:var(--space-2);border-color:transparent;background:transparent;color:var(--text-muted);font-size:.6875rem;font-weight:var(--fw-semibold)}.site-header-tools>.btn:hover{background:var(--gray-5)}.dropdown{order:3}.dropdown>.btn{min-height:34px;font-size:var(--fs-xs)}}@media (max-width: 400px){.site-header-brand{width:100%;min-width:0}.site-header-chapter{max-width:100%}}@media (max-width: 768px){.builder-row{grid-template-columns:minmax(0,1fr);gap:var(--space-2)}.builder-hint{grid-column:1}.builder-label{padding-top:0}.choice{flex:1 1 auto;min-width:88px}.send-row .btn{flex:1 1 auto}.send-note,.status-meaning{flex-basis:100%}}@media (max-width: 480px){.wire-block{padding:var(--space-3);font-size:var(--fs-xs)}.choice{padding-inline:var(--space-3)}}@media (max-width: 768px){.folder-map{grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.tree{padding:var(--space-3)}.explore-hint{font-size:var(--fs-xs)}.tree-role{flex-basis:100%;margin-left:0}.pending-cmd{padding:var(--space-3)}.pending-code,.pending-note{flex-basis:100%}}@media (max-width: 480px){.tree-row{font-size:var(--fs-xs)}.tree-child{font-size:.625rem}.map-detail-name{font-size:var(--fs-base)}}@media (max-width: 768px){.file-head{gap:var(--space-2)}.file-head .code-actions{width:100%}.file-head .code-actions .btn{flex:1 1 auto}.file-path{flex-basis:100%}}@media (max-width: 480px){.file-code{padding:var(--space-3);font-size:var(--fs-xs)}.file-tab{font-size:.625rem}}@media (max-width: 768px){.git-board{grid-template-columns:minmax(0,1fr)}.cmd-prompt,.cmd-input{flex-basis:100%}.cmd-run{flex:1 1 auto}.goal-hint-list,.cmd-help-what{flex-basis:100%}}@media (max-width: 480px){.cmd-output{padding:var(--space-3);font-size:.625rem;max-height:11rem}.git-area{padding:var(--space-3)}.goal-panel{padding:var(--space-3) var(--space-4)}.cmd-help-list{padding:var(--space-3)}.cmd-help-foot{padding:0 var(--space-3) var(--space-3)}.goal-hint-more{flex:1 1 auto}}@media (max-width: 1024px){.rest-matrix{grid-template-columns:minmax(7rem,1fr) repeat(4,minmax(0,1fr))}.trace-board{grid-template-columns:minmax(0,1fr)}}@media (max-width: 768px){.repo-board{grid-template-columns:minmax(0,1fr)}.repo-link{padding:var(--space-2) 0}.repo-link-arrow{display:inline-block;transform:rotate(90deg)}.host-board,.axis-board,.dockerfile-board,.render-board,.branch-split{grid-template-columns:minmax(0,1fr)}.fsm-states{grid-template-columns:repeat(2,minmax(0,1fr))}.rest-matrix{display:flex;flex-direction:column;gap:var(--space-3)}.rest-corner,.rest-col-head{display:none}.rest-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.rest-row-head{grid-column:1 / -1}.rest-cell{min-height:3.5rem}.trace-controls{gap:var(--space-2)}.trace-count{min-width:6rem}.repo-row-key,.trace-fact-key,.host-env-key,.img-part-label{flex-basis:100%}.final-step{gap:var(--space-1) var(--space-2)}.final-cmd{flex-basis:100%}}@media (max-width: 640px){.sql-table-wrap{overflow-x:auto}.sql-table{min-width:20rem}}@media (max-width: 480px){.repo-card,.host-card,.axis-card,.compose-map,.compose-net,.branch-board,.route-table,.trace-detail{padding:var(--space-3)}.fsm-states,.rest-row{grid-template-columns:minmax(0,1fr)}.dockerfile-code,.trace-data-body{padding:var(--space-3);font-size:.6875rem}.host-output{font-size:.625rem}.final-banner{padding:var(--space-4);font-size:var(--fs-lg)}.sql-table th,.sql-table td{padding:var(--space-2);font-size:var(--fs-xs)}.mini-screen{min-height:7.5rem;padding:var(--space-4) var(--space-3)}.mini-name{font-size:var(--fs-lg)}}@media (max-width: 768px){.role-hint{grid-column:1}.disclosure-summary,.disclosure-body{padding:var(--space-3)}.disclosure-note{flex-basis:100%}.disclosure-mark{margin-left:0}.termline-hint{flex-basis:100%}.why-line.is-problem{padding:var(--space-3) var(--space-4)}.one-thing{padding:var(--space-4)}.one-thing-text{font-size:var(--fs-md)}.remember-item{padding:var(--space-3) var(--space-4)}.code-focus{padding:var(--space-4) var(--space-3)}.code-focus-lines{font-size:var(--fs-xs)}.guided{padding:var(--space-3)}.guided-task{flex-basis:100%}.guided-actions .btn{flex:1 1 auto}.guided-cmd,.checkpoint-text{flex-basis:100%}.learn-note{flex-direction:column;align-items:flex-start}}@media (max-width: 480px){.role-hint{grid-column:1}.term{gap:var(--space-1)}.term-hint{font-size:.6875rem}.code-focus-lines{padding:var(--space-3);font-size:.6875rem}}@media (max-width: 768px){.status-ref-row{grid-template-columns:3.25rem minmax(0,1fr)}.status-ref-name,.status-ref-meaning,.status-ref-when{grid-column:2}.security-compare{grid-template-columns:minmax(0,1fr)}.security-callout,.primer{padding:var(--space-4)}.primer-what{flex-basis:100%}}@media (max-width: 480px){.status-ref{padding:var(--space-3)}.status-ref-row{padding:var(--space-2)}.security-code{padding:var(--space-2);font-size:.6875rem}}
