:root{--bg: #f6f7fb;--bg-soft: #eef0f7;--card: #ffffff;--card-hover: #fafbff;--ink: #16181d;--ink-soft: #454a54;--muted: #6b7280;--line: #e3e6ee;--line-strong: #cdd2e0;--brand: #4f46e5;--brand-hover: #4338ca;--brand-soft: #eef2ff;--brand-ink: #3730a3;--green: #15803d;--green-bg: #dcfce7;--amber: #b45309;--amber-bg: #fef3c7;--red: #b91c1c;--red-bg: #fee2e2;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 20px;--s6: 24px;--s8: 32px;--s10: 40px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px;--r-full: 999px;--shadow-sm: 0 1px 2px rgba(16, 20, 40, .06);--shadow-md: 0 2px 4px rgba(16, 20, 40, .05), 0 8px 20px rgba(16, 20, 40, .06);--shadow-lg: 0 12px 32px rgba(16, 20, 40, .14);--ring: 0 0 0 3px color-mix(in srgb, var(--brand) 28%, transparent);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono: ui-monospace, "Cascadia Code", "SF Mono", Menlo, Consolas, monospace;--ease: cubic-bezier(.2, .7, .3, 1)}@media (prefers-color-scheme: dark){:root{--bg: #0e1016;--bg-soft: #161922;--card: #171a23;--card-hover: #1d212c;--ink: #eceef4;--ink-soft: #b9bfcd;--muted: #8b93a5;--line: #262b38;--line-strong: #39404f;--brand: #7c74ff;--brand-hover: #9089ff;--brand-soft: #211f3d;--brand-ink: #c3bfff;--green: #4ade80;--green-bg: #10281a;--amber: #fbbf24;--amber-bg: #2c2008;--red: #f87171;--red-bg: #2c1315;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 2px 4px rgba(0, 0, 0, .3), 0 8px 20px rgba(0, 0, 0, .35);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .5)}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body{max-width:100%;overflow-x:hidden}body{margin:0;font-family:var(--font);font-size:15px;line-height:1.55;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--brand);text-decoration:none;font-weight:500}a:hover{text-decoration:underline}:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--r-sm)}.container{max-width:1040px;margin:var(--s6) auto var(--s10);padding:0 var(--s5)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s6);margin-bottom:var(--s4);box-shadow:var(--shadow-sm)}.stack>*+*{margin-top:var(--s3)}.center{text-align:center}.muted{color:var(--muted)}.row{display:flex;gap:var(--s3);flex-wrap:wrap}.row>*{flex:1;min-width:180px}h1{font-size:clamp(21px,2.6vw,26px);font-weight:700;letter-spacing:-.02em;margin:0 0 var(--s4)}h2{font-size:17px;font-weight:650;letter-spacing:-.01em;margin:0 0 var(--s3)}h3{font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:var(--s5) 0 var(--s2)}.hero h1{font-size:clamp(24px,3.4vw,32px)}.lede{color:var(--ink-soft);font-size:16px;max-width:62ch}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:var(--s2);padding:var(--s3) var(--s5);background:color-mix(in srgb,var(--card) 82%,transparent);-webkit-backdrop-filter:saturate(1.6) blur(12px);backdrop-filter:saturate(1.6) blur(12px);border-bottom:1px solid var(--line)}.topbar .brand{font-weight:750;font-size:16px;letter-spacing:-.02em;margin-right:var(--s3);color:var(--ink)}.navpanel{display:flex;align-items:center;gap:var(--s2);flex:1;min-width:0}.topbar nav{display:flex;gap:var(--s1);flex-wrap:wrap}.navtoggle{display:none}.burger{display:block;position:relative;width:18px;height:14px}.burger i{position:absolute;left:0;width:100%;height:2px;border-radius:2px;background:currentColor;transition:transform .2s var(--ease),opacity .15s var(--ease)}.burger i:nth-child(1){top:0}.burger i:nth-child(2){top:6px}.burger i:nth-child(3){top:12px}.burger.x i:nth-child(1){transform:translateY(6px) rotate(45deg)}.burger.x i:nth-child(2){opacity:0}.burger.x i:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.topbar nav a{padding:var(--s2) var(--s3);border-radius:var(--r-sm);color:var(--ink-soft);font-size:14px;font-weight:500;transition:background .15s var(--ease),color .15s var(--ease)}.topbar nav a:hover{background:var(--bg-soft);color:var(--ink);text-decoration:none}.topbar nav a.active{background:var(--brand-soft);color:var(--brand-ink)}.topbar .spacer{flex:1}.topbar .who{color:var(--muted);font-size:13px;white-space:nowrap}@media (max-width: 720px){.topbar{flex-wrap:wrap;row-gap:var(--s2)}.mobile-only{display:initial}.navtoggle{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:0}.navpanel{display:none;flex-direction:column;align-items:stretch;gap:var(--s1);flex-basis:100%;padding:var(--s2) 0 var(--s3);border-top:1px solid var(--line);margin-top:var(--s2)}.navpanel.open{display:flex}.navpanel nav{flex-direction:column;gap:var(--s1)}.navpanel .spacer{display:none}.navpanel .who{display:block;padding:var(--s2) var(--s3) 0;border-top:1px solid var(--line);margin-top:var(--s1)}.navpanel>button{margin-top:var(--s2)}}@media (min-width: 721px){.mobile-only{display:none}}label{display:block;font-size:13px;font-weight:550;color:var(--ink-soft);margin-bottom:var(--s1)}input,select,textarea{width:100%;padding:10px var(--s3);border:1px solid var(--line-strong);border-radius:var(--r-sm);font-family:inherit;font-size:14px;background:var(--card);color:var(--ink);transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}input::placeholder,textarea::placeholder{color:var(--muted);opacity:.8}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:var(--ring)}textarea{resize:vertical;min-height:76px;line-height:1.55}input[type=checkbox]{width:auto;margin-right:var(--s1);accent-color:var(--brand)}button{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);background:var(--brand);color:#fff;border:1px solid transparent;border-radius:var(--r-sm);padding:10px var(--s4);font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;box-shadow:var(--shadow-sm);transition:background .15s var(--ease),transform .08s var(--ease),box-shadow .15s var(--ease)}button:hover:not(:disabled){background:var(--brand-hover)}button:active:not(:disabled){transform:translateY(1px);box-shadow:none}button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}button.ghost{background:var(--card);color:var(--ink);border-color:var(--line-strong)}button.ghost:hover:not(:disabled){background:var(--bg-soft);border-color:var(--muted)}button.danger{background:var(--red)}button.ghost.danger{background:var(--card);color:var(--red);border-color:var(--red)}button.block{width:100%}a.btn-link{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);background:var(--brand);color:#fff;border:1px solid transparent;border-radius:var(--r-sm);padding:10px var(--s4);font-size:14px;font-weight:600;min-height:42px;box-shadow:var(--shadow-sm);transition:background .15s var(--ease),transform .08s var(--ease)}a.btn-link:hover{background:var(--brand-hover);color:#fff;text-decoration:none}a.btn-link:active{transform:translateY(1px)}a.btn-link.ghost{background:var(--card);color:var(--ink);border-color:var(--line-strong)}a.btn-link.ghost:hover{background:var(--bg-soft);color:var(--ink)}.btnrow{display:flex;gap:var(--s2);margin-top:var(--s4);flex-wrap:wrap}.err,.ok-banner{padding:var(--s3) var(--s4);border-radius:var(--r-sm);font-size:14px;border:1px solid transparent}.err{background:var(--red-bg);color:var(--red);border-color:color-mix(in srgb,var(--red) 25%,transparent)}.ok-banner{background:var(--green-bg);color:var(--green);border-color:color-mix(in srgb,var(--green) 25%,transparent)}.ok{color:var(--green);font-weight:600}.bad{color:var(--red);font-weight:600}.pill{display:inline-flex;align-items:center;gap:var(--s1);padding:4px 11px;border-radius:var(--r-full);font-size:12px;font-weight:600;white-space:nowrap;background:var(--bg-soft);color:var(--ink-soft)}.pill.run{background:var(--amber-bg);color:var(--amber)}.pill.gate{background:var(--brand-soft);color:var(--brand-ink)}.pill.done{background:var(--green-bg);color:var(--green)}.pill.err{background:var(--red-bg);color:var(--red)}.spinner{width:14px;height:14px;border:2px solid color-mix(in srgb,currentColor 25%,transparent);border-top-color:currentColor;border-radius:50%;display:inline-block;animation:spin .7s linear infinite;flex:none}@keyframes spin{to{transform:rotate(360deg)}}.progressbar{height:10px;border-radius:var(--r-full);background:var(--bg-soft);overflow:hidden;margin:var(--s4) 0;border:1px solid var(--line)}.progressbar .fill{height:100%;border-radius:var(--r-full);background:linear-gradient(90deg,var(--brand),var(--green));transition:width .6s var(--ease)}.booklist{list-style:none;padding:0;margin:0}.booklist li{display:flex;align-items:center;gap:var(--s3);padding:var(--s3);border-radius:var(--r-md);border:1px solid transparent;transition:background .15s var(--ease),border-color .15s var(--ease)}.booklist li+li{margin-top:var(--s1)}.booklist li:hover{background:var(--card-hover);border-color:var(--line)}.booklist li.active{background:var(--brand-soft);border-color:var(--brand)}.booklist .name{font-weight:600;flex:1;min-width:0;overflow-wrap:anywhere}.booklist .name a{color:var(--ink)}.booklist .meta{font-size:13px;color:var(--muted)}.empty{text-align:center;padding:var(--s8) var(--s4);color:var(--muted)}.empty .glyph{font-size:40px;display:block;margin-bottom:var(--s2)}.tabs{display:flex;gap:var(--s1);flex-wrap:wrap;padding:var(--s1);margin-bottom:var(--s5);background:var(--bg-soft);border-radius:var(--r-md)}.tabs button{background:transparent;color:var(--ink-soft);border:0;box-shadow:none;padding:7px var(--s3);font-size:13.5px;font-weight:550;border-radius:var(--r-sm)}.tabs button:hover:not(.active){background:var(--card);color:var(--ink)}.tabs button.active{background:var(--card);color:var(--ink);box-shadow:var(--shadow-sm)}.typegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:var(--s3);margin-top:var(--s4)}.typegrid.big{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}button.typecard{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s5) var(--s4);text-align:center;cursor:pointer;color:inherit;font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:var(--s2);box-shadow:var(--shadow-sm);transition:transform .14s var(--ease),box-shadow .14s var(--ease),border-color .14s var(--ease)}button.typecard:hover:not(:disabled){transform:translateY(-3px);border-color:var(--brand);box-shadow:var(--shadow-md);background:var(--card-hover)}button.typecard.selected{border-color:var(--green);box-shadow:var(--shadow-md)}.typecard .emoji{font-size:34px;line-height:1}.typegrid.big .emoji{font-size:44px}.typecard .title{font-weight:650;font-size:15px;letter-spacing:-.01em}.typecard .tagline{font-size:13px;color:var(--muted);line-height:1.45}.typecard .badge{font-size:11px;background:var(--bg-soft);color:var(--ink-soft);border-radius:var(--r-full);padding:2px 10px}.steps{display:flex;align-items:center;gap:var(--s2);margin-bottom:var(--s5)}.steps .dot{width:26px;height:26px;display:grid;place-items:center;border-radius:50%;font-size:12px;font-weight:650;background:var(--bg-soft);color:var(--muted);flex:none}.steps .dot.on{background:var(--brand);color:#fff}.steps .dot.done{background:var(--green-bg);color:var(--green)}.steps .bar{height:2px;flex:1;background:var(--line);border-radius:var(--r-full)}.steps .bar.on{background:var(--brand)}pre.report{background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s4);font-family:var(--mono);font-size:12.5px;line-height:1.6;white-space:pre-wrap;overflow-x:auto;margin:0;color:var(--ink-soft)}.cover{max-width:340px;width:100%;border-radius:var(--r-md);box-shadow:var(--shadow-lg);display:block}iframe.pdf{width:100%;height:72vh;border:1px solid var(--line);border-radius:var(--r-md);background:var(--card)}code{background:var(--bg-soft);font-family:var(--mono);padding:2px 6px;border-radius:5px;font-size:12.5px}.puzzle,.chapter{margin-bottom:var(--s5)}.puzzle .theme,.chapter .theme{font-weight:650;margin-bottom:var(--s2)}.words{display:flex;flex-wrap:wrap;gap:var(--s1)}.words span{background:var(--bg-soft);border:1px solid var(--line);padding:3px 10px;border-radius:var(--r-sm);font-size:13px;font-family:var(--mono)}.chapter-body{font-size:14.5px;color:var(--ink-soft)}.chapter-body p{margin:0 0 var(--s2);line-height:1.7}details summary{cursor:pointer;margin:var(--s2) 0;font-size:14px;-webkit-user-select:none;user-select:none}details summary:hover{color:var(--ink)}.login-wrap{max-width:380px;margin:12vh auto;padding:0 var(--s5)}.login-wrap .card{padding:var(--s8) var(--s6)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0c148c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:50;padding:var(--s4)}.modal{background:var(--card);border:1px solid var(--line);border-radius:var(--r-xl);padding:var(--s6);width:440px;max-width:100%;box-shadow:var(--shadow-lg)}.modal.wide{width:900px;max-height:88vh;overflow-y:auto}.profiles-layout{display:flex;gap:var(--s4);align-items:flex-start}.profiles-list{width:280px;flex:0 0 280px}.profiles-editor{flex:1;min-width:0}.profiles-list .booklist li{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s1)}.profiles-list .booklist .name{overflow-wrap:anywhere}.profiles-list .profile-meta{text-align:left;white-space:nowrap}.profiles-list>.btnrow{margin-bottom:var(--s3)}textarea.yaml{width:100%;min-height:52vh;font-family:var(--mono);font-size:12.5px;line-height:1.6;white-space:pre;overflow-wrap:normal;overflow-x:auto;margin-top:var(--s2);-moz-tab-size:2;tab-size:2}textarea.yaml.short{min-height:240px}.validate-row{margin-top:var(--s2);font-size:13px;min-height:20px}.builder-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s5);margin-top:var(--s3)}.builder-grid h4{margin:0 0 var(--s2);font-size:14px}.sample-box{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s3);background:var(--bg-soft)}pre.grid-preview{font-family:var(--mono);font-size:13px;line-height:1.45;letter-spacing:2px;margin:var(--s2) 0;white-space:pre;overflow-x:auto}.save-row{margin-top:var(--s4);border-top:1px solid var(--line);padding-top:var(--s3)}h2 button.ghost{font-size:13px;padding:4px var(--s3);vertical-align:middle}@media (max-width: 720px){.profiles-layout{flex-direction:column}.profiles-list{width:100%;flex-basis:auto}.profiles-editor{width:100%}.builder-grid{grid-template-columns:1fr}.container{margin-top:var(--s4);padding:0 var(--s4)}.card{padding:var(--s5) var(--s4)}}@media (max-width: 560px){body{font-size:16px}.row>*{flex:1 1 100%;min-width:0}.typegrid,.typegrid.big{grid-template-columns:1fr 1fr;gap:var(--s2)}.typecard{padding:var(--s4) var(--s2)}.typecard .emoji,.typegrid.big .emoji{font-size:30px}.typecard .tagline{font-size:12px}button,a.btn-link{padding:12px var(--s4);min-height:44px}.topbar nav{width:100%}.topbar nav a{display:flex;align-items:center;min-height:44px;padding:var(--s2) var(--s3)}.booklist li{padding:var(--s3) var(--s2)}.booklist .name a{display:block;padding:var(--s1) 0;min-height:32px}.tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}.tabs button{white-space:nowrap;min-height:40px}.btnrow>*,.btnrow>*>button{flex:1 1 100%}.booklist li{flex-wrap:wrap;row-gap:var(--s1)}.booklist .name{flex:1 1 100%}iframe.pdf{height:60vh}.login-wrap{margin:6vh auto}.modal{padding:var(--s5) var(--s4);border-radius:var(--r-lg)}textarea.yaml{min-height:40vh;font-size:12px}pre.report{font-size:11.5px;padding:var(--s3)}.landing-section{padding:var(--s8) 0}.landing .hero{padding:var(--s5) 0 var(--s8);gap:var(--s6)}.landing .hero-art{min-height:200px}.landing-cta{padding:var(--s8) var(--s4)}.landing-foot{flex-direction:column;align-items:flex-start}}.landing{max-width:1120px;margin:0 auto;padding:0 var(--s4) var(--s10)}.landing-nav{display:flex;align-items:center;gap:var(--s3);padding:var(--s4) 0}.landing-nav .brand{font-weight:750;font-size:clamp(17px,4.5vw,20px);letter-spacing:-.02em}.landing-nav .spacer{flex:1}.landing .hero{display:grid;gap:var(--s8);align-items:center;padding:var(--s8) 0 var(--s10)}.eyebrow{display:inline-block;font-size:12px;font-weight:650;letter-spacing:.1em;text-transform:uppercase;color:var(--brand-ink);background:var(--brand-soft);padding:5px 12px;border-radius:var(--r-full);margin-bottom:var(--s4)}.landing .hero h1{font-size:clamp(30px,7.5vw,54px);line-height:1.08;letter-spacing:-.035em;margin:0 0 var(--s4);text-wrap:balance}.section-title,.landing-cta h2{text-wrap:balance}.landing .hero .lede{font-size:clamp(15px,4vw,18px);margin:0 0 var(--s6)}.landing .hero .fineprint{font-size:13px;margin-top:var(--s5)}.landing .hero-art{display:flex;justify-content:center;align-items:flex-end;gap:clamp(-28px,-4vw,-10px);min-height:240px;perspective:900px}.bookshape{width:clamp(110px,26vw,150px);aspect-ratio:2 / 3;border-radius:3px 8px 8px 3px;box-shadow:var(--shadow-lg);display:grid;place-items:center;padding:var(--s3);text-align:center;color:#fff;font-weight:700;font-size:clamp(11px,2.6vw,14px);letter-spacing:.08em;line-height:1.5;border-left:5px solid rgba(0,0,0,.25)}.bookshape.b1{background:linear-gradient(150deg,#1e3a8a,#0b1220 70%);transform:rotate(-8deg) translateY(10px)}.bookshape.b2{background:linear-gradient(150deg,#b45309,#7c2d12 70%);transform:rotate(2deg) translateY(-14px) scale(1.06);z-index:2}.bookshape.b3{background:linear-gradient(150deg,#0f766e,#052e2b 70%);transform:rotate(9deg) translateY(12px)}.landing-section{padding:var(--s10) 0}.section-title{font-size:clamp(22px,5.5vw,32px);letter-spacing:-.025em;margin:0 0 var(--s3);text-align:center}.section-lede{color:var(--ink-soft);max-width:60ch;margin:0 auto var(--s8);text-align:center;font-size:clamp(15px,3.8vw,16px)}.steplist,.featuregrid,.shelfgrid{display:grid;grid-template-columns:1fr;gap:var(--s4);margin-top:var(--s6)}.stepcard,.featurecard,.shelfcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s5);box-shadow:var(--shadow-sm)}.stepcard{position:relative;padding-top:var(--s6)}.stepnum{position:absolute;top:var(--s4);right:var(--s4);width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:var(--brand-soft);color:var(--brand-ink);font-size:12px;font-weight:700}.stepicon,.featureicon{font-size:28px;line-height:1;margin-bottom:var(--s2)}.stepcard h3,.featurecard h3{font-size:16px;font-weight:650;text-transform:none;letter-spacing:-.01em;color:var(--ink);margin:0 0 var(--s2)}.stepcard p,.featurecard p{margin:0;color:var(--ink-soft);font-size:14.5px;line-height:1.6}.shelfcard{display:flex;flex-direction:column;align-items:center;gap:var(--s1);text-align:center;font-size:14px}.shelfemoji{font-size:30px;line-height:1}.landing-cta{background:var(--card);border:1px solid var(--line);border-radius:var(--r-xl);padding:var(--s10) var(--s5);text-align:center;box-shadow:var(--shadow-md)}.landing-cta h2{font-size:clamp(22px,5.5vw,32px);letter-spacing:-.025em;margin-bottom:var(--s2)}.landing-cta p{color:var(--ink-soft);margin:0 0 var(--s6)}.landing-foot{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);align-items:center;justify-content:space-between;padding:var(--s8) 0 0;margin-top:var(--s8);border-top:1px solid var(--line);font-size:13px}@media (min-width: 640px){.steplist,.featuregrid,.shelfgrid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 900px){.landing{padding-left:var(--s6);padding-right:var(--s6)}.landing .hero{grid-template-columns:1.15fr .85fr;padding:var(--s10) 0}.steplist{grid-template-columns:repeat(4,1fr)}.featuregrid{grid-template-columns:repeat(3,1fr)}.shelfgrid{grid-template-columns:repeat(4,1fr)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
