@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-ext-wght-normal-BOFOeGcA.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-wght-normal-Xz1IZZA0.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-vietnamese-opsz-normal-BjhtXyW2.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-ext-opsz-normal-BQn1nviT.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-opsz-normal-s-izfB6B.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-vietnamese-opsz-italic-DTr-ymY4.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-ext-opsz-italic-CSPGnFdO.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-opsz-italic-kJKFiXvB.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f9f6f2;--glow:#f4eee6;--surface:#fefdfa;--surface-2:#f3f0eb;--ink:#312a25;--ink-2:#564e48;--muted:#867f78;--line:#e6e2de;--accent:#372e29;--accent-hover:#251e19;--accent-ink:#fcfaf6;--accent-soft:#f3eee6;--gold:#c3ae8e;--gold-deep:#867058;--gold-soft:#f0e7d8;--sage:#6e7465;--sage-soft:#eceee5;--danger:#904d4e;--texture:#4338300e;--art-oat:#eee7dc;--art-clay:#f2e3dd;--art-sage:#e4e8dd;--art-sky:#e1e9ed;--art-plum:#ecdfe4;--shadow:0 1px 2px #43383008, 0 14px 34px -22px #43383029;--shadow-lift:0 2px 4px #4338300a, 0 22px 44px -22px #4338303d;--radius:22px;--radius-s:12px;--display:"Newsreader Variable", "Iowan Old Style", Georgia, serif;--sans:"DM Sans Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .3 0 0 0 0 .25 0 0 0 .05 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--nav-h:68px;--ease:cubic-bezier(.22, .61, .36, 1)}@supports (color:lab(0% 0 0)){:root{--bg:lab(97.0016% .34073 2.25887);--glow:lab(94.452% 1.05047 4.44901);--surface:lab(99.2004% .0796616 1.13986);--surface-2:lab(94.9155% .552535 2.99569);--ink:lab(17.5924% 2.82103 4.49646);--ink-2:lab(33.8442% 2.57243 4.61485);--muted:lab(53.5895% 1.88878 4.54997);--line:lab(90.1522% .602812 2.58871);--accent:lab(19.905% 3.23515 5.14849);--accent-hover:lab(11.7908% 2.85018 4.52251);--accent-ink:lab(98.2805% .135809 1.90165);--accent-soft:lab(94.2284% .843763 4.50332);--gold:lab(72.2366% 4.26382 19.3839);--gold-deep:lab(48.9384% 6.01473 16.9472);--gold-soft:lab(91.9383% 1.36176 8.35897);--sage:lab(48.0756% -4.79624 7.88536);--sage-soft:lab(93.7484% -2.04787 3.95478);--danger:lab(41.0697% 28.7421 12.7094);--texture:lab(24.552% 3.59103 6.82721/.055);--art-oat:lab(91.924% .960499 6.058);--art-clay:lab(91.1857% 4.67077 4.48175);--art-sage:lab(91.4815% -3.12346 4.98915);--art-sky:lab(91.9191% -2.12449 -2.92339);--art-plum:lab(89.9272% 5.32559 -1.00478);--shadow:0 1px 2px lab(24.552% 3.59103 6.82721/.03), 0 14px 34px -22px lab(24.552% 3.59103 6.82721/.16);--shadow-lift:0 2px 4px lab(24.552% 3.59103 6.82721/.04), 0 22px 44px -22px lab(24.552% 3.59103 6.82721/.24)}}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#15120f;--glow:#1c1713;--surface:#1e1a16;--surface-2:#28231f;--ink:#efebe4;--ink-2:#cecac3;--muted:#9d9790;--line:#342f2b;--accent:#e8e0d3;--accent-hover:#f6f1e9;--accent-ink:#1f1915;--accent-soft:#2b2520;--gold:#c5ad8a;--gold-deep:#c9b494;--gold-soft:#352c20;--sage:#adb5a0;--sage-soft:#272a22;--danger:#d78e8d;--texture:#f2eee70d;--art-oat:#332d25;--art-clay:#372b26;--art-sage:#2c2f26;--art-sky:#272f34;--art-plum:#33272d;--shadow:0 1px 2px #00000040, 0 14px 34px -22px #0009;--shadow-lift:0 2px 4px #00000040, 0 22px 44px -22px #000000b3}@supports (color:lab(0% 0 0)){:root:not([data-theme=light]){--bg:lab(5.70507% 1.14336 2.00739);--glow:lab(8.34459% 1.85139 3.96748);--surface:lab(9.50017% 1.58221 3.03798);--surface-2:lab(14.1383% 1.75224 3.37649);--ink:lab(93.0686% .581116 3.77332);--ink-2:lab(81.4659% .77489 4.12904);--muted:lab(62.8906% 1.27134 4.39395);--line:lab(19.9436% 1.63624 3.43022);--accent:lab(89.6135% 1.22824 7.59203);--accent-hover:lab(95.394% .703841 4.5323);--accent-ink:lab(9.47835% 2.43364 3.82627);--accent-soft:lab(15.3066% 1.81344 4.25372);--gold:lab(72.2387% 4.78813 21.4261);--gold-deep:lab(74.5578% 4.24084 19.3604);--gold-soft:lab(18.8149% 2.67428 9.70174);--sage:lab(72.4927% -5.77694 9.43818);--sage-soft:lab(16.644% -2.86327 4.74836);--danger:lab(66.5991% 28.6815 12.4497);--texture:lab(94.2286% .580758 3.77309/.05);--art-oat:lab(18.8166% 1.58337 6.07461);--art-clay:lab(18.6666% 5.31162 5.08522);--art-sage:lab(18.9955% -3.42216 5.71497);--art-sky:lab(18.8497% -2.86847 -4.03918);--art-plum:lab(17.3733% 6.5925 -1.2518);--shadow:0 1px 2px lab(0% 0 0/.25), 0 14px 34px -22px lab(0% 0 0/.6);--shadow-lift:0 2px 4px lab(0% 0 0/.25), 0 22px 44px -22px lab(0% 0 0/.7)}}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#15120f;--glow:#1c1713;--surface:#1e1a16;--surface-2:#28231f;--ink:#efebe4;--ink-2:#cecac3;--muted:#9d9790;--line:#342f2b;--accent:#e8e0d3;--accent-hover:#f6f1e9;--accent-ink:#1f1915;--accent-soft:#2b2520;--gold:#c5ad8a;--gold-deep:#c9b494;--gold-soft:#352c20;--sage:#adb5a0;--sage-soft:#272a22;--danger:#d78e8d;--texture:#f2eee70d;--art-oat:#332d25;--art-clay:#372b26;--art-sage:#2c2f26;--art-sky:#272f34;--art-plum:#33272d;--shadow:0 1px 2px #00000040, 0 14px 34px -22px #0009;--shadow-lift:0 2px 4px #00000040, 0 22px 44px -22px #000000b3}@supports (color:lab(0% 0 0)){:root[data-theme=dark]{--bg:lab(5.70507% 1.14336 2.00739);--glow:lab(8.34459% 1.85139 3.96748);--surface:lab(9.50017% 1.58221 3.03798);--surface-2:lab(14.1383% 1.75224 3.37649);--ink:lab(93.0686% .581116 3.77332);--ink-2:lab(81.4659% .77489 4.12904);--muted:lab(62.8906% 1.27134 4.39395);--line:lab(19.9436% 1.63624 3.43022);--accent:lab(89.6135% 1.22824 7.59203);--accent-hover:lab(95.394% .703841 4.5323);--accent-ink:lab(9.47835% 2.43364 3.82627);--accent-soft:lab(15.3066% 1.81344 4.25372);--gold:lab(72.2387% 4.78813 21.4261);--gold-deep:lab(74.5578% 4.24084 19.3604);--gold-soft:lab(18.8149% 2.67428 9.70174);--sage:lab(72.4927% -5.77694 9.43818);--sage-soft:lab(16.644% -2.86327 4.74836);--danger:lab(66.5991% 28.6815 12.4497);--texture:lab(94.2286% .580758 3.77309/.05);--art-oat:lab(18.8166% 1.58337 6.07461);--art-clay:lab(18.6666% 5.31162 5.08522);--art-sage:lab(18.9955% -3.42216 5.71497);--art-sky:lab(18.8497% -2.86847 -4.03918);--art-plum:lab(17.3733% 6.5925 -1.2518);--shadow:0 1px 2px lab(0% 0 0/.25), 0 14px 34px -22px lab(0% 0 0/.6);--shadow-lift:0 2px 4px lab(0% 0 0/.25), 0 22px 44px -22px lab(0% 0 0/.7)}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:80px}body{background:var(--grain), radial-gradient(1200px 600px at 85% -10%, var(--glow), transparent 70%) fixed, var(--bg);min-height:100dvh;color:var(--ink);font:400 16px/1.65 var(--sans);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,p,dl,dd,figure,ol,ul{margin:0}ol,ul{padding:0;list-style:none}h1,h2,.display{font-family:var(--display);letter-spacing:-.015em;text-wrap:balance;font-weight:350;line-height:1.08}h1{letter-spacing:-.025em;font-size:clamp(2.4rem,1.6rem + 3vw,3.8rem);font-weight:300}h2{letter-spacing:0;font-size:1.6rem}h3{font-size:1rem;font-weight:600}p{text-wrap:pretty}a{color:inherit}img{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}:focus-visible{outline:2px solid var(--gold-deep);outline-offset:2px;border-radius:6px}::selection{background:var(--gold-soft)}.eyebrow{letter-spacing:.24em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:8px;font-size:.68rem;font-weight:500}.lead{font:300 italic 1.3rem/1.45 var(--display);color:var(--ink-2);max-width:52ch}.muted{color:var(--muted)}.small{font-size:.86rem}.prewrap{white-space:pre-wrap}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.spin{animation:1s linear infinite spin}@keyframes spin{to{rotate:360deg}}.button{border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--ink);letter-spacing:.03em;white-space:nowrap;transition:background .2s, border-color .2s, transform .2s var(--ease), box-shadow .2s;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:.92rem;font-weight:450;text-decoration:none;display:inline-flex}.button:hover:not(:disabled){border-color:color-mix(in oklch, var(--ink) 25%, var(--line));transform:translateY(-1px)}.button:active:not(:disabled){transform:scale(.98)}.button--primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 10px 22px -14px color-mix(in oklch, var(--accent) 60%, transparent);border-color:#0000}.button--primary:hover:not(:disabled){background:var(--accent-hover);border-color:#0000}.button--ghost{background:0 0;border-color:#0000}.button--danger{color:var(--danger);background:0 0}.button--small{min-height:36px;padding:0 14px;font-size:.88rem}.button--wide{width:min(100%,360px)}.button--done{background:var(--gold-soft);color:var(--ink);border-color:#0000}.icon-button{width:40px;height:40px;color:var(--ink-2);background:0 0;border:1px solid #0000;border-radius:50%;flex-shrink:0;place-items:center;transition:background .2s,transform .15s;display:inline-grid}.icon-button:hover:not(:disabled){background:var(--surface-2)}.icon-button:active:not(:disabled){transform:scale(.94)}.icon-button--large{border-color:var(--line);background:var(--surface);width:52px;height:52px}.icon-button--accent{background:var(--accent);color:var(--accent-ink);border-color:#0000}.icon-button--accent:hover:not(:disabled){background:var(--accent-hover)}.link{color:var(--ink);letter-spacing:.03em;text-decoration:underline;-webkit-text-decoration-color:var(--gold);text-decoration-color:var(--gold);text-underline-offset:5px;background:0 0;border:0;align-items:center;gap:6px;padding:4px 0;font-size:.9rem;font-weight:450;text-decoration-thickness:1px;display:inline-flex}.link:hover{color:var(--gold-deep)}.upload{cursor:pointer;position:relative}.upload input{opacity:0;cursor:pointer;position:absolute;inset:0}.upload:focus-within{outline:2px solid var(--gold-deep);outline-offset:2px}.app{min-height:100dvh}.brand{align-items:center;gap:10px;text-decoration:none;display:inline-flex}.brand__mark{background:var(--surface);width:38px;height:38px;color:var(--ink);border:1px solid var(--gold);border-radius:50%;place-items:center;display:grid}.brand__mark--large{width:68px;height:68px}.brand__name{font-family:var(--display);letter-spacing:-.01em;font-size:1.3rem;font-weight:400}.nav{z-index:20;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:color-mix(in oklch, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(18px)saturate(1.4);border-top:1px solid var(--line);position:fixed;inset:auto 0 0}.nav>.brand,.nav__note{display:none}.nav ul{grid-template-columns:repeat(5,1fr);display:grid}.nav a{color:var(--muted);border-radius:14px;flex-direction:column;align-items:center;gap:3px;padding:7px 2px;font-size:.7rem;font-weight:600;text-decoration:none;display:flex}.nav a[aria-current=page]{color:var(--ink)}.nav a[aria-current=page] svg{background:var(--gold-soft);box-sizing:content-box;border-radius:999px;padding:3px 14px}.content{padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 24px)}.topbar{z-index:10;padding:max(10px, env(safe-area-inset-top)) clamp(16px, 4vw, 40px) 10px;background:color-mix(in oklch, var(--bg) 78%, transparent);-webkit-backdrop-filter:blur(14px);justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.save{color:var(--muted);background:0 0;border:0;align-items:center;gap:7px;padding:6px 0;font-size:.8rem;display:inline-flex}.save:before{content:"";background:var(--gold);border-radius:50%;width:6px;height:6px}.save--saving:before{background:var(--gold-deep);animation:1s ease-in-out infinite pulse}.save--error{color:var(--danger);font-weight:600}.save--error:before{background:var(--danger)}@keyframes pulse{50%{opacity:.3}}@media (min-width:960px){.app{grid-template-columns:252px 1fr;display:grid}.nav{-webkit-backdrop-filter:none;border-top:0;border-right:1px solid var(--line);background:0 0;flex-direction:column;gap:28px;height:100dvh;padding:28px 18px;display:flex;position:sticky;inset:0 auto auto}.nav>.brand{padding:0 8px;display:inline-flex}.nav ul{flex-direction:column;gap:4px;display:flex}.nav a{color:var(--ink-2);flex-direction:row;gap:12px;padding:11px 14px;font-size:.95rem}.nav a:hover{background:var(--surface-2)}.nav a[aria-current=page]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.nav a[aria-current=page] svg{color:var(--gold-deep);background:0 0;padding:0}.nav a{transition:background .35s var(--ease), color .35s, box-shadow .35s}.nav__note{color:var(--muted);border:1px dashed var(--line);border-radius:14px;margin-top:auto;padding:14px;font-size:.8rem;display:block}.topbar{justify-content:flex-end}.topbar .brand{display:none}.content{padding-bottom:48px}}.page{width:min(1120px,100%);animation:settle .7s var(--ease);flex-direction:column;gap:36px;margin:0 auto;padding:12px clamp(18px,4.5vw,48px) 32px;display:flex}@keyframes settle{0%{opacity:0;translate:0 8px}}.page--narrow{width:min(760px,100%)}.page__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.page__head>div{flex-direction:column;gap:8px;display:flex}.section{flex-direction:column;gap:14px;display:flex}.section__head{flex-direction:column;gap:4px;display:flex}.section__head--row{flex-flow:wrap;justify-content:space-between;align-items:baseline}.back{color:var(--ink-2);align-self:flex-start}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.notice{border-radius:var(--radius);background:var(--surface);border:1px solid var(--gold-soft);color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:12px 14px;padding:16px 20px;display:flex}.notice>svg{color:var(--gold-deep)}.notice p{flex:260px;font-size:.92rem}.callout{background:var(--accent-soft);color:var(--ink-2);border-radius:14px;gap:12px;padding:14px 16px;display:flex}.callout svg{color:var(--gold-deep);flex-shrink:0;margin-top:2px}.callout__actions{gap:16px;margin-top:4px;display:flex}.empty{text-align:center;color:var(--muted);justify-items:center;gap:8px;padding:48px 20px;display:grid}.empty svg{color:var(--gold);margin-bottom:4px}.empty h3{color:var(--ink);font-family:var(--display);font-size:1.5rem;font-weight:350}.art{background:var(--art-oat);color:var(--texture);min-height:140px;position:relative;overflow:hidden}.art--clay{background:var(--art-clay)}.art--sage{background:var(--art-sage)}.art--sky{background:var(--art-sky)}.art--plum{background:var(--art-plum)}.knit-texture{width:100%;height:100%;position:absolute;inset:0}.art img,.art .image-missing{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.art>.chip{position:absolute;top:12px;left:12px}.art>.flag{position:absolute;top:12px;right:12px}.art__quote{font:300 italic 2.1rem/1.05 var(--display);color:var(--ink-2);opacity:.8;position:absolute;bottom:22px;left:24px}.image-missing{background:repeating-linear-gradient(45deg, var(--surface-2) 0 8px, var(--surface) 8px 16px)}.chip{letter-spacing:.12em;text-transform:uppercase;background:color-mix(in oklch, var(--surface) 88%, transparent);color:var(--ink-2);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;align-items:center;gap:6px;padding:5px 11px;font-size:.66rem;font-weight:500;display:inline-flex}.chip--active{background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1px var(--gold)}.chip--planned{background:var(--gold-soft);color:var(--ink-2)}.chip--here{background:var(--ink);color:var(--bg)}.flag{background:var(--surface);color:var(--gold-deep);letter-spacing:.12em;text-transform:uppercase;border-radius:999px;padding:5px 11px;font-size:.66rem;font-weight:500}.bar{background:var(--surface-2);border-radius:999px;height:3px;overflow:hidden}.bar span{border-radius:inherit;background:linear-gradient(90deg, var(--gold-deep), var(--gold));height:100%;transition:width .5s var(--ease);display:block}.ring{flex-shrink:0;place-items:center;display:inline-grid;position:relative}.ring svg{width:100%;height:100%;position:absolute;inset:0;rotate:-90deg}.ring circle{fill:none;stroke-width:2.2px}.ring__track{stroke:var(--surface-2)}.ring__fill{stroke:var(--gold-deep);stroke-linecap:round;transition:stroke-dashoffset .6s var(--ease)}.ring span{letter-spacing:.02em;font-variant-numeric:lining-nums tabular-nums;font-size:.74rem;font-weight:450}.hero{display:grid;overflow:hidden}.hero .art{order:-1;min-height:132px}.hero .art__quote{font-size:1.4rem;bottom:16px;left:20px}.hero__text{flex-direction:column;gap:18px;padding:clamp(22px,4vw,40px);display:flex}.hero__text h2{letter-spacing:-.02em;font-size:clamp(2.3rem,1.5rem + 2.6vw,3.4rem);font-weight:300}.hero__progress{align-items:center;gap:14px;display:flex}.hero__progress>div:last-child{flex-direction:column;display:flex}.hero__progress span{color:var(--muted);font-size:.88rem}.hero__next{border-left:1px solid var(--gold);flex-direction:column;gap:6px;padding:4px 0 4px 18px;display:flex}.hero__next p{font:300 italic 1.45rem/1.35 var(--display);color:var(--ink)}.hero__next .link{align-self:flex-start}.hero__actions{flex-wrap:wrap;gap:8px;display:flex}@media (min-width:760px){.hero{grid-template-columns:1.3fr 1fr}.hero .art{order:0;min-height:100%}.hero .art__quote{font-size:1.9rem;bottom:22px;left:24px}}.goals{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:10px;display:grid}.goal{box-shadow:none;border-radius:16px;align-items:center;gap:14px;padding:12px 10px 12px 16px;display:flex}.goal>div{flex-direction:column;flex:1;min-width:0;display:flex}.goal strong{font-weight:450}.goal span{color:var(--muted);font-size:.82rem}.goal strong{background:linear-gradient(var(--gold), var(--gold)) no-repeat 0 58% / 0% 1px;transition:background-size .6s var(--ease), color .4s;align-self:flex-start}.goal .is-done{color:var(--muted);background-size:100% 1px}.check{border:1.5px solid var(--line);background:var(--surface);color:#0000;border-radius:50%;flex-shrink:0;place-items:center;width:26px;height:26px;transition:background .2s,color .2s,border-color .2s;display:grid}.check:hover:not(:disabled){border-color:var(--gold)}.check.is-checked{background:var(--ink);border-color:var(--ink);color:var(--bg)}.grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:18px;display:grid}.grid--yarn{grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr))}.grid--guides{grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr))}.project-card,.yarn-card,.guide-card,.new-card{text-align:left;transition:transform .5s var(--ease), box-shadow .5s var(--ease);flex-direction:column;padding:0;display:flex;overflow:hidden}:is(.project-card,.yarn-card,.guide-card,.new-card):hover{box-shadow:var(--shadow-lift);transform:translateY(-2px)}.project-card .art{height:150px;min-height:0}.project-card__body{flex-direction:column;gap:6px;padding:16px 18px 18px;display:flex}.project-card__body h3{font-family:var(--display);letter-spacing:-.01em;font-size:1.45rem;font-weight:350;line-height:1.15}.project-card__body p{color:var(--muted);-webkit-line-clamp:1;-webkit-box-orient:vertical;font-size:.88rem;display:-webkit-box;overflow:hidden}.project-card__meta{color:var(--ink-2);justify-content:space-between;margin-top:6px;font-size:.82rem;display:flex}.new-card{min-height:240px;box-shadow:none;color:var(--muted);text-align:center;background:0 0;border-style:dashed;justify-content:center;align-items:center;gap:6px}.new-card strong{color:var(--ink)}.new-card:hover{color:var(--ink);border-color:var(--gold)}.week-note{background:var(--gold-soft);color:var(--ink-2);border-radius:999px;align-self:flex-start;align-items:center;gap:8px;padding:6px 14px;font-size:.85rem;display:inline-flex}.hero__last{color:var(--muted);font-size:.9rem}.hero__last span{color:var(--ink-2)}.more{border-top:1px solid var(--line);padding-top:14px}.more summary{cursor:pointer;color:var(--ink-2);align-items:center;gap:10px;font-size:.92rem;list-style:none;display:flex}.more summary::-webkit-details-marker{display:none}.more summary:before{content:"+";border:1px solid var(--gold);width:24px;height:24px;color:var(--gold-deep);transition:rotate .3s var(--ease);border-radius:50%;place-items:center;display:grid}.more[open] summary:before{rotate:45deg}.more>.form{margin-top:16px}.welcome__points{flex-direction:column;gap:10px;display:flex}.welcome__points li{color:var(--ink-2);gap:12px;display:flex}.welcome__points li:before{content:"";background:var(--gold);border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-top:10px}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.segmented,.tabs{background:var(--surface-2);scrollbar-width:none;border-radius:999px;gap:4px;max-width:100%;padding:4px;display:inline-flex;overflow-x:auto}:is(.segmented,.tabs) button{color:var(--ink-2);white-space:nowrap;background:0 0;border:0;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:.88rem;font-weight:600;transition:background .2s,color .2s;display:inline-flex}:is(.segmented,.tabs) :is([aria-pressed=true],[aria-selected=true]){background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.count{color:var(--muted);font-variant-numeric:lining-nums tabular-nums;font-size:.75rem}.search{border:1px solid var(--line);background:var(--surface);max-width:360px;min-height:44px;color:var(--muted);border-radius:999px;flex:220px;align-items:center;gap:8px;padding:0 14px;display:flex}.search:focus-within{border-color:var(--gold)}.search input{min-width:0;color:var(--ink);background:0 0;border:0;outline:none;flex:1}.project-head{grid-template-columns:auto 1fr;align-items:center;gap:16px 20px;display:grid}.project-head>.art{border-radius:22px;grid-row:span 2;width:84px;height:84px;min-height:0}.project-head__text{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.project-head__actions{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:10px;display:flex}@media (min-width:760px){.project-head{grid-template-columns:auto 1fr auto}.project-head>.art{grid-row:auto;width:110px;height:110px}.project-head__actions{grid-column:auto}}.tabs{align-self:flex-start}.split{gap:18px;display:grid}@media (min-width:900px){.split{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}}.stack{flex-direction:column;gap:18px;display:flex}.panel{flex-direction:column;gap:14px;padding:clamp(18px,3vw,26px);display:flex}.panel h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-top:4px;font-size:.82rem}.panel__head{justify-content:space-between;align-items:center;gap:12px;display:flex}.panel--danger{border-color:color-mix(in oklch, var(--danger) 25%, var(--line))}.next-step{font:300 italic 1.6rem/1.3 var(--display)}.path li{border-top:1px solid var(--line);grid-template-columns:36px 1fr auto;align-items:center;gap:12px;padding:10px 0;display:grid}.path li:first-child{border-top:0}.path__check{border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--muted);border-radius:50%;place-items:center;font-size:.82rem;font-weight:500;transition:all .2s;display:grid}.path__name{text-align:left;background:0 0;border:0;flex-direction:column;padding:2px 0;display:flex}.path__name span{color:var(--muted);font-size:.84rem}.path .is-done .path__check{background:var(--ink);border-color:var(--ink);color:var(--bg)}.path .is-done strong{color:var(--muted)}.path .is-current .path__check{border-color:var(--gold);color:var(--gold-deep);box-shadow:0 0 0 4px var(--gold-soft)}.counter{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:22px;display:flex}.counter__row{align-items:center;gap:22px;display:flex}.counter__value{font:300 3.6rem/1 var(--display);font-variant-numeric:lining-nums tabular-nums;flex-direction:column;min-width:3ch;display:flex}.counter__value span{font:450 .74rem var(--sans);letter-spacing:.04em;color:var(--muted);margin-top:6px}.mini-goal{flex-direction:column;gap:10px;padding:20px 22px;display:flex}.mini-goal p:not(.eyebrow){font:300 italic 1.3rem/1.35 var(--display)}.mini-goal__actions{align-items:center;gap:14px;display:flex}.link-card{text-align:left;color:var(--ink);align-items:center;gap:14px;padding:16px 18px;text-decoration:none;display:flex}.link-card svg:first-child{color:var(--gold-deep)}.link-card span{flex-direction:column;flex:1;display:flex}.link-card small{color:var(--muted)}.facts{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.facts div{background:var(--surface-2);border-radius:14px;padding:12px 14px}.facts dt{color:var(--muted);font-size:.78rem}.facts dd{font-weight:600}.advice{background:var(--accent-soft);color:var(--ink-2);border-left:2px solid var(--gold);border-radius:4px 14px 14px 4px;padding:12px 16px}.file-row{align-items:center;gap:12px;display:flex}.file-row>svg{color:var(--gold-deep)}.file-row>div{flex-direction:column;flex:1;min-width:0;display:flex}.file-row strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.photos{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;display:grid}.photos figure{flex-direction:column;gap:4px;display:flex}.photos img,.photos .image-missing{aspect-ratio:1;object-fit:cover;border-radius:14px;width:100%}.photos figcaption{color:var(--muted);justify-content:space-between;align-items:center;gap:6px;font-size:.8rem;display:flex}.photos figcaption span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.note-form{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.note-form textarea{width:100%}.notes li,.log li{border-top:1px solid var(--line);grid-template-columns:1fr auto;gap:2px 8px;padding:12px 0;display:grid}.notes time,.log time{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.76rem;font-weight:650}.notes p,.log p{grid-column:1}.notes .icon-button{grid-area:1/2/span 2;align-self:center}.facts-list{flex-direction:column;gap:10px;display:flex}.facts-list li{align-items:flex-start;gap:10px;display:flex}.facts-list svg{color:var(--gold-deep);flex-shrink:0;margin-top:3px}.yarn-card__swatch{color:#ffffff8c;color:lab(100% 0 0/.55);place-items:center;height:120px;display:grid}.yarn-card__body{flex-direction:column;gap:2px;padding:14px 18px 18px;display:flex}.yarn-card__body strong{font-family:var(--display);font-size:1.4rem;font-weight:350;line-height:1.15}.yarn-card__amount{margin-top:6px;font-size:.9rem;font-weight:600}.guide-card{gap:8px;padding:22px}.guide-card strong{font:350 1.45rem/1.2 var(--display);letter-spacing:-.01em}.guide-card .muted{flex:1;font-size:.9rem}.guide{flex-direction:column;gap:16px;display:flex}.guide__steps{counter-reset:step;flex-direction:column;gap:12px;display:flex}.guide__steps li{counter-increment:step;grid-template-columns:30px 1fr;gap:12px;display:grid}.guide__steps li:before{content:counter(step);background:var(--gold-soft);width:30px;height:30px;color:var(--ink);border-radius:50%;place-items:center;font-size:.85rem;font-weight:500;display:grid}.form{flex-direction:column;gap:16px;display:flex}.form__grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:16px;display:grid}.form__actions{flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:4px;display:flex}.form__actions .button--primary{margin-left:auto}.field{border:0;flex-direction:column;gap:6px;margin:0;padding:0;display:flex}.field__control{flex-direction:column;gap:6px;display:flex}.field__label{color:var(--ink-2);font-size:.84rem;font-weight:600}.field__hint{color:var(--muted);font-size:.8rem}input:not([type=radio],[type=checkbox],[type=file],[type=color]),select,textarea{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);outline:none;width:100%;min-height:46px;padding:10px 14px;transition:border-color .2s,box-shadow .2s}.search input{border:0;min-height:0;padding:0}textarea{resize:vertical;field-sizing:content;min-height:96px;max-height:40vh;line-height:1.5}:is(input,select,textarea):focus{border-color:var(--gold);box-shadow:0 0 0 4px var(--gold-soft)}input[type=color]{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);width:64px;height:44px;padding:2px}.swatches{border:0;flex-wrap:wrap;gap:10px;margin:0;padding:0;display:flex}.swatches legend{margin-bottom:8px}.swatch{border:2px solid var(--surface);width:38px;height:38px;box-shadow:0 0 0 1px var(--line);cursor:pointer;border-radius:50%;transition:box-shadow .2s;position:relative}.swatch input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.swatch:has(input:checked){box-shadow:0 0 0 1.5px var(--ink)}.swatch:has(input:focus-visible){outline:2px solid var(--gold-deep);outline-offset:3px}.part-editor{counter-reset:part;flex-direction:column;gap:10px;display:flex}.part-editor li{grid-template-columns:1fr 96px 96px;gap:10px;display:grid}.sheet{color:var(--ink);background:0 0;border:0;max-width:100vw;max-height:100dvh;padding:0;overflow:visible}.sheet::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#342c2647;background:lab(18.7653% 2.66871 5.09835/.28)}.sheet__body{overscroll-behavior:contain;background:var(--surface);width:min(560px,100vw - 32px);max-height:88dvh;box-shadow:var(--shadow-lift);border-radius:26px;flex-direction:column;gap:18px;padding:clamp(20px,4vw,30px);display:flex;overflow:auto}.sheet--wide .sheet__body{width:min(780px,100vw - 32px)}.sheet__head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.sheet__head h2{font-size:clamp(1.5rem,1.2rem + 1vw,1.9rem)}.sheet[open]{animation:rise .32s var(--ease)}.sheet[open]::backdrop{animation:.3s fade}@keyframes rise{0%{opacity:0;translate:0 18px}}@keyframes fade{0%{opacity:0}}@media (max-width:640px){.sheet:not(.sheet--full){width:100%;margin:auto 0 0}.sheet:not(.sheet--full) .sheet__body{width:100%;padding-bottom:calc(24px + env(safe-area-inset-bottom));border-radius:26px 26px 0 0;max-height:92dvh}}.sheet--full{width:100vw;height:100dvh;margin:0}.sheet--full .sheet__body{--ink:#f2eee7;--ink-2:#d5d0c8;--muted:#a49d95;--surface:#231e1b;--surface-2:#2d2824;--line:#3a3430;--accent:#ece3d6;--accent-hover:#f6f1e9;--accent-ink:#251e19;--gold:#cbb490;--gold-deep:#d0ba9a;--gold-soft:#342d23;width:100%;height:100%;max-height:none;color:var(--ink);padding:max(18px, env(safe-area-inset-top)) clamp(18px, 5vw, 48px) max(24px, env(safe-area-inset-bottom));background:radial-gradient(900px 600px at 50% 0,#2a221a,#0000 70%),#120f0c;background:radial-gradient(900px 600px at 50% 0,lab(14.1514% 2.65586 7.51239),#0000 70%),lab(4.4256% .971526 1.68694);border-radius:0}@supports (color:lab(0% 0 0)){.sheet--full .sheet__body{--ink:lab(94.2286% .580758 3.77309);--ink-2:lab(83.7881% .848383 4.50641);--muted:lab(65.2119% 1.4925 5.13265);--surface:lab(11.8179% 1.75979 3.38255);--surface-2:lab(16.456% 1.92961 3.71584);--line:lab(22.2618% 1.80276 3.77547);--accent:lab(90.7736% 1.2269 7.59105);--accent-hover:lab(95.394% .703841 4.5323);--accent-ink:lab(11.7908% 2.85018 4.52251);--gold:lab(74.5603% 4.76062 21.3963);--gold-deep:lab(76.8791% 4.21897 19.3385);--gold-soft:lab(18.8168% 2.05126 7.6634)}}.knit,.knit__finish{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:22px;width:min(520px,100%);margin:0 auto;display:flex}.knit__finish{align-items:stretch}.knit__part select{background:var(--surface);text-align:center;border-radius:999px;min-height:40px;padding:6px 16px}.knit__tap{aspect-ratio:1;color:#2a221e;color:lab(14.1115% 2.83726 4.51069);width:min(72vw,46dvh,340px);transition:transform .12s var(--ease);touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:radial-gradient(circle at 34% 28%,#f9f5ec,#e2d6c2 45%,#c4ad8e);box-shadow:0 34px 70px -26px #cdb38c73,inset 0 1px #fff9,inset 0 -10px 30px #947b602e;background:radial-gradient(circle at 34% 28%,lab(96.5677% .351369 4.58084),lab(86.1544% 1.94663 11.4667) 45%,lab(72.2027% 5.11643 19.1464));border:0;border-radius:50%;place-content:center;justify-items:center;gap:4px;animation:7s ease-in-out infinite breathe;display:grid;position:relative;box-shadow:0 34px 70px -26px lab(74.5617% 5.2968 23.4557/.45),inset 0 1px lab(100% 0 0/.6),inset 0 -10px 30px lab(53.5739% 6.72039 18.8739/.18)}.knit__tap:active{transform:scale(.965)}@keyframes breathe{50%{box-shadow:0 40px 90px -24px #cdb38c99,inset 0 1px #fff9,inset 0 -10px 30px #947b602e;box-shadow:0 40px 90px -24px lab(74.5617% 5.2968 23.4557/.6),inset 0 1px lab(100% 0 0/.6),inset 0 -10px 30px lab(53.5739% 6.72039 18.8739/.18)}}.knit__count{font:250 clamp(5rem, 22vw, 8.5rem)/1 var(--display);letter-spacing:-.03em;font-variant-numeric:lining-nums tabular-nums}.knit__unit{letter-spacing:.2em;text-transform:uppercase;opacity:.7;font-size:.7rem;font-weight:500}.knit__plus{opacity:.55;position:absolute;bottom:14%}.knit .bar{width:min(340px,100%)}.knit__row{align-items:center;gap:16px;width:100%;display:flex}.knit__next{font:300 italic 1.3rem/1.35 var(--display);color:var(--ink-2);flex-direction:column;flex:1;display:flex}.knit__next .eyebrow{font-style:normal;font-family:var(--sans)}.knit__repeat{color:var(--ink-2);letter-spacing:.02em;flex-direction:column;align-items:center;gap:8px;font-size:.85rem;display:flex}.knit__beads{gap:6px;display:flex}.knit__beads i{border:1px solid var(--gold);width:8px;height:8px;transition:background .3s var(--ease);border-radius:50%}.knit__beads i.is-on{background:var(--gold)}.knit__reached{border:1px solid var(--gold-soft);text-align:center;color:var(--ink-2);border-radius:18px;flex-direction:column;align-items:center;gap:10px;padding:14px 18px;display:flex}.knit__awake{color:var(--muted);align-items:center;gap:6px;font-size:.8rem;display:inline-flex}.toast{left:50%;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 16px);z-index:1000;background:var(--ink);width:max-content;max-width:calc(100vw - 32px);color:var(--bg);letter-spacing:.02em;box-shadow:var(--shadow-lift);animation:rise .3s var(--ease);border-radius:14px;align-items:center;gap:16px;padding:12px 18px;font-weight:400;display:flex;position:fixed;translate:-50%}.toast__undo{color:var(--gold);letter-spacing:.04em;text-underline-offset:4px;background:0 0;border:0;padding:4px 2px;font-weight:500;text-decoration:underline}@media (min-width:960px){.toast{bottom:28px;left:calc(50% + 126px)}}.splash{text-align:center;min-height:100dvh;color:var(--muted);place-content:center;justify-items:center;gap:14px;padding:24px;display:grid}.splash h1{color:var(--ink);font-size:2rem}.splash p{align-items:center;gap:8px;max-width:46ch;display:inline-flex}.yarn-mark :is(ellipse,path){stroke-dasharray:1;stroke-dashoffset:0;animation:wind 1.8s var(--ease) both}.yarn-mark path{animation-duration:2.2s;animation-delay:.35s}@keyframes wind{0%{stroke-dashoffset:1px}}.ring__fill{animation:fill-in 1.4s var(--ease) both}@keyframes fill-in{0%{stroke-dashoffset:var(--c)}}:is(.grid,.goals)>*{animation:rise .7s var(--ease) both}:is(.grid,.goals)>:nth-child(2){animation-delay:60ms}:is(.grid,.goals)>:nth-child(3){animation-delay:.12s}:is(.grid,.goals)>:nth-child(4){animation-delay:.18s}:is(.grid,.goals)>:nth-child(5){animation-delay:.24s}:is(.grid,.goals)>:nth-child(n+6){animation-delay:.3s}.hero .knit-texture{height:calc(100% + 24px);animation:5s linear infinite knit-rise;inset:-12px 0 auto}@keyframes knit-rise{to{transform:translateY(-12px)}}:is(.check,.path__check) svg path{stroke-dasharray:24;stroke-dashoffset:0;animation:tick .5s var(--ease) both}@keyframes tick{0%{stroke-dashoffset:24px}}.path .is-done .path__check,.check.is-checked{animation:settle-pop .45s var(--ease)}@keyframes settle-pop{40%{scale:1.12}}.chip--done{background-image:linear-gradient(110deg,#0000 35%,#ffffff59 50%,#0000 65%);background-image:linear-gradient(110deg,#0000 35%,lab(100% 0 0/.35) 50%,#0000 65%);background-repeat:no-repeat;background-size:250% 100%;animation:2.6s .4s both shimmer}@keyframes shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}.knit__ripple{pointer-events:none;animation:ripple 1.1s var(--ease) both;border:1px solid #ecdcc1b3;border:1px solid lab(88.4926% 2.7127 15.3858/.7);border-radius:50%;position:absolute;inset:0}@keyframes ripple{0%{opacity:.9;scale:.96}to{opacity:0;scale:1.32}}.knit__count{animation:roll .45s var(--ease) both}@keyframes roll{0%{opacity:.2;translate:0 10px}}.knit__beads i.is-on{animation:bead .5s var(--ease)}@keyframes bead{40%{scale:1.5}}::view-transition-group(*){animation-duration:.5s;animation-timing-function:var(--ease)}::view-transition-old(root){animation-duration:.3s}::view-transition-new(root){animation-duration:.3s}.pattern-pick{border-radius:var(--radius-s);background:var(--gold-soft);color:var(--ink);grid-template-columns:auto 1fr;align-items:start;gap:6px 14px;padding:16px;display:grid}.pattern-pick>svg{color:var(--gold-deep);margin-top:4px}.pattern-pick>:not(svg){grid-column:2;min-width:0}.pattern-pick input[type=file]{font:inherit;max-width:100%}.pattern-pick input[type=file]::file-selector-button{font:inherit;background:var(--accent);color:var(--accent-ink);cursor:pointer;border:0;border-radius:999px;margin-right:12px;padding:8px 16px;font-weight:600}.size-pick{border-radius:var(--radius-s);background:var(--gold-soft);grid-template-columns:auto auto 1fr;align-items:center;gap:6px 12px;padding:12px 14px;font-weight:600;display:grid}.size-pick select{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 10px}.size-pick small{min-width:0;font-weight:400}@media (max-width:520px){.size-pick{grid-template-columns:auto 1fr}.size-pick small{grid-column:1/-1}}.find{border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:999px;align-items:center;gap:8px;padding:0 12px;display:flex}.find:focus-within{border-color:var(--gold-deep)}.find input{min-width:0;font:inherit;color:var(--ink);background:0 0;border:0;outline:none;flex:1;padding:10px 0}.pattern-lines{margin:0;padding:0;list-style:none;display:grid}.pattern-lines>li{border-top:1px solid var(--line);overflow-wrap:anywhere;min-width:0}.pattern-lines>li:first-child{border-top:0}.pattern-lines p,.pattern-lines summary{padding:10px 2px;line-height:1.5}.pattern-lines p{color:var(--ink-2)}.pattern-lines summary{cursor:pointer;grid-template-columns:1fr auto;gap:10px;font-weight:500;list-style:none;display:grid}.pattern-lines summary::-webkit-details-marker{display:none}.pattern-lines summary:after{content:"?";background:var(--gold-soft);width:22px;height:22px;color:var(--gold-deep);transition:transform .25s var(--ease), background .25s var(--ease);border-radius:50%;place-items:center;font-size:.78rem;font-weight:700;display:grid}.pattern-lines details[open] summary:after{content:"×";background:var(--accent);color:var(--accent-ink)}.pattern-lines summary:focus-visible{outline:2px solid var(--gold-deep);outline-offset:2px;border-radius:6px}.pattern-notes{border-radius:var(--radius-s);background:var(--surface-2);color:var(--ink-2);gap:8px;margin:0 0 12px;padding:12px 14px;font-size:.92rem;list-style:none;display:grid}.pattern-notes ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.pattern-ai{background:var(--gold-soft);color:var(--ink);border-radius:10px;padding:10px 12px;line-height:1.55;display:block}.pattern-ai svg{vertical-align:-2px;color:var(--gold-deep)}.pattern-error{color:var(--danger)}.pattern-actions{flex-wrap:wrap;gap:8px;display:flex}.pattern-lines summary:not(.has-notes):after{content:"+";background:var(--surface-2);color:var(--muted)}.pattern-lines>li{grid-template-columns:auto 1fr;align-items:start;gap:0 12px;display:grid}.pattern-lines>li>details{grid-column:-2;min-width:0}.tick{appearance:none;border:1.5px solid var(--gold);background:var(--surface);cursor:pointer;width:22px;height:22px;transition:background .2s var(--ease), border-color .2s var(--ease);border-radius:7px;place-items:center;margin:0;display:grid}.tick:after{content:"";border:2px solid var(--accent-ink);width:10px;height:6px;transition:scale .2s var(--ease);border-top:0;border-right:0;translate:0 -1px;rotate:-45deg;scale:0}.tick:checked{background:var(--accent);border-color:var(--accent)}.tick:checked:after{scale:1}.tick:focus-visible{outline:2px solid var(--gold-deep);outline-offset:2px}.pattern-lines li.is-done>details>summary{color:var(--muted);text-decoration:line-through;-webkit-text-decoration-color:var(--gold);text-decoration-color:var(--gold);text-decoration-thickness:1px}.pattern-lines li.is-here{background:linear-gradient(90deg, var(--gold-soft), transparent 80%);border-radius:10px;margin-inline:-8px;padding-inline:8px}.line-flags{gap:6px;margin-bottom:4px;display:flex}.chip--next{background:var(--accent);color:var(--accent-ink)}.pattern-progress{top:calc(max(10px, env(safe-area-inset-top)) + 60px);z-index:4;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:12px;padding:10px 12px 10px 16px;display:flex;position:sticky}.pattern-progress__actions{flex:none;align-items:center;gap:6px;display:flex}.pattern-progress__text{font-variant-numeric:tabular-nums}.pattern-progress__text strong{white-space:nowrap;font-size:.95rem}.pattern-progress__text .muted{font-weight:400}.pattern-progress .icon-button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.pattern-part__foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;padding:4px 16px 16px;display:flex}.pattern-part__foot .muted svg{vertical-align:-2px;color:var(--sage)}.tick-hit{cursor:pointer;place-items:center;width:44px;height:44px;margin:0 -8px 0 -11px;display:grid}.tick-hit .tick{margin:0}.pattern-progress__text{flex:auto;gap:6px;min-width:0;display:grid}.chip--done{background:var(--sage-soft);color:var(--sage)}.pattern-parts{gap:10px;display:grid}.pattern-part{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface)}.pattern-part>summary{cursor:pointer;grid-template-columns:1fr auto;align-items:center;gap:6px 12px;padding:14px 16px;list-style:none;display:grid}.pattern-part>summary::-webkit-details-marker{display:none}.pattern-part>summary .bar{grid-column:1/-1}.pattern-part__title{font-family:var(--display);align-items:center;gap:6px;font-size:1.18rem;display:flex}.pattern-part__meta{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.82rem}.pattern-part[open]>summary{border-bottom:1px solid var(--line)}.pattern-part>.pattern-lines{padding:4px 16px 10px}.pattern-part.is-info{background:var(--surface-2)}.pattern-part.is-complete .pattern-part__title{color:var(--sage)}.pattern-part>summary:focus-visible{outline:2px solid var(--gold-deep);outline-offset:2px}.knit__line-done{align-self:center}.pattern-lines>li.pattern-sub{border-top:0;padding-top:10px;display:block}.pattern-sub h4{letter-spacing:.12em;text-transform:uppercase;color:var(--gold-deep);margin:0;font-size:.74rem;font-weight:700}.knit__explain{text-align:left;width:100%}.knit__explain summary{cursor:pointer;color:var(--gold-deep);padding:4px 0;font-size:.92rem;font-weight:600}.knit__explain .pattern-notes{margin-top:8px}.pattern-notes strong{color:var(--ink);margin-right:4px}.pattern-lines details[open] .pattern-notes{animation:rise .35s var(--ease) both}.glossary{gap:10px;margin:0;display:grid}.glossary div{border-bottom:1px solid var(--line);gap:2px;padding-bottom:10px;display:grid}.glossary div:last-child{border-bottom:0}.glossary dt{font-weight:650}.glossary dd{color:var(--ink-2);margin:0;font-size:.9rem}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}@media (max-width:440px){.pattern-progress__text .muted{display:none}}
