:root{--paper: oklch(.977 .004 255);--paper-2: oklch(.948 .006 255);--paper-3: oklch(.925 .008 255);--ink: oklch(.245 .035 262);--ink-soft: oklch(.395 .03 262);--muted: oklch(.505 .022 262);--brand: oklch(.43 .15 264);--brand-deep: oklch(.345 .13 264);--flag: oklch(.585 .205 28);--flag-ink: oklch(.505 .18 28);--good: oklch(.52 .11 150);--line: oklch(.885 .006 255);--line-2: oklch(.82 .01 255);--yellow: color-mix(in oklab, var(--flag) 16%, var(--paper));--yellow-border: var(--flag);--coral: var(--flag);--coral-soft: color-mix(in oklab, var(--flag) 14%, var(--paper));--code-line-height: 26px;--display: "Bricolage Grotesque", -apple-system, system-ui, "Segoe UI", sans-serif;--serif: "Spectral", Georgia, "Times New Roman", serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--ease: cubic-bezier(.16, 1, .3, 1);--pad: clamp(1.25rem, 5vw, 4rem)}*{box-sizing:border-box}html{min-width:320px;background:var(--paper)}body{min-width:320px;min-height:100vh;margin:0;background:radial-gradient(1100px 520px at 0% -8%,color-mix(in oklab,var(--brand) 12%,transparent),transparent 62%),radial-gradient(900px 420px at 100% 0%,color-mix(in oklab,var(--flag) 9%,transparent),transparent 58%),var(--paper);color:var(--ink);font-family:var(--serif);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-family:var(--display);font-weight:700;letter-spacing:-.02em;text-wrap:balance}button,textarea{font:inherit}button:focus-visible,textarea:focus-visible,a:focus-visible{outline:2.5px solid var(--brand);outline-offset:3px;border-radius:3px}.app-shell{min-height:100vh}.site-header{position:sticky;top:0;z-index:100;display:flex;align-items:center;height:60px;padding:0 var(--pad);border-bottom:1px solid var(--line);background:color-mix(in oklab,var(--paper) 86%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.brand{display:inline-flex;align-items:center;gap:.55rem;color:var(--ink);font-family:var(--display);font-size:1.18rem;font-weight:800;letter-spacing:-.03em;text-decoration:none}.brandmark{display:block;flex:none;width:1.7em;height:1.7em;border-radius:.42em}.header-chip{margin-left:.75rem;padding:.2rem .5rem;border:1px solid var(--line-2);border-radius:6px;color:var(--muted);font-family:var(--mono);font-size:.72rem;font-weight:500;white-space:nowrap}.header-github{margin-left:auto;color:var(--ink-soft);font-family:var(--display);font-size:.92rem;font-weight:500;text-decoration:none;transition:color .2s var(--ease),transform .2s var(--ease)}.header-github:hover{color:var(--ink);transform:translateY(-1px)}main{padding:clamp(1.6rem,4vw,2.8rem) var(--pad) 2.4rem}.intro{margin-bottom:1.8rem}.eyebrow{margin:0 0 .85rem;color:var(--flag-ink);font-family:var(--mono);font-size:.8rem;letter-spacing:.01em}.intro h1{max-width:18ch;margin:0;font-size:clamp(2.4rem,5.4vw,4.4rem);font-weight:800;letter-spacing:-.025em;line-height:1.04}.lede{max-width:48ch;margin:1.1rem 0 0;color:var(--ink-soft);font-size:clamp(1.12rem,.7vw + 1rem,1.38rem);line-height:1.5}.intro-points{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;max-width:920px;margin:1.4rem 0 0;padding:0;list-style:none}.intro-points li{padding:.9rem 1rem;border:1px solid var(--line-2);border-radius:12px;background:color-mix(in oklab,var(--paper) 78%,transparent);box-shadow:0 1px 0 var(--line);color:var(--ink-soft);font-size:.98rem;line-height:1.45}.intro-points b{display:block;margin-bottom:.2rem;color:var(--ink);font-family:var(--display);font-weight:700}.intro-points code{font-family:var(--mono);font-size:.86em}.example-row{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem;margin:0 0 1.15rem}.example-label{margin-right:.2rem;color:var(--muted);font-family:var(--mono);font-size:.74rem;letter-spacing:.04em;text-transform:uppercase}.example-chip{padding:.42rem .75rem;border:1px solid var(--line-2);border-radius:999px;background:color-mix(in oklab,var(--paper) 80%,transparent);color:var(--ink-soft);cursor:pointer;font-family:var(--display);font-size:.88rem;font-weight:600;transition:border-color .25s var(--ease),background .25s var(--ease),color .25s var(--ease),transform .25s var(--ease)}.example-chip:hover{border-color:var(--brand);color:var(--ink);transform:translateY(-1px)}.example-chip.selected{border-color:var(--ink);background:var(--ink);color:var(--paper)}.readout{display:grid;grid-template-rows:auto minmax(520px,1fr);min-height:calc(100vh - 280px);overflow:hidden;border:1px solid var(--line-2);border-radius:16px;background:var(--paper);box-shadow:0 1px 0 var(--line),0 26px 55px -34px #141b2973}.readout-head{display:flex;flex-wrap:wrap;align-items:center;gap:.8rem;padding:.85rem 1.2rem;border-bottom:1px solid var(--line);background:var(--paper-2);color:var(--muted);font-family:var(--mono);font-size:.78rem}.readout-head .file{color:var(--ink-soft)}.count-chip{padding:.12rem .45rem;border:1px solid var(--line-2);border-radius:6px}.count-chip.over-limit{border-color:color-mix(in oklab,var(--flag) 45%,var(--line-2));color:var(--flag-ink)}.readout-head .state{display:inline-flex;align-items:center;gap:.45rem;margin-left:auto}.tdot{width:.5rem;height:.5rem;border-radius:50%;background:var(--flag)}.tdot.live{background:var(--good)}.workspace{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr);min-height:0}.workspace-column{display:flex;min-width:0;min-height:0;flex-direction:column;padding:1.15rem 1.3rem 1.3rem}.editor-column{padding-right:1.35rem}.explanation-column{border-left:1px solid var(--line);background:var(--paper-2)}.section-heading-row{display:flex;align-items:baseline;justify-content:space-between;min-height:34px;margin-bottom:12px}.section-heading-row h2{margin:0;font-size:1.15rem;font-weight:700;letter-spacing:-.02em}.line-count,.provider-name{color:var(--muted);font-family:var(--mono);font-size:.74rem;font-weight:500}.line-count.over-limit{color:var(--flag-ink);font-weight:600}.editor-frame{display:flex;flex:1;min-height:420px;flex-direction:column;overflow:hidden;border:1px solid var(--line-2);border-radius:14px;background:var(--paper);box-shadow:0 1px 0 var(--line)}.editor-chrome{display:flex;flex:none;align-items:center;gap:.4rem;padding:.65rem .9rem;border-bottom:1px solid var(--line);background:var(--paper-2);color:var(--muted);font-family:var(--mono);font-size:.72rem}.editor-body{display:grid;grid-template-columns:52px minmax(0,1fr);min-height:0;flex:1}.editor-chrome i{width:.58rem;height:.58rem;border-radius:50%;background:var(--line-2)}.editor-chrome i:nth-child(1){background:color-mix(in oklab,var(--flag) 70%,var(--paper))}.editor-chrome i:nth-child(2){background:color-mix(in oklab,var(--good) 55%,var(--paper))}.editor-chrome i:nth-child(3){background:color-mix(in oklab,var(--brand) 45%,var(--paper))}.editor-chrome span{margin-left:.35rem}.gutter-window{position:relative;z-index:3;overflow:hidden;padding-top:16px;border-right:1px solid var(--line);background:var(--paper-2)}.gutter-lines{will-change:transform}.gutter-line{height:var(--code-line-height);padding-right:14px;color:var(--muted);font-family:var(--mono);font-size:13px;line-height:var(--code-line-height);text-align:right}.code-window{position:relative;min-width:0;overflow:hidden}.code-backdrop,.code-window textarea{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:16px 18px;border:0;font-family:var(--mono);font-size:13.5px;font-variant-ligatures:none;line-height:var(--code-line-height);tab-size:4;white-space:pre}.code-backdrop{min-width:max-content;overflow:visible;color:var(--ink);pointer-events:none;will-change:transform}.code-window textarea{z-index:2;resize:none;overflow:auto;background:transparent;caret-color:var(--ink);color:transparent;-webkit-text-fill-color:transparent}.code-window textarea::selection{background:color-mix(in oklab,var(--brand) 22%,transparent)}.code-line{position:relative;min-width:max-content;height:var(--code-line-height);margin:0 -18px;padding:0 18px;line-height:var(--code-line-height)}.code-line.selected{background:var(--yellow);box-shadow:inset 3px 0 var(--flag)}.code-line.has-error{background:var(--coral-soft);box-shadow:inset 3px 0 var(--flag)}.token-keyword,.token-preprocessor{color:var(--brand);font-weight:500}.token-string{color:var(--good)}.token-number{color:var(--flag-ink)}.token-comment{color:var(--muted);font-style:italic}.editor-actions{display:flex;align-items:center;gap:18px;margin-top:18px}.primary-button{display:inline-flex;align-items:center;justify-content:center;min-width:210px;min-height:48px;padding:0 1.15rem;border:1px solid transparent;border-radius:10px;background:var(--ink);color:var(--paper);cursor:pointer;font-family:var(--display);font-size:.96rem;font-weight:600;letter-spacing:-.01em;transition:background .25s var(--ease),transform .25s var(--ease)}.primary-button:hover:not(:disabled){background:var(--brand-deep);transform:translateY(-1px)}.primary-button:disabled{cursor:not-allowed;opacity:.56}.spinner{width:16px;height:16px;margin-right:9px;border:2px solid color-mix(in oklab,var(--paper) 42%,transparent);border-top-color:var(--paper);border-radius:50%;animation:spin .8s linear infinite}.privacy-note{color:var(--muted);font-family:var(--mono);font-size:.74rem}.upload-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 1.05rem;border:1px solid var(--line-2);border-radius:10px;background:transparent;color:var(--ink);cursor:pointer;font-family:var(--display);font-size:.96rem;font-weight:600;transition:border-color .25s var(--ease),transform .25s var(--ease)}.upload-button:hover{border-color:var(--ink);transform:translateY(-1px)}.inline-error{display:grid;gap:3px;margin-top:16px;padding:12px 14px;border-left:3px solid var(--flag);background:var(--coral-soft);color:var(--flag-ink);font-size:.95rem;line-height:1.5}.inline-error strong{font-family:var(--display);font-weight:700}.program-summary{margin:0 0 14px;padding:1.25rem 1.3rem;border:1px solid var(--line-2);border-left:3px solid var(--brand);border-radius:14px;background:var(--paper);box-shadow:0 1px 0 var(--line);color:var(--ink);font-size:clamp(1.12rem,.7vw + .95rem,1.32rem);line-height:1.56}.lesson-rail{position:relative;display:grid;flex:1;gap:10px;min-height:0;overflow:auto;padding:2px 2px 8px 20px;scrollbar-color:var(--line-2) transparent;scrollbar-width:thin}.lesson-rail:before{position:absolute;top:16px;bottom:20px;left:8px;width:1px;background:var(--line-2);content:""}.explanation-row{position:relative;display:grid;grid-template-columns:112px minmax(0,1fr);align-items:stretch;min-height:86px;padding:0;overflow:visible;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);cursor:pointer;text-align:left;transition:border-color .25s var(--ease),background .25s var(--ease),transform .25s var(--ease)}.explanation-row:hover{border-color:var(--line-2);transform:translate(2px)}.explanation-row.selected{border-color:var(--brand);background:color-mix(in oklab,var(--brand) 8%,var(--paper))}.rail-dot{position:absolute;top:50%;left:-20px;z-index:2;width:12px;height:12px;border:2px solid var(--line-2);border-radius:50%;background:var(--paper);transform:translate(-50%,-50%)}.explanation-row.selected .rail-dot{width:14px;height:14px;border-color:var(--brand);background:var(--brand)}.line-label{display:flex;align-items:center;padding:16px;border-right:1px solid var(--line);color:var(--brand);font-family:var(--mono);font-size:.78rem;font-weight:600;white-space:nowrap}.explanation-sentence{display:flex;align-items:center;padding:16px 18px;font-size:1.02rem;line-height:1.5}.empty-state{display:grid;justify-items:start;min-height:300px;padding:60px 20px;border-top:1px solid var(--line);color:var(--muted)}.empty-cursor{display:block;width:3px;height:28px;margin-bottom:20px;background:var(--brand);animation:blink 1.1s steps(2,start) infinite}.empty-state h3{margin:0 0 8px;color:var(--ink);font-size:1.35rem}.empty-state p{margin:0;font-size:1rem;line-height:1.5}.loading-state{display:grid;gap:12px}.loading-state p{color:var(--muted);font-family:var(--mono);font-size:.78rem}.skeleton{border-radius:12px;background:linear-gradient(90deg,var(--paper-2) 25%,var(--paper) 50%,var(--paper-2) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}.summary-skeleton{height:98px}.row-skeleton{height:86px;margin-left:20px}.row-skeleton.short{width:82%}.site-footer{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem .15rem;padding:1.6rem var(--pad) 2.2rem;border-top:1px solid var(--line);background:color-mix(in oklab,var(--paper-2) 70%,transparent);color:var(--muted);font-family:var(--mono);font-size:.74rem}.site-footer a{color:var(--ink-soft);text-decoration:none}.site-footer a:hover{color:var(--brand)}.footer-sep{margin:0 .45rem;color:var(--line-2)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes blink{50%{opacity:0}}@keyframes shimmer{to{background-position:-200% 0}}@media(max-width:930px){main{padding-bottom:60px}.intro-points{grid-template-columns:1fr}.readout{grid-template-rows:auto auto}.workspace{grid-template-columns:1fr}.editor-column{padding-right:1.15rem}.explanation-column{border-top:1px solid var(--line);border-left:0}.editor-frame{min-height:380px;height:54vh}.lesson-rail{max-height:none;overflow:visible}}@media(max-width:600px){.site-header{height:54px;padding:0 18px}main{padding:22px 18px 44px}.intro{margin-bottom:24px}.intro h1{font-size:2.3rem}.lede{max-width:340px;font-size:1.05rem;line-height:1.5}.editor-frame{min-height:350px;height:54vh}.editor-body{grid-template-columns:42px minmax(0,1fr)}.code-backdrop,.code-window textarea{padding-right:12px;padding-left:12px;font-size:13px}.code-line{margin:0 -12px;padding:0 12px}.editor-actions{align-items:flex-start;flex-direction:column;gap:10px}.primary-button,.upload-button{width:100%}.program-summary{padding:17px}.explanation-row{grid-template-columns:1fr}.line-label{padding:12px 15px 7px;border-right:0}.explanation-sentence{padding:4px 15px 15px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
