.grid{position:relative;width:100%;height:100%;min-height:0;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;font-family:var(--font-mono);font-size:var(--step--1)}.grid__viewport{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto;overscroll-behavior:contain}.grid__spacer{position:relative;pointer-events:none}.grid__cells,.grid__colhead-track,.grid__gutter,.grid__corner{position:absolute;top:0;left:0;will-change:transform}.grid__cells{display:grid;z-index:1;background-image:linear-gradient(to right,var(--line) 1px,transparent 1px),linear-gradient(to bottom,var(--line) 1px,transparent 1px)}.grid__colhead-track{width:100%;overflow:hidden;background:var(--bg-2);border-bottom:1px solid var(--line-strong);z-index:2}.grid__gutter{height:100%;overflow:hidden;background:var(--bg-2);border-right:1px solid var(--line-strong);z-index:2}.grid__corner{background:var(--bg-2);border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);z-index:3}.grid__colheadPool,.grid__gutterPool{position:absolute;top:0;left:0;will-change:transform}.grid__colheadPool{display:grid;background-image:linear-gradient(to right,var(--line) 1px,transparent 1px)}.grid__gutterPool{display:grid;background-image:linear-gradient(to bottom,var(--line) 1px,transparent 1px)}.gcell{height:var(--rh, 28px);display:flex;align-items:center;padding:0 var(--sp-2);color:var(--text-0);background:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;contain:strict}.gcell--num{justify-content:flex-end;font-variant-numeric:tabular-nums}.grid__colhead{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-2);font-weight:600}.grid__rownum{display:flex;align-items:center;justify-content:flex-end;padding:0 var(--sp-2);color:var(--text-2);font-variant-numeric:tabular-nums}.grid__range,.grid__active,.grid__fill{position:absolute;top:0;left:0;display:none;will-change:transform;pointer-events:none}.grid__range{background:var(--select-fill);z-index:1}.grid__active{border:2px solid var(--select);box-shadow:0 0 0 1px color-mix(in oklab,var(--select) 35%,transparent);z-index:2}.grid__fill{width:9px;height:9px;background:var(--select);border:1.5px solid var(--bg-1);border-radius:1px;cursor:crosshair;pointer-events:auto;z-index:4}.grid__viewport:focus-visible{outline:none}.grid__editor{position:absolute;z-index:5;box-sizing:border-box;padding:0 var(--sp-2);font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-0);background:var(--bg-1);border:2px solid var(--accent);outline:none;border-radius:2px}.app{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--bg-0)}.topbar{display:flex;align-items:center;gap:var(--sp-5);padding:var(--sp-3) var(--sp-4);background:var(--bg-2);border-bottom:1px solid var(--line-strong);flex:0 0 auto}.brand{display:flex;align-items:center;gap:var(--sp-2)}.brand__mark{display:grid;grid-template-columns:repeat(2,1fr);gap:2px;width:18px;height:18px}.brand__mark i{border-radius:2px;background:var(--line-strong)}.brand__mark i:first-child{background:var(--accent)}.brand__name{font-weight:640;letter-spacing:-.02em}.brand__tag{color:var(--text-2);font-size:var(--step--1);padding-left:var(--sp-2);border-left:1px solid var(--line)}.stats{display:flex;gap:var(--sp-5);margin-left:auto}.stat{display:flex;flex-direction:column;line-height:1.15}.stat__label{font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:var(--text-2)}.stat__value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--step-0);color:var(--text-0)}.stat__value--accent{color:var(--accent)}.theme-toggle{width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-1);cursor:pointer;transition:border-color var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out)}.theme-toggle:hover{border-color:var(--line-strong);transform:translateY(-1px)}.stage{flex:1 1 auto;min-height:0;padding:var(--sp-3)}.statusbar{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-2) var(--sp-4);background:var(--bg-2);border-top:1px solid var(--line-strong);font-size:var(--step--1);color:var(--text-1);flex:0 0 auto}.statusbar b{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--accent);font-weight:600}.statusbar__hint{color:var(--text-2)}.statusbar__link{margin-left:auto;color:var(--text-1);text-decoration:none}.statusbar__link:hover{color:var(--accent)}@media(max-width:720px){.stats{display:none}}:root{--bg-0: #0a0c10;--bg-1: #101319;--bg-2: #171b23;--bg-3: #1f242e;--line: #262c38;--line-strong: #333b4a;--text-0: #e7ecf3;--text-1: #aab4c4;--text-2: #6b7688;--accent: #c6f24e;--accent-ink: #0a0c10;--accent-dim: rgba(198, 242, 78, .16);--select: #4c8dff;--select-fill: rgba(76, 141, 255, .14);--select-ring: rgba(76, 141, 255, .55);--danger: #ff6b6b;--warn: #ffcb66;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Code", "Roboto Mono", Menlo, Consolas, monospace;--step--1: clamp(.78rem, .76rem + .1vw, .83rem);--step-0: clamp(.9rem, .87rem + .15vw, 1rem);--step-1: clamp(1.1rem, 1rem + .5vw, 1.35rem);--step-2: clamp(1.5rem, 1.2rem + 1.4vw, 2.4rem);--step-3: clamp(2.4rem, 1.6rem + 3.6vw, 4.8rem);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 40px;--radius: 10px;--radius-sm: 6px;--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-1: .14s;--dur-2: .26s;color-scheme:dark}:root[data-theme=light]{--bg-0: #f4f5f7;--bg-1: #ffffff;--bg-2: #eef0f3;--bg-3: #e5e8ec;--line: #dfe3e9;--line-strong: #c7cdd6;--text-0: #171b23;--text-1: #454e5c;--text-2: #7a8494;--accent: #5b8c00;--accent-ink: #ffffff;--accent-dim: rgba(91, 140, 0, .12);--select: #2f6bff;--select-fill: rgba(47, 107, 255, .1);--select-ring: rgba(47, 107, 255, .45);color-scheme:light}*,*:before,*:after{box-sizing:border-box}*{margin:0}html,body,#root{height:100%}body{font-family:var(--font-sans);font-size:var(--step-0);line-height:1.5;color:var(--text-0);background:var(--bg-0);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,select{font:inherit;color:inherit}:where(a){color:inherit}::selection{background:var(--accent-dim)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
