.share-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));background:#000a}.share-sheet{display:flex;flex-direction:column;gap:12px;width:100%;max-width:420px;max-height:100%;overflow:auto;padding:16px;border:1px solid var(--border);border-radius:var(--radius, 14px);background:var(--panel);color:var(--text);box-shadow:var(--shadow-lg, none)}.share-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.share-head h2{margin:0;font-family:var(--font-display, inherit);font-size:1.05rem}.share-head button{min-width:44px;min-height:44px}.share-preview{display:flex;align-items:center;justify-content:center;aspect-ratio:1080 / 1350;max-height:60vh;max-height:60dvh;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--bg)}.share-preview img{display:block;width:100%;height:100%;object-fit:contain}.share-actions{display:flex;flex-wrap:wrap;gap:8px}.share-actions button{flex:1 1 140px;min-height:44px}.backup-reminder{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:12px 14px;border:1px solid var(--accent);border-radius:var(--radius, 10px);background:var(--accent-soft, var(--panel))}.backup-reminder-icon{font-size:1.5rem}.backup-reminder p{flex:1 1 240px;margin:0}.backup-reminder p .hint{display:block;margin-top:2px}.backup-reminder-actions{display:flex;flex-wrap:wrap;gap:8px}@media (pointer: coarse),(max-width: 640px){.backup-reminder-actions{flex:1 1 100%}.backup-reminder-actions button{flex:1;min-height:44px}}.share-toggle{display:flex;gap:4px;padding:4px;border:1px solid var(--border);border-radius:var(--radius-sm, 8px);background:var(--bg)}.share-toggle button{flex:1;min-height:40px;background:transparent;color:var(--text);font-weight:600}.share-toggle button.active{background:var(--accent);color:var(--on-accent, #fff)}.share-month{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--muted)}.share-month select{min-height:44px;font-size:max(16px,1em)}.share-preview.busy img{opacity:.5;transition:opacity .2s}.activity-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}@media (pointer: coarse),(max-width: 640px){.recap-button{min-height:44px}}.account .account-pitch{margin:0}.account-signed-out{display:flex;flex-direction:column;align-items:flex-start;gap:10px}.account-signed-out .hint{margin:0}.account-who{display:flex;align-items:center;gap:12px}.account-who>div{display:flex;flex-direction:column;min-width:0}.account-who strong{font-family:var(--font-display);font-size:1.1rem}.account-who .hint{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{border-radius:50%;flex-shrink:0;object-fit:cover;background:var(--accent-soft, var(--border))}.avatar-initials{display:inline-flex;align-items:center;justify-content:center;font-weight:700;color:var(--accent-strong, var(--accent))}.account-sync{margin:0;display:flex;align-items:center;gap:8px;font-size:.9rem}.account-usage{display:flex;flex-direction:column;gap:4px;max-width:420px}.account-usage .progress-bar.full>*{background:var(--warm, var(--error))}.account .notice.account-quota{margin:0;border-left-color:var(--warm, var(--error))}.account-actions{display:flex;flex-wrap:wrap;gap:8px}.account a.button,.gb-modal a.button{display:inline-flex;align-items:center;justify-content:center;padding:7px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text);font-weight:600;text-decoration:none}.account a.button:hover{border-color:var(--accent)}.account-danger{margin:0}.account-danger .link{padding:0}.sync-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0}.tone-busy .sync-dot{background:var(--gold, #c98a00);animation:sync-pulse 1s ease-in-out infinite alternate}.tone-offline .sync-dot{background:var(--muted)}.tone-warn .sync-dot{background:var(--warm, #c98a00)}.tone-error .sync-dot{background:var(--error)}@keyframes sync-pulse{to{opacity:.3}}@media (prefers-reduced-motion: reduce){.tone-busy .sync-dot{animation:none}}.sync-indicator{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border-radius:50%;border:1px solid var(--border);background:var(--panel);color:var(--muted);box-shadow:var(--shadow-sm)}header .sync-indicator{margin-left:auto}header .timer-pill+.sync-indicator{margin-left:0}.sync-indicator:hover{color:var(--text);border-color:var(--accent);background:var(--panel)}.sync-indicator svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}.sync-indicator .sync-dot{position:absolute;right:7px;bottom:8px;width:9px;height:9px;border:2px solid var(--panel);box-sizing:content-box}.gb-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:center;justify-content:center;background:#000a;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.gb-modal{display:flex;flex-direction:column;gap:12px;width:100%;max-width:440px;max-height:100%;overflow:auto;padding:20px;border:1px solid var(--border);border-radius:var(--radius, 14px);background:var(--panel);color:var(--text);box-shadow:var(--shadow-lg, none)}.gb-modal h2{margin:0;font-family:var(--font-display);font-size:1.25rem}.gb-modal p{margin:0}.gb-modal-actions{display:flex;flex-wrap:wrap;gap:8px}.gb-modal-actions button{flex:1 1 140px;min-height:44px}.gb-modal button.danger{background:var(--error);color:#fff}.account-choice{border:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.account-choice legend{padding:0;margin-bottom:4px}.account-choice label{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer}.account-choice label:has(input:checked){border-color:var(--accent);background:var(--accent-soft, transparent)}.account-choice label>span{display:flex;flex-direction:column;gap:2px}.account-choice input{margin-top:3px}.account-confirm{display:flex;flex-direction:column;gap:4px;font-size:.9rem;color:var(--muted)}.account-confirm input{font-size:max(16px,1em)}.gsi-button{display:inline-flex;align-items:center;gap:10px;height:40px;padding:0 12px;border-radius:20px;border:1px solid #747775;background:#fff;color:#1f1f1f;font-family:Roboto,system-ui,-apple-system,Segoe UI,Arial,sans-serif;font-size:14px;font-weight:500;letter-spacing:.25px;box-shadow:none;white-space:nowrap}.gsi-button:hover:not(:disabled){background:#f8f8f8;border-color:#747775;box-shadow:0 1px 2px #3c40434d,0 1px 3px 1px #3c404326}.gsi-button:disabled{opacity:.6}.gsi-logo{width:20px;height:20px;flex-shrink:0}@media (prefers-color-scheme: dark){.gsi-button{background:#131314;border-color:#8e918f;color:#e3e3e3}.gsi-button:hover:not(:disabled){background:#1f1f20;border-color:#8e918f}}@media (pointer: coarse),(max-width: 640px){.account-actions>*{min-height:44px;flex:1 1 140px}.gsi-button{height:44px}}.signin-hint{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:2px}.signin-hint .link{padding:0;min-height:0;font-size:inherit}.signin-hint .signin-hint-dismiss{color:var(--muted);font-weight:400}.signin-hint .error{margin:0}.timer{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent)}.timer-clock{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-display);font-size:1.9rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}.timer.compact .timer-clock{font-size:1.3rem}.timer-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.timer-dot{width:10px;height:10px;border-radius:50%;background:var(--muted);flex:none}.timer.running .timer-dot,.timer-pill.running .timer-pill-clock:before{background:var(--warm);animation:timer-pulse 1.6s ease-in-out infinite}@keyframes timer-pulse{50%{opacity:.35}}.timer-pill{display:inline-flex;align-items:center;gap:6px;max-width:260px;padding:6px 12px;border-radius:99px;background:var(--panel);color:var(--text);border:1px solid color-mix(in srgb,var(--warm) 45%,var(--border));box-shadow:var(--shadow-sm);font-weight:600;font-size:.85rem}.timer-pill:hover{background:var(--warm-soft)}.timer-pill-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.timer-pill-clock{display:inline-flex;align-items:center;gap:5px;font-variant-numeric:tabular-nums;color:var(--muted)}.timer-pill-clock:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--muted)}.timer-pill.running .timer-pill-clock{color:var(--warm-ink)}header .timer-pill{margin-left:auto}@media (max-width: 640px){header .timer-pill{position:fixed;z-index:5;right:12px;bottom:calc(76px + env(safe-area-inset-bottom));margin:0;box-shadow:var(--shadow);max-width:calc(100vw - 24px)}body:has(.timer-pill) .app{padding-bottom:calc(124px + env(safe-area-inset-bottom))}body:has(.timer-pill) .toasts{bottom:calc(124px + env(safe-area-inset-bottom))}.timer-clock{font-size:1.6rem}.timer-actions{width:100%}.timer-actions button:not(.link){flex:1}}.offline-pill{position:fixed;z-index:900;top:max(8px,env(safe-area-inset-top));left:50%;transform:translate(-50%);margin:0;padding:6px 14px;border:1px solid var(--border);border-radius:99px;background:var(--panel);color:var(--text);box-shadow:var(--shadow, 0 2px 10px #0002);font-size:.85rem;font-weight:600;white-space:nowrap;pointer-events:none}@media (min-width: 641px){.offline-pill{top:76px}}.update-banner{position:fixed;z-index:900;left:16px;bottom:max(16px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:8px 12px;max-width:calc(100vw - 32px);padding:10px 10px 10px 16px;border:1px solid var(--accent);border-radius:var(--radius, 12px);background:var(--panel);color:var(--text);box-shadow:var(--shadow-lg, 0 6px 24px #0003);font-size:.9rem}.update-banner span{flex:1}@media (max-width: 640px){.update-banner{right:16px;bottom:calc(80px + env(safe-area-inset-bottom))}}@media (pointer: coarse),(max-width: 640px){.update-banner button{min-height:44px}}.moved-notice{padding:10px 16px;background:var(--accent-soft, #e6f0e8);border-bottom:1px solid var(--border);font-size:.9rem;text-align:center}.moved-notice p{margin:0}.moved-notice ol{max-width:640px;margin:8px auto 0;padding-left:20px;text-align:left;display:grid;gap:4px}.moved-notice button.link{padding:0 2px;font-size:inherit}.confetti-canvas{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:1001}.toasts{position:fixed;z-index:1000;left:16px;bottom:16px;display:flex;flex-direction:column;align-items:flex-start;gap:8px;pointer-events:none;max-width:calc(100vw - 32px)}.toast{pointer-events:auto;display:flex;align-items:center;gap:12px;width:340px;max-width:100%;padding:12px 10px 12px 14px;background:var(--panel);color:var(--text);border:1px solid color-mix(in srgb,var(--gold) 55%,var(--border));border-radius:var(--radius);box-shadow:var(--shadow-lg);animation:toast-in .35s cubic-bezier(.2,.9,.3,1.2)}.toast-icon{flex:none;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;font-size:1.4rem;background:color-mix(in srgb,var(--gold) 18%,transparent)}.toast-text{display:flex;flex-direction:column;min-width:0;flex:1}.toast-text strong{font-family:var(--font-display);font-size:1rem}.toast-text span{font-size:.82rem;color:var(--muted)}.toasts .toast-close{flex:none;align-self:flex-start;background:none;color:var(--muted);border:none;padding:2px 6px;min-height:0;min-width:0;font-size:.85rem}@keyframes toast-in{0%{opacity:0;transform:translateY(16px) scale(.96)}}@media (max-width: 640px){.toasts{left:12px;right:12px;bottom:calc(80px + env(safe-area-inset-bottom));align-items:stretch;max-width:none}.toast{width:auto}}.finish-moment{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999;display:grid;place-items:center;padding:16px;background:color-mix(in srgb,var(--bg) 55%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade-in .25s ease-out}.finish-card{width:min(360px,100%);text-align:center;padding:28px 24px 22px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);animation:pop-in .45s cubic-bezier(.2,.9,.3,1.3)}.finish-card h2{margin:4px 0 2px;font-size:2rem;color:var(--accent)}.finish-emoji{font-size:3rem;line-height:1}.finish-name{margin:0;font-weight:600;font-size:1.1rem;overflow-wrap:anywhere}.finish-stars{margin:10px 0 0;font-size:1.6rem;letter-spacing:2px;color:var(--gold-ink)}.finish-stars span{color:var(--border)}.finish-time{margin:8px 0 18px;color:var(--muted)}.finish-card button{min-width:120px}@keyframes pop-in{0%{opacity:0;transform:scale(.85)}}@keyframes fade-in{0%{opacity:0}}.toast-action{align-self:flex-start;margin-top:6px;padding:5px 12px;font-size:.85rem}.public-page{max-width:760px;margin:0 auto;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 16px max(16px,env(safe-area-inset-left))}.public-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:24px}.public-head .brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text)}.public-brand{font-family:var(--font-display);font-size:1.4rem;font-weight:700}.public-brand span{color:var(--accent-strong, var(--accent))}.public-back{color:var(--accent-strong, var(--accent));font-weight:600;text-decoration:none}.public-back:hover{text-decoration:underline}.public-article{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius, 14px);padding:24px clamp(16px,4vw,40px) 32px;box-shadow:var(--shadow-sm);line-height:1.6}.public-article h1{margin:0 0 4px;font-family:var(--font-display);font-size:clamp(1.8rem,5vw,2.4rem);line-height:1.15}.public-article h2{margin:28px 0 6px;font-family:var(--font-display);font-size:1.2rem}.public-article p,.public-article ul{margin:8px 0}.public-article ul{padding-left:1.2em}.public-article li+li{margin-top:6px}.public-article a{color:var(--accent-strong, var(--accent))}.public-article code{font-size:.9em;background:var(--bg);padding:1px 5px;border-radius:4px}.public-lead{font-size:1.08rem}body .app{min-height:100vh;min-height:100svh}.site-footer{max-width:1240px;margin:0 auto;padding:8px 16px max(24px,env(safe-area-inset-bottom));display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 16px;color:var(--muted);font-size:.8rem}.site-footer nav{display:flex;gap:16px}.site-footer a{color:var(--muted);text-decoration:none;font-weight:600}.site-footer a:hover{color:var(--text);text-decoration:underline}.site-footer p{margin:0}@media (max-width: 640px){body .app{padding-bottom:16px}body .app~.site-footer{padding-bottom:calc(88px + env(safe-area-inset-bottom))}.site-footer{justify-content:center;text-align:center}.site-footer a{padding:8px 4px}}@font-face{font-family:Fraunces;font-style:normal;font-weight:500 700;font-display:swap;src:url(/fonts/fraunces-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-weight:500 700;font-display:swap;src:url(/fonts/fraunces-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/roboto-500-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/roboto-500-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--bg: #f5efe3;--panel: #fffdf8;--text: #2a2722;--muted: #716a5d;--accent: #3c784b;--accent-strong: #2f6440;--accent-soft: color-mix(in srgb, var(--accent) 14%, transparent);--on-accent: #fff;--warm: #c8643b;--warm-soft: color-mix(in srgb, var(--warm) 14%, transparent);--gold: #d99a1e;--warm-ink: #a4502e;--gold-ink: #b37f19;--border: #e4dccb;--error: #b3261e;--shadow-sm: 0 1px 2px #3b2f1a14;--shadow: 0 1px 2px #3b2f1a0f, 0 6px 18px -6px #3b2f1a26;--shadow-lg: 0 2px 4px #3b2f1a14, 0 18px 40px -12px #3b2f1a40;--radius: 14px;--radius-sm: 9px;--font-display: "Fraunces", Georgia, "Times New Roman", serif;--font-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fabric: radial-gradient(circle at 1px 1px, #8a7a5a1a 1px, transparent 1.2px) 0 0 / 7px 7px;color-scheme:light dark;font-family:var(--font-body)}@media (prefers-color-scheme: dark){:root{--bg: #171a16;--panel: #20241f;--text: #ecebe4;--muted: #a39f92;--accent: #7cbf87;--accent-strong: #9ad3a3;--on-accent: #10200f;--warm: #e58a62;--gold: #f0bb4a;--warm-ink: var(--warm);--gold-ink: var(--gold);--border: #343a32;--error: #ff8a80;--shadow-sm: 0 1px 2px #0006;--shadow: 0 1px 2px #0005, 0 8px 22px -8px #0009;--shadow-lg: 0 2px 4px #0006, 0 20px 44px -14px #000b;--fabric: radial-gradient(circle at 1px 1px, #ffffff0b 1px, transparent 1.2px) 0 0 / 7px 7px}}*{box-sizing:border-box}body{margin:0;background:var(--fabric),var(--bg);color:var(--text);line-height:1.45;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:-.01em}::selection{background:color-mix(in srgb,var(--accent) 30%,transparent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{max-width:1240px;margin:0 auto;padding:16px}header h1{margin:0;font-size:1.6rem}header p{margin:4px 0 16px;color:var(--muted)}.layout{display:grid;grid-template-columns:290px 1fr;gap:20px;align-items:start}@media (max-width: 800px){.layout{grid-template-columns:1fr}}aside{display:flex;flex-direction:column;gap:12px}main{min-width:0}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow-sm)}.panel h2{margin:0;font-size:1.05rem}.panel label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--muted)}.panel label.check{flex-direction:row;align-items:center;gap:6px}.row{display:flex;gap:8px;align-items:center}input,select,button,textarea{font:inherit;padding:7px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text)}input:not([type=checkbox]):not([type=radio]):not([type=range]):focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input[type=checkbox],input[type=radio],input[type=range],progress{accent-color:var(--accent)}button{background:var(--accent);color:var(--on-accent);border:1px solid transparent;cursor:pointer;font-weight:600;transition:background .15s,border-color .15s,transform .1s,box-shadow .15s}button:hover:not(:disabled){background:var(--accent-strong)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.5;cursor:default}.hint{margin:0;font-size:.82rem;color:var(--muted)}.error{color:var(--error);margin:0;font-size:.9rem}.empty{color:var(--muted);padding:48px 16px;text-align:center;border:2px dashed var(--border);border-radius:var(--radius)}.preview{image-rendering:pixelated;width:100%;max-height:200px;object-fit:contain;background:repeating-conic-gradient(#e6e1d6 0,#e6e1d6 25%,#fff 0,#fff 50%) 0 0 / 16px 16px;border-radius:var(--radius-sm)}.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:12px}.toolbar h2{margin:0 auto 0 0;text-transform:capitalize;font-size:1.45rem}.chart-scroll{overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:#fff;max-height:75vh;box-shadow:var(--shadow-sm)}.chart{display:block}.legend{margin-top:16px}.summary{font-size:.9rem}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--border)}th{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}.swatch{display:inline-block;width:16px;height:16px;border-radius:4px;vertical-align:middle;border:1px solid #0003;margin-right:6px}.symbol{font-size:1.1rem}.print-only{display:none}header{position:sticky;top:0;z-index:6;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:-16px -16px 20px;padding:12px 16px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent)}header p{margin:0;font-size:.85rem}.brand{display:flex;align-items:center;gap:10px}.brand-mark{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-size:1.3rem;background:var(--accent-soft);box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--accent) 35%,transparent)}.brand h1{font-size:1.35rem;font-weight:700;line-height:1.1}.brand h1 span{color:var(--accent)}.tabs{display:flex;gap:2px;padding:4px;background:var(--panel);border:1px solid var(--border);border-radius:99px;box-shadow:var(--shadow-sm)}.tabs button{background:transparent;color:var(--muted);border:none;border-radius:99px;padding:7px 16px;display:flex;align-items:center;gap:6px}.tabs button:hover:not(.active){background:var(--accent-soft);color:var(--text)}.tabs button.active{background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-sm)}button.secondary{background:var(--panel);color:var(--text);border:1px solid var(--border)}button.secondary:hover:not(:disabled){background:var(--panel);border-color:var(--accent);color:var(--accent-strong)}button.link{background:none;color:var(--accent);padding:0 6px;font-weight:600;border:none}button.link:hover:not(:disabled){background:none;text-decoration:underline}.notice{background:var(--panel);border:1px solid color-mix(in srgb,var(--accent) 45%,var(--border));border-left:4px solid var(--accent);border-radius:var(--radius-sm);padding:10px 14px;display:flex;align-items:center;gap:8px;box-shadow:var(--shadow-sm);margin:0 0 16px;animation:rise .25s ease-out}.too-big{flex-wrap:wrap}.crash{max-width:560px;margin:40px auto}.crash h2,.crash p{margin:0}.too-big p{margin:0;flex:1 1 280px}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.inventory{display:flex;flex-direction:column;gap:16px}.bulk textarea{font:inherit;padding:8px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);resize:vertical}.inventory .toolbar{flex-wrap:wrap;margin:0}.inventory .toolbar h2{text-transform:none}.inventory .toolbar label.check{display:flex;align-items:center;gap:6px;font-size:.85rem}.thread-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}.thread{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;transition:border-color .15s}.thread.owned{border-color:color-mix(in srgb,var(--accent) 55%,var(--border));background:linear-gradient(var(--accent-soft),var(--accent-soft)),var(--panel)}.thread-info{display:flex;flex-direction:column;min-width:0;flex:1}.thread-info .hint{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.swatch.big{width:30px;height:30px;margin:0;flex-shrink:0;border-radius:50%;box-shadow:inset 0 -3px 6px #0002,inset 0 2px 3px #fff4}.stepper{display:flex;align-items:center;gap:2px}.stepper button{padding:2px 8px}.stepper input{width:52px;text-align:center;padding:4px}.status-ok{color:var(--accent)}.status-short{color:var(--gold-ink)}.status-missing{color:var(--error)}.shopping{margin-top:16px}.shop-picker{align-items:flex-end;flex-wrap:wrap}.grow{flex:1;min-width:0}.buy-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:.9rem}.buy-list li{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--bg);border-radius:var(--radius-sm)}.buy-list .swatch{margin:0}a.buy{color:var(--accent);font-weight:600;text-decoration:none;white-space:nowrap}a.buy:hover{text-decoration:underline}.journal,.project-detail{display:flex;flex-direction:column;gap:12px}.journal .toolbar,.project-detail .toolbar{margin:0;flex-wrap:wrap}.journal .toolbar h2,.project-detail .toolbar h2{text-transform:none}.journal h3{margin:12px 0 10px;font-size:1.1rem;display:flex;align-items:center;gap:8px}.journal h3 .count{font-family:var(--font-body);font-size:.75rem;font-weight:700;color:var(--muted);background:var(--border);border-radius:99px;padding:1px 8px}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.project-card{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);transition:transform .18s,box-shadow .18s,border-color .18s}.project-card:hover{border-color:color-mix(in srgb,var(--accent) 50%,var(--border));box-shadow:var(--shadow);transform:translateY(-2px)}.card-main{display:flex;gap:14px;align-items:center;text-align:left;background:none;color:var(--text);padding:12px;font-weight:400;border-radius:0;border:none}.card-main:hover:not(:disabled){background:none}.card-main strong{font-family:var(--font-display);font-size:1.08rem;font-weight:600}.card-main>.grow{display:flex;flex-direction:column;gap:4px}.log-btn{margin:0 12px 12px}.thumb{flex-shrink:0;border-radius:11px;background:repeating-conic-gradient(#e6e1d6 0,#e6e1d6 25%,#fff 0,#fff 50%) 0 0 / 12px 12px;box-shadow:inset 0 0 0 1px #0000000f;overflow:hidden;display:flex;align-items:center;justify-content:center}.thumb img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated}.thumb.photo-thumb{background:var(--border)}.thumb.photo-thumb img{object-fit:cover;image-rendering:auto}.thumb-placeholder{font-size:1.8rem}.progress-bar{height:8px;background:var(--border);border-radius:99px;overflow:hidden;display:block}.progress-bar.small{height:5px}.progress-bar>*{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 70%,var(--gold)));transition:width .4s ease-out}.badge{display:inline-block;padding:2px 9px;border-radius:99px;font-size:.72rem;font-weight:700;letter-spacing:.02em;background:var(--border);color:var(--text)}.badge.in-progress{background:var(--warm-soft);color:var(--warm-ink)}.badge.finished{background:var(--accent-soft);color:var(--accent-strong)}.back{align-self:flex-start;padding:0}button.link.danger{color:var(--error)}.project-head{flex-direction:row;gap:16px;align-items:flex-start;flex-wrap:wrap}.project-head p{margin:2px 0}.project-name{font-family:var(--font-display);font-size:1.6rem;font-weight:700;border:1px solid transparent;background:transparent;width:100%;padding:2px 4px;margin-left:-4px}.project-name:hover,.project-name:focus{border-color:var(--border);background:var(--bg)}.project-actions{display:flex;flex-direction:column;gap:6px;min-width:150px}.finish-panel{border-color:var(--accent);box-shadow:var(--shadow)}.stars{display:inline-flex}.star{background:none;color:var(--border);font-size:1.6rem;padding:0 2px}.star.on{color:var(--gold-ink)}.star:hover:not(:disabled){background:none;transform:scale(1.12)}.entry-form label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--muted)}.entry-form label.check{flex-direction:row;align-items:center}.entry-form textarea{font:inherit;padding:8px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);resize:vertical}.entry-form input[type=number]{width:64px}.row.wrap{flex-wrap:wrap;align-items:flex-end;gap:16px}.moods{border:none;padding:0;margin:0;display:flex;gap:4px}.moods legend{font-size:.85rem;color:var(--muted);padding:0;margin-bottom:4px}.mood{background:var(--bg);border:1px solid var(--border);font-size:1.3rem;padding:2px 8px;border-radius:99px}.mood:hover:not(:disabled){background:var(--accent-soft)}.mood.active{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent)}.progress-input{flex-direction:row!important;align-items:center;gap:8px!important;color:var(--text)!important}.photo-row{display:flex;gap:8px;flex-wrap:wrap}.photo{position:relative;width:96px;height:96px;padding:0;border-radius:var(--radius-sm);overflow:hidden;background:var(--border);border:none}.photo img{width:100%;height:100%;object-fit:cover;display:block}.photo .remove{position:absolute;top:4px;right:4px;padding:0 6px;background:#000a;font-size:.8rem}.timeline{list-style:none;margin:0;padding:0 0 0 22px;display:flex;flex-direction:column;gap:12px;position:relative}.timeline:before{content:"";position:absolute;left:7px;top:8px;bottom:8px;border-left:2px dashed color-mix(in srgb,var(--accent) 45%,transparent)}.entry{position:relative;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow-sm)}.entry:before{content:"";position:absolute;left:-21px;top:16px;width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--bg)}.entry-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.entry-date{font-weight:600}.entry-actions{margin-left:auto;display:flex}.entry-mood{font-size:1.2rem}.entry-text{margin:0;white-space:pre-wrap}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000d;display:flex;align-items:center;justify-content:center;z-index:10;cursor:zoom-out;padding:16px}.lightbox img{max-width:100%;max-height:100%;border-radius:8px}.profile{display:flex;flex-direction:column;gap:16px}.profile-head{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow-sm);display:flex;flex-wrap:wrap;align-items:center;gap:12px 32px}.profile-head h2{margin:0;font-size:1.6rem}.stat-row{display:flex;flex-wrap:wrap;gap:8px 28px;margin:0}.stat-row dt{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.stat-row dd{margin:0;font-family:var(--font-display);font-size:1.5rem;font-weight:700}.stat-row dd .hint{font-family:var(--font-body)}.stat-row dd .hint{font-weight:400}.welcome{display:flex;flex-direction:column;gap:6px;margin:0 0 18px}.welcome h2{margin:0;font-size:clamp(1.6rem,4vw,2.2rem);line-height:1.1}.steps{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px 20px;font-size:.9rem;font-weight:600}.steps li{display:flex;align-items:center;gap:8px}.steps span{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:.75rem;background:var(--accent);color:var(--on-accent)}.new-project{background:var(--panel);border:2px dashed color-mix(in srgb,var(--accent) 55%,transparent);border-radius:var(--radius);padding:18px;animation:rise .25s ease-out}.choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}.choice{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:16px;font-weight:400}.choice:hover:not(:disabled){background:var(--bg);border-color:var(--accent);box-shadow:var(--shadow)}.choice strong{font-family:var(--font-display);font-size:1.1rem}.choice-icon{font-size:1.4rem;width:44px;height:44px;display:grid;place-items:center;border-radius:12px;background:var(--accent-soft)}.kit-form label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--muted)}.kit-form textarea{font:inherit;padding:8px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);resize:vertical}.kit-form-grid{display:flex;gap:16px;flex-wrap:wrap}.kit-fields{flex:1;min-width:220px;display:flex;flex-direction:column;gap:8px}.kit-fields input{width:100%}.cover-input{cursor:pointer;align-items:center;text-align:center;width:112px}.backup .row{flex-wrap:wrap}.source-tabs{display:flex;gap:2px;padding:3px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm)}.source-tabs button{flex:1;padding:6px 4px;font-size:.8rem;background:transparent;color:var(--muted);border:none;border-radius:7px}.source-tabs button:hover:not(.active){background:var(--accent-soft);color:var(--text)}.source-tabs button.active{background:var(--panel);color:var(--text);box-shadow:var(--shadow-sm)}.stitch-bar{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin-bottom:8px}.stitch-bar .error{margin:0}.chart-tools{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px}.chart-tools button{min-width:36px}.chart-tools input[type=range]{width:120px}.chart.stitching{cursor:crosshair;user-select:none;-webkit-user-select:none}.legend tr.focusable{cursor:pointer}.legend tr.focusable:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.legend tr.focused{background:color-mix(in srgb,var(--accent) 22%,transparent)}details.settings{display:block}details.settings summary{cursor:pointer}details.settings summary{list-style:none;display:flex;align-items:center;gap:6px}details.settings summary::-webkit-details-marker{display:none}details.settings summary:before{content:"▸";color:var(--muted);transition:transform .15s}details.settings[open] summary:before{transform:rotate(90deg)}.settings-body{display:flex;flex-direction:column;gap:8px;margin-top:8px}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.photo-inputs{display:flex;flex-direction:column;gap:4px}.photo-inputs .hint{font-size:.85rem}.entry-form label.file-btn{flex-direction:row;align-items:center;justify-content:center;gap:6px;padding:6px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-size:.9rem;font-weight:600;cursor:pointer}.entry-form label.file-btn:hover{border-color:var(--accent)}.entry-form label.file-btn:focus-within{outline:2px solid var(--accent);outline-offset:2px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.camera-only{display:none!important}@media (pointer: coarse){.camera-only{display:flex!important}}.lightbox-close{position:absolute;top:calc(12px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right));width:44px;height:44px;border-radius:50%;background:#0008;color:#fff;font-size:1.1rem;padding:0}.tab-short{display:none}.app{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));padding-top:max(16px,env(safe-area-inset-top));padding-bottom:max(16px,env(safe-area-inset-bottom))}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}img{max-width:100%}@media (pointer: coarse),(max-width: 640px){input,select,textarea,.bulk textarea,.entry-form textarea,.kit-form textarea{font-size:max(16px,1em)}input:not([type=checkbox]):not([type=radio]):not([type=range]),select{min-height:44px}button,.entry-form label.file-btn{min-height:44px}button.link{padding:0 10px}input[type=checkbox],input[type=radio]{width:22px;height:22px}.panel label.check,.entry-form label.check,.inventory .toolbar label.check,input[type=range]{min-height:44px}.stepper{gap:4px}.stepper button{min-width:44px;font-size:1.2rem;padding:0}.stepper input{width:60px}.mood{min-width:48px;min-height:48px;font-size:1.5rem}.moods{gap:6px}.star{min-width:44px;font-size:2rem}.photo .remove{min-height:32px;min-width:32px}.log-btn{margin:0 10px 10px}.source-tabs button{min-height:44px}details.settings summary{min-height:32px}.back{min-height:44px}.buy-list li{min-height:44px;padding-top:0;padding-bottom:0}a.buy{padding:12px 4px 12px 12px}}@media (max-width: 800px){.source-preview{display:none}.layout{grid-template-columns:minmax(0,1fr)}.source-tabs button{min-width:0}.toolbar{flex-wrap:wrap}.chart-scroll{max-height:70vh;max-height:70dvh}}@media (max-width: 640px){.app{padding-bottom:calc(76px + env(safe-area-inset-bottom))}header{position:static;margin-bottom:12px;padding-top:max(12px,env(safe-area-inset-top));background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;border-bottom:none}header h1{font-size:1.25rem}header p{display:none}.tabs{position:fixed;left:0;right:0;bottom:0;z-index:5;border-radius:0;border:none;box-shadow:none;backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);gap:0;padding:4px max(4px,env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) max(4px,env(safe-area-inset-left));background:color-mix(in srgb,var(--panel) 88%,transparent);border-top:1px solid var(--border);box-shadow:0 -2px 10px #0000000f}.tabs button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:56px;padding:4px;border:none;border-radius:10px;font-size:.75rem}.tabs button.active{background:transparent;color:var(--accent-strong);box-shadow:none}.tabs button:hover:not(.active){background:transparent}.tabs button.active .tab-icon{background:color-mix(in srgb,var(--accent) 22%,transparent)}.tab-icon{font-size:1.3rem;line-height:1;padding:3px 16px;border-radius:99px}.tab-long{display:none}.tab-short{display:inline}.toolbar h2{flex-basis:100%}.journal .toolbar h2,.project-detail .toolbar h2{flex-basis:auto}.notice{flex-wrap:wrap}.project-grid,.choice-grid,.thread-grid{grid-template-columns:1fr}.log-btn{font-size:1rem}.project-head{gap:12px}.project-head .thumb{width:72px!important;height:72px!important}.project-head>.grow{flex-basis:calc(100% - 84px)}.project-actions{flex-direction:row;flex-wrap:wrap;width:100%;min-width:0}.project-actions>button:not(.link){flex:1 1 140px}.entry-form .row.wrap{gap:4px 12px}.entry-form .row.wrap>label:not(.check){flex:1 1 140px}.entry-form input[type=date]{width:100%}.entry-form input[type=number]{width:60px}.moods{flex-wrap:wrap}.progress-input{flex:1 1 100%}.progress-input input[type=range]{flex:1}.photo-inputs .row>label{flex:1}.entry-form>.row:last-child>button{flex:1}.photo-row{display:grid;grid-template-columns:repeat(3,1fr)}.photo{width:100%;height:auto;aspect-ratio:1}.entry{padding:10px 12px}.timeline{padding-left:18px}.timeline:before{left:5px}.entry:before{left:-17px}.entry-head{row-gap:0}.kit-form-grid{flex-direction:column;align-items:stretch}.cover-input{flex-direction:row!important;width:100%;text-align:left;gap:12px!important}.cover-input .thumb{width:72px!important;height:72px!important}.kit-fields{min-width:0}.inventory .toolbar input:not([type=checkbox]){flex:1 1 100%}.profile-head{gap:12px}.stat-row{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;width:100%}.stat-row>div:last-child{grid-column:span 2}.summary{font-size:.85rem}.table-scroll{margin:0 -16px;padding:0 16px}.table-scroll table{min-width:480px}.shop-picker>label{flex:1 1 100%}.buy-list li{flex-wrap:wrap}}@media print{.table-scroll{overflow:visible;margin:0;padding:0}.table-scroll table{min-width:0}}.eyebrow{margin:0;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--warm-ink)}.hero{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px;padding:22px 24px;border-radius:calc(var(--radius) + 4px);border:1px solid var(--border);box-shadow:var(--shadow);background:radial-gradient(120% 140% at 100% 0%,var(--accent-soft),transparent 60%),radial-gradient(90% 120% at 0% 100%,var(--warm-soft),transparent 55%),var(--panel);animation:rise .3s ease-out}.hero-text{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1 1 280px}.hero h2{margin:0;font-size:clamp(1.4rem,3.2vw,2rem);line-height:1.15}.hero-card{display:flex;flex-direction:column;gap:10px;padding:12px;flex:0 1 340px;min-width:0;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.hero-open{display:flex;align-items:center;gap:12px;text-align:left;background:none;color:var(--text);padding:0;border:none;font-weight:400}.hero-open:hover:not(:disabled){background:none}.hero-open:hover strong{color:var(--accent-strong)}.hero-open>.grow{display:flex;flex-direction:column;gap:4px;min-width:0}.hero-open strong{font-family:var(--font-display);font-size:1.1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 640px){.hero{padding:18px 16px}.hero-card{flex-basis:100%}}h1 .hint,h2 .hint,h3 .hint{font-family:var(--font-body);font-weight:500;letter-spacing:0}.rating{color:var(--gold-ink);letter-spacing:.05em}.starter{display:flex;flex-direction:column;gap:8px;padding:24px;border:2px dashed color-mix(in srgb,var(--accent) 40%,var(--border));border-radius:var(--radius);background:color-mix(in srgb,var(--panel) 70%,transparent)}.starter h2{margin:0;font-size:1.5rem}.starter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:10px;margin-top:8px}.starter-item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);font-weight:600;font-size:.85rem;text-transform:capitalize;box-shadow:var(--shadow-sm)}.starter-item:hover:not(:disabled){background:var(--panel);border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow)}.starter-item img{width:64px;height:64px;image-rendering:pixelated}@media (max-width: 640px){.starter{padding:16px}.starter-grid{grid-template-columns:repeat(4,1fr);gap:6px}.starter-item{padding:6px 2px;font-size:.72rem}.starter-item img{width:48px;height:48px}}@media (max-width: 800px){.layout:has(.starter) main{order:-1}}@media print{:root{--bg: #fff;--text: #000;--border: #999}.no-print,.toasts,.confetti-canvas,.finish-moment{display:none!important}.print-only{display:block;text-transform:capitalize}.app{padding:0}.layout{display:block}.chart-scroll{overflow:visible;max-height:none;border:none}.chart{max-width:100%;height:auto}.legend{break-before:page}.swatch{print-color-adjust:exact;-webkit-print-color-adjust:exact}}
