:root{--bg: #ece1cf;--surface: #f8f0e2;--ink: #35291c;--ink-soft: #7c6a52;--line: #d5c3a4;--wood: #b08856;--wood-deep: #7d5c34;--char: #35291c;--shadow: #35291c;--focus: #7d5c34;--queued: #c08a1e;--progress: #c05a37;--finished: #5a7d55;--radius: 14px;--tap: 44px;--font-hand: "Caveat", "Comic Sans MS", cursive;--font-mono: "Space Mono", ui-monospace, monospace;--font-body: "DM Sans", system-ui, sans-serif}@media (prefers-color-scheme: dark){:root{--bg: #201a12;--surface: #2c2419;--ink: #f1e7d6;--ink-soft: #bfa886;--line: #483825;--wood: #c99f68;--wood-deep: #dcb684;--char: #0f0a05;--shadow: #000;--focus: #f0c069;--queued: #e6ac3c;--progress: #e57a55;--finished: #83ad7d}}*{box-sizing:border-box}html,body{margin:0;min-width:320px;overflow-x:clip}body{background:var(--bg);color:var(--ink);font:400 16px/1.55 var(--font-body)}.grain{pointer-events:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;opacity:.4;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}h1,h2,h3,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}.eyebrow,.ctl,.field label,.meta,.badge,.thread{text-transform:uppercase;letter-spacing:.07em}.skip-link{position:absolute;left:-999px;top:8px;z-index:20;background:var(--wood-deep);color:#fff;padding:8px 16px;border-radius:8px}.skip-link:focus{left:12px}.shell{position:relative;z-index:1;max-width:1040px;margin:auto;padding:40px 20px 64px}.masthead{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;padding-bottom:20px;border-bottom:3px dashed var(--line)}.eyebrow{font:700 12px/1 var(--font-mono);color:var(--wood-deep)}h1{font:700 clamp(3rem,9vw,5rem)/.85 var(--font-hand);margin-top:4px}h1 span{color:var(--wood)}.tagline{margin-top:8px;max-width:46ch;color:var(--ink-soft)}.btn{min-height:var(--tap);padding:0 20px;border-radius:10px;font:600 15px/1 var(--font-body);border:2px solid var(--char);background:var(--surface);transition:transform .12s ease}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--wood);color:#fff;box-shadow:3px 3px 0 var(--shadow)}.btn-ghost{min-height:38px;padding:0 14px;border-color:var(--line);background:transparent}.btn-ghost.danger{color:var(--progress)}.btn-ghost.armed{background:var(--progress);color:#fff;border-color:var(--char)}.banner-slot:empty{display:none}.banner{margin:20px 0 0;padding:14px 18px;border:2px solid var(--wood-deep);border-left-width:8px;border-radius:10px;background:color-mix(in srgb,var(--wood) 16%,var(--surface));color:var(--ink);font-weight:600}.toolbar{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0 20px}.ctl{display:flex;flex-direction:column;gap:4px;font:700 11px/1 var(--font-mono);color:var(--ink-soft)}.ctl select{min-height:40px;padding:0 12px;border:2px solid var(--line);border-radius:8px;background:var(--surface)}.loading{display:grid;gap:16px;place-items:center;padding:56px 0}.spinner{width:32px;height:32px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--wood);animation:spin .8s linear infinite}.loading-text{font:700 13px/1 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}@keyframes spin{to{transform:rotate(360deg)}}.project-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.card{--accent: var(--queued);position:relative;overflow:hidden;display:flex;flex-direction:column;gap:10px;padding:22px 20px 20px;background:var(--surface);border:2px solid var(--char);border-top:6px solid var(--accent);border-radius:var(--radius);box-shadow:4px 4px 0 var(--shadow);outline:2px dashed color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:-8px;transform:rotate(var(--tilt, 0deg));transition:transform .15s ease;animation:stitch .28s cubic-bezier(.2,1.2,.4,1)}.card[data-status=in-progress]{--accent: var(--progress)}.card[data-status=finished]{--accent: var(--finished)}.card:hover{transform:rotate(0) translateY(-2px)}@keyframes stitch{0%{opacity:0;transform:scale(1.1) rotate(var(--tilt, 0deg))}}.hoop{pointer-events:none;position:absolute;top:-30px;right:-30px;width:92px;height:92px;border-radius:50%;border:8px solid color-mix(in srgb,var(--wood) 45%,transparent);opacity:.5}.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.proj-name{font:700 1.4rem/1.05 var(--font-hand)}.badge{align-self:flex-start;white-space:nowrap;padding:4px 11px;border-radius:999px;font:700 10px/1.4 var(--font-mono);color:#fff;background:var(--accent)}.desc{color:var(--ink);font-size:14px}.meta{display:flex;align-items:center;gap:6px;font:400 11px/1.3 var(--font-mono);color:var(--ink-soft);flex-wrap:wrap}.meta .dot{opacity:.6}.threads{display:flex;gap:5px;flex-wrap:wrap}.thread{padding:3px 9px;border-radius:999px;font:700 10px/1.4 var(--font-mono);border:1.5px solid var(--line);color:var(--ink-soft);background:color-mix(in srgb,var(--wood) 8%,transparent)}.notes{font-size:13px;color:var(--ink-soft);font-style:italic}.actions{display:flex;gap:6px;margin-top:auto;padding-top:8px;border-top:1.5px dashed var(--line)}.card-error{margin:0;padding:8px 10px;border-radius:8px;font-size:13px;font-weight:600;background:color-mix(in srgb,var(--progress) 16%,var(--surface));border:1.5px solid var(--progress)}.empty{display:grid;place-items:center;gap:12px;text-align:center;padding:48px 20px}.empty-art svg{fill:none;stroke:var(--wood);stroke-width:2.5;stroke-linecap:round}.empty-art .cloth{fill:color-mix(in srgb,var(--surface) 80%,var(--wood));stroke:var(--line);stroke-dasharray:3 3}.empty h2{font:700 1.8rem/1 var(--font-hand)}.empty p{color:var(--ink-soft);max-width:34ch}.dialog{width:min(520px,100%);padding:0;border:3px solid var(--char);border-radius:16px;background:var(--surface);color:var(--ink);box-shadow:8px 8px 0 var(--shadow)}.dialog::backdrop{background:color-mix(in srgb,var(--char) 55%,transparent)}.dialog-form{display:grid;gap:13px;padding:24px}.dialog h2{font:700 2rem/1 var(--font-hand)}.field{display:grid;gap:6px}.field label{font:700 12px/1 var(--font-mono);color:var(--ink-soft)}.field input,.field select,.field textarea{padding:10px 12px;border:2px solid var(--line);border-radius:10px;background:var(--bg);min-height:var(--tap)}.field textarea{resize:vertical}.field input:hover,.field select:hover,.field textarea:hover{border-color:var(--ink-soft)}.field [aria-invalid=true]{border-color:var(--progress)}.hint{font-size:12px;color:var(--ink-soft)}.field-error,.form-note{margin:0;color:var(--progress);font-size:13px;font-weight:600}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.toast-root{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:40}.toast{padding:12px 20px;background:var(--char);color:var(--bg);border-radius:999px;font-weight:600;box-shadow:0 6px 20px color-mix(in srgb,var(--char) 40%,transparent)}@media (max-width: 560px){.toolbar{flex-direction:column}.ctl select{width:100%}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}.card{transform:none!important}}
