:root{--bg: #FAF7F1;--bg-sunken: #F3EFE7;--surface: #FFFFFF;--surface-raised: #FFFFFF;--line: #E8E2D6;--line-strong: #D9D2C3;--text: #2E2A23;--text-muted: #6F6A5E;--text-faint: #98917F;--sage-50: #F1F5EE;--sage-100: #E2EADC;--sage-200: #C6D6BD;--sage-300: #A3BC9C;--sage-400: #7FA07A;--sage-500: #6B8A66;--sage-600: #55735A;--sage-700: #435C49;--sage-800: #34473A;--terra-50: #FAF1EA;--terra-100: #F3E1D3;--terra-300: #D9A98E;--terra-500: #C0765A;--terra-600: #A85B40;--terra-700: #8A4A33;--ok-bg: #E9F2E6;--ok-line: #C9DEC2;--ok-text: #3E6B3E;--warn-bg: #FAF0DB;--warn-line: #EBD9AC;--warn-text: #8A621B;--err-bg: #F9E9E5;--err-line: #EFC9BE;--err-text: #A04432;--info-bg: #EEF3F0;--info-line: #D3DFD7;--info-text: #4A6353;--danger: #B3503F;--danger-hover: #9A4334;--brand-primary: var(--sage-600);--brand-primary-hover: var(--sage-700);--brand-primary-soft: var(--sage-100);--brand-primary-softer: var(--sage-50);--brand-primary-line: var(--sage-200);--brand-on-primary: #FFFFFF;--font-display: "Fraunces", Georgia, "Times New Roman", serif;--font-body: "Manrope", ui-sans-serif, system-ui, sans-serif;--fs-display: clamp(34px, 6vw, 40px);--fs-h2: 24px;--fs-h3: 19px;--fs-body: 15px;--fs-small: 13px;--fs-tiny: 12px;--fs-timer: clamp(56px, 17vw, 72px);--fs-timer-rest: clamp(72px, 22vw, 88px);--fs-stat: 32px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--radius-s: 10px;--radius-m: 14px;--radius-l: 20px;--radius-xl: 28px;--radius-full: 999px;--shadow-xs: 0 1px 2px rgba(46,42,35,.05);--shadow-s: 0 2px 6px rgba(46,42,35,.05), 0 10px 24px rgba(46,42,35,.05);--shadow-m: 0 4px 12px rgba(46,42,35,.07), 0 18px 40px rgba(46,42,35,.07);--shadow-l: 0 8px 20px rgba(46,42,35,.1), 0 28px 64px rgba(46,42,35,.12);--shadow-focus: 0 0 0 3px rgba(107,138,102,.28);--dur-fast: .15s;--dur: .2s;--dur-slow: .25s;--ease: cubic-bezier(.2, .6, .2, 1);font-family:var(--font-body);color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0;background:var(--bg)}body{font:400 var(--fs-body)/24px var(--font-body);background:radial-gradient(720px 360px at 85% -10%,rgba(163,188,156,.18),transparent 60%),var(--bg)}h1,h2,h3,.brand{font-family:var(--font-display);letter-spacing:-.01em}h1{font-size:var(--fs-display);line-height:1.15;font-weight:600;margin:0 0 8px}h2{font-size:var(--fs-h2);line-height:32px;font-weight:600;margin:0 0 8px}h3{font-size:var(--fs-h3);line-height:26px;font-weight:600;margin:0 0 8px}a{color:var(--sage-600);text-decoration:none}a:hover{text-decoration:underline}a:focus-visible{outline:2px solid var(--sage-500);outline-offset:2px;border-radius:4px}button,input,textarea,select{font:inherit}img{max-width:100%}.wrap{max-width:1080px;margin:0 auto;padding:24px 20px calc(96px + env(safe-area-inset-bottom))}.shell{max-width:480px;margin:0 auto;padding:10vh 20px 40px}.app{min-height:100%}.grid{display:grid;gap:16px}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.stack{display:grid;gap:14px}.list{display:grid;gap:10px}.hidden{display:none}.kicker{font:700 var(--fs-tiny)/16px var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--sage-600);margin:0 0 8px}.brand{font:600 22px/28px var(--font-display);letter-spacing:-.01em;color:var(--text)}.brand span{color:var(--brand-primary)}.pill{display:inline-block;font:700 var(--fs-tiny)/16px var(--font-body);text-transform:uppercase;letter-spacing:.12em;background:var(--bg-sunken);color:var(--text-muted);border:1px solid var(--line);border-radius:var(--radius-full);padding:5px 12px;margin:0 0 8px}.muted{color:var(--text-muted);font-size:var(--fs-small)}p.ok,div.ok,p.error,div.error,p.danger{margin:0;border-radius:var(--radius-m);padding:12px 16px;font-size:14px;font-weight:600;line-height:20px}p.ok,div.ok{background:var(--ok-bg);border:1px solid var(--ok-line);color:var(--ok-text)}p.error,div.error,p.danger{background:var(--err-bg);border:1px solid var(--err-line);color:var(--err-text)}.item .ok{background:var(--sage-50);border:1px solid var(--brand-primary-line);color:var(--sage-800);padding:6px 10px;border-radius:var(--radius-s);font-size:var(--fs-small);font-weight:500;margin-top:6px}.notice{margin:0;border-radius:var(--radius-m);padding:12px 16px;font-size:14px;font-weight:600;line-height:20px;background:var(--info-bg);border:1px solid var(--info-line);color:var(--info-text)}.notice.ok{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok-text)}.notice.warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-text)}.notice.error{background:var(--err-bg);border-color:var(--err-line);color:var(--err-text)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);padding:var(--space-5);box-shadow:var(--shadow-s)}.card h2{margin:0}.card h2+.muted{margin:4px 0 16px}.card .card{background:var(--bg);box-shadow:none}.card>.item+.item{margin-top:10px}.card pre{background:var(--bg-sunken);border:1px solid var(--line);border-radius:var(--radius-m);padding:16px;font:400 12px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text);overflow-x:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:12px 18px;border:0;border-radius:var(--radius-m);background:var(--brand-primary);color:var(--brand-on-primary);font:700 15px/1 var(--font-body);cursor:pointer;transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur-fast) var(--ease)}.btn:hover{background:var(--brand-primary-hover);box-shadow:var(--shadow-xs)}.btn:active{transform:scale(.98)}.btn:focus-visible{outline:2px solid var(--sage-500);outline-offset:2px}a.btn:hover{text-decoration:none}.btn.ghost{background:var(--surface);color:var(--text);border:1px solid var(--line-strong)}.btn.ghost:hover{border-color:var(--sage-400);background:var(--brand-primary-softer);color:var(--sage-800)}.btn.ghost.active{background:var(--brand-primary-soft);border:1.5px solid var(--brand-primary);color:var(--sage-800)}.btn.danger{background:var(--danger);color:#fff}.btn.danger:hover{background:var(--danger-hover)}.btn:disabled{background:var(--bg-sunken);color:var(--text-faint);border:1px solid var(--line);box-shadow:none;cursor:not-allowed;transform:none}@media(max-width:820px){form>.btn[type=submit],form>.btn:not(.ghost):last-child{width:100%}}label{display:grid;gap:6px;font:600 var(--fs-small)/20px var(--font-body);color:var(--text-muted);width:100%}input,textarea,select{width:100%;min-height:48px;padding:12px 14px;background:var(--surface);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--radius-m);font:400 var(--fs-body)/1.4 var(--font-body);transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}input::placeholder,textarea::placeholder{color:var(--text-faint)}input:hover,textarea:hover,select:hover{border-color:var(--sage-300)}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none;border-color:var(--brand-primary);box-shadow:var(--shadow-focus)}input:user-invalid,textarea:user-invalid,select:user-invalid{border-color:#d08a77;box-shadow:0 0 0 3px #b0503f2e}textarea{min-height:96px;resize:vertical}input[type=file]::file-selector-button{margin-right:12px;padding:8px 12px;background:var(--bg-sunken);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--radius-s);font:600 var(--fs-small)/1 var(--font-body);cursor:pointer}.chip{display:inline-block;font:700 var(--fs-tiny)/16px var(--font-body);background:var(--sage-100);color:var(--sage-800);border-radius:var(--radius-full);padding:4px 10px}a.chip{cursor:pointer}a.chip:hover{background:var(--sage-200);text-decoration:none}.chip.st-ok{background:var(--ok-bg);color:var(--ok-text)}.chip.st-warn{background:var(--warn-bg);color:var(--warn-text)}.chip.st-err{background:var(--err-bg);color:var(--err-text)}.item{display:flex;justify-content:space-between;gap:12px;align-items:center;min-height:56px;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);box-shadow:var(--shadow-xs)}a.item,button.item{width:100%;color:var(--text);text-align:left;cursor:pointer;transition:border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}a.item:hover,button.item:hover{border-color:var(--sage-300);transform:translateY(-1px);text-decoration:none}a.item:focus-visible,button.item:focus-visible{outline:2px solid var(--sage-500);outline-offset:2px}.item strong{font-weight:700}.item .btn{min-height:40px;padding:8px 12px}.item .chip{flex:none}.progress{height:8px;background:var(--sage-100);border-radius:var(--radius-full);overflow:hidden}.progress>span{display:block;height:100%;border-radius:var(--radius-full);background:var(--brand-primary);transition:width var(--dur-slow) var(--ease)}.stat{font:600 var(--fs-stat)/38px var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--text);margin:4px 0}.top{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 20px;background:#faf7f1d9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.top .kicker{margin:0 0 2px}.top strong{font:600 22px/28px var(--font-display);letter-spacing:-.01em;color:var(--text)}.top .btn{min-height:40px;padding:8px 14px}.top-nav{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.top-nav a{color:var(--text-muted);font-weight:600;font-size:14px;padding:8px 12px;border-radius:var(--radius-s);transition:background-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.top-nav a:hover{background:var(--brand-primary-softer);text-decoration:none}.top-nav a.active{color:var(--sage-800);background:var(--brand-primary-soft)}.nav{position:fixed;left:0;right:0;bottom:0;z-index:30;display:none;justify-content:space-around;gap:2px;overflow-x:auto;scrollbar-width:none;background:#ffffffeb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);box-shadow:var(--shadow-m);padding:8px 8px calc(8px + env(safe-area-inset-bottom))}.nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:48px;min-height:48px;padding:6px 10px;border-radius:var(--radius-m);color:var(--text-muted);font-size:12px;font-weight:600;white-space:nowrap;transition:background-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.nav a:hover{text-decoration:none;background:var(--brand-primary-softer)}.nav a:focus-visible{outline:2px solid var(--sage-500);outline-offset:-2px}.nav a.active{color:var(--sage-700);background:var(--brand-primary-soft)}.copy-link{display:grid;gap:6px;margin-top:8px}.copy-link-row{align-items:center;flex-wrap:wrap}.copy-link a{color:var(--brand-primary);font-weight:600;font-size:13px;word-break:break-all}.btn.activate{font-size:15px;padding:12px 18px}.chip.warn{background:var(--warn-bg);color:var(--warn-text)}.chip.ok{background:var(--ok-bg);color:var(--ok-text)}.timer-stage{text-align:center;border-radius:var(--radius-xl);padding:28px 20px}.timer{font:800 var(--fs-timer)/1.1 var(--font-body);font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--text)}.timer.rest{font-size:var(--fs-timer-rest);color:var(--sage-700);display:inline-block;padding:12px 32px;background:var(--brand-primary-softer);border-radius:24px}.timer-stage .btn:not(.ghost){width:100%;min-height:56px;font-size:16px}.rest-flash{animation:restFlash .6s ease-out}@keyframes restFlash{0%{box-shadow:0 0 #6b8a6659}to{box-shadow:0 0 0 22px transparent}}.builder{min-height:120px;padding:12px;display:grid;gap:12px;align-content:start;border:1.5px dashed var(--line-strong);border-radius:var(--radius-l);background:var(--bg);transition:border-color var(--dur-fast) var(--ease),background-color var(--dur-fast) var(--ease)}.builder.drag-over{border-color:var(--brand-primary);background:var(--brand-primary-softer)}.builder>.muted{text-align:center}.builder-item{display:grid;gap:10px;padding:14px;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--sage-200);border-radius:var(--radius-m);box-shadow:var(--shadow-xs);cursor:grab}.builder-item:active{cursor:grabbing;box-shadow:var(--shadow-m)}.builder-item .btn.ghost{min-height:44px;padding:8px 12px}.builder-item .row .row .btn.ghost:last-child{color:var(--terra-600)}.builder-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.catalog-item{cursor:grab}.catalog-item:hover{border-color:var(--sage-300)}.slot.free{border-left:3px solid var(--sage-500)}.slot.occupied{background:var(--bg-sunken)}.chat-thread{display:grid;gap:10px}.chat-log{max-height:52vh;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--line);border-radius:var(--radius-l);background:var(--bg-sunken);scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.bubble{max-width:78%;padding:10px 14px;border-radius:18px;font-size:14px;line-height:20px}.bubble.mine{margin-left:auto;background:var(--brand-primary-soft);color:var(--text);border-bottom-right-radius:6px}.bubble.theirs{background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:6px}.bubble-meta{font-size:11px;color:var(--text-faint);margin-bottom:2px}.chat-media{max-width:240px;border:1px solid var(--line);border-radius:var(--radius-m);margin-top:6px;display:block}.chat-compose input{flex:1;min-width:140px}.file-btn{margin:0;width:auto;flex:none;min-height:48px;padding:0 14px}.login-hero{max-width:420px;margin:8vh auto}.login-hero h1{margin:0 0 8px}.login-hero p{color:var(--text-muted);margin-top:0}.brand-logo{width:80px;height:80px;border-radius:22px;object-fit:cover;display:block;margin-bottom:16px;border:1px solid var(--line);box-shadow:var(--shadow-xs)}@media(min-width:820px){.card{padding:var(--space-6)}.shell{padding-top:14vh}}@media(min-width:1024px){.grid.cols-2:has(.stat){grid-template-columns:repeat(3,1fr)}}@media(max-width:820px){.app:has(.nav) .top-nav{display:none}.nav{display:flex}.builder-fields{grid-template-columns:1fr}.item{flex-wrap:wrap}.slot .row{width:100%}.slot select{flex:1;min-width:180px}.item img{max-width:100%!important}.chat-compose{position:sticky;bottom:calc(72px + env(safe-area-inset-bottom));background:var(--surface);padding-top:8px}}@media(prefers-reduced-motion:reduce){.rest-flash{animation:none}*,*:before,*:after{transition-duration:1ms!important}}
