:root{--color-bg: #fffaf2;--color-fg: #2a1d0c;--color-accent: #d9822b;--color-muted: #8a7964;--color-danger: #c2410c;--color-accent-deep: #8f5314;--radius: 12px;--pad: 16px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color-scheme:light}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%;background:var(--color-bg);color:var(--color-fg)}button{font:inherit;border:1px solid currentColor;border-radius:var(--radius);padding:10px 16px;background:transparent;color:var(--color-fg);cursor:pointer}button.primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}button:disabled{opacity:.5;cursor:default}a.primary{display:inline-block;padding:10px 16px;background:var(--color-accent);border:1px solid var(--color-accent);border-radius:var(--radius);color:#fff;font-weight:600;text-align:center;text-decoration:none}h1{font-size:28px;line-height:1.15}.back-link{display:inline-flex;align-items:center;gap:4px;min-height:44px;padding:0 10px;margin-left:-10px;color:var(--color-accent-deep);font-weight:600;text-decoration:none;align-self:flex-start}.app-splash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--color-bg);font-size:48px}.app-splash__spinner{width:28px;height:28px;border:3px solid #e4d7c3;border-top-color:var(--color-accent);border-radius:50%;animation:app-splash-spin .9s linear infinite}@keyframes app-splash-spin{to{transform:rotate(360deg)}}textarea.autogrow{field-sizing:content;min-height:3.2em;max-height:50vh}input,select,textarea{font:inherit;font-size:max(16px,1em);padding:10px 12px;border:1px solid #e4d7c3;border-radius:var(--radius);background:#fff;color:var(--color-fg)}.stack{display:flex;flex-direction:column;gap:12px}.page{max-width:720px;margin:0 auto;padding:var(--pad);overflow-x:clip}.auth-scene{position:relative;min-height:calc(100dvh - var(--pad) * 2);display:flex;align-items:center;justify-content:center;overflow:hidden;padding:24px 4px}.auth-floaters{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.auth-floater{position:absolute;opacity:.55;animation-name:auth-float;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate;will-change:transform}@keyframes auth-float{0%{transform:translateZ(0) rotate(-8deg)}to{transform:translate3d(14px,-22px,0) rotate(10deg)}}.auth-card{position:relative;z-index:1;width:100%;max-width:460px;background:#fff;border-radius:24px;padding:28px 22px 24px;box-shadow:0 1px #2a1d0c0a,0 18px 48px -18px #2a1d0c2e;display:flex;flex-direction:column;gap:20px;animation:auth-card-in .36s cubic-bezier(.2,.9,.25,1.15)}@keyframes auth-card-in{0%{transform:translateY(12px) scale(.96);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.auth-header{text-align:center;display:flex;flex-direction:column;gap:6px}.auth-title{margin:0;font-size:28px;letter-spacing:-.01em}.auth-title--sm{font-size:22px}.auth-title .wave{display:inline-block;transform-origin:70% 70%;animation:auth-wave 2.4s ease-in-out infinite}@keyframes auth-wave{0%,60%,to{transform:rotate(0)}10%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}30%{transform:rotate(14deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}}.auth-tagline{margin:0;color:var(--color-muted);font-size:15px;min-height:1.4em;animation:auth-tag-in .42s ease}@keyframes auth-tag-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.pwa-banner-stack{position:fixed;left:0;right:0;bottom:var(--tab-bar-height, env(safe-area-inset-bottom, 0px));padding:12px;display:flex;flex-direction:column;gap:8px;pointer-events:none;z-index:70}.pwa-banner{pointer-events:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:var(--radius);background:#2a1d0c;color:#fffaf2;box-shadow:0 8px 24px #0000002e;font-size:14px;line-height:1.3;animation:pwa-banner-in .18s ease-out}.pwa-banner__body{display:flex;flex-direction:column;gap:2px;min-width:0}.pwa-banner__body strong{font-size:14px;font-weight:600}.pwa-banner__hint{color:#fffaf2c7;font-size:13px}.pwa-banner__actions{display:flex;gap:8px;flex-shrink:0}.pwa-banner__actions button{padding:6px 12px;font-size:13px;border-color:#fffaf259;color:#fffaf2;background:transparent}.pwa-banner__actions button.primary{background:var(--color-accent);border-color:var(--color-accent);color:#fffaf2}.pwa-banner--install{background:#3a2410}.pwa-banner--offline{background:var(--color-danger)}.pwa-banner--reconnecting{background:#2f6b3b}.pwa-banner--update{background:var(--color-accent);color:#fffaf2}.pwa-banner--update .pwa-banner__hint{color:#fffaf2e0}.pwa-banner--update .pwa-banner__actions button.primary{background:#fffaf2;color:var(--color-accent);border-color:#fffaf2}.pwa-banner--ready{background:#2a1d0c}@keyframes pwa-banner-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.auth-footnote{margin:0;text-align:center;font-size:12px;color:var(--color-muted)}.picker-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.picker-card{background:var(--picker-bg, #ffe4c4);border:2px solid transparent;border-radius:22px;padding:20px 12px 18px;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--color-fg);cursor:pointer;transition:transform .18s cubic-bezier(.2,.9,.25,1.2),box-shadow .18s ease,border-color .18s ease;box-shadow:0 4px #2a1d0c14}.picker-card:hover{transform:translateY(-3px) rotate(-1deg);border-color:#2a1d0c1f;box-shadow:0 10px 22px -8px #2a1d0c2e}.picker-card:active{transform:translateY(1px) scale(.98);box-shadow:0 2px #2a1d0c14}.picker-card:focus-visible{outline:3px solid var(--color-accent);outline-offset:3px}.picker-avatar{font-size:56px;line-height:1;filter:drop-shadow(0 3px 0 rgba(42,29,12,.12));animation:picker-bob 3.2s ease-in-out infinite}.picker-card:nth-child(2) .picker-avatar{animation-delay:1.1s}@keyframes picker-bob{0%,to{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-6px) rotate(3deg)}}.picker-name{font-weight:700;font-size:17px}.picker-sub{font-size:12px;color:#2a1d0c99}.pw-avatar{font-size:48px;line-height:1;animation:picker-bob 3.2s ease-in-out infinite;margin-bottom:4px}.pw-form{display:flex;flex-direction:column;gap:10px}.pw-form--shake{animation:pw-shake .42s cubic-bezier(.36,.07,.19,.97)}@keyframes pw-shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-6px)}40%,60%{transform:translate(6px)}}.pw-label{font-size:13px;color:var(--color-muted);margin-left:4px}.pw-input-wrap{position:relative;display:flex;align-items:center}.pw-input{flex:1;padding:14px 48px 14px 14px;border-radius:14px;border:2px solid #ebdfcc;background:#fffdf8;font-size:16px;transition:border-color .16s ease,box-shadow .16s ease}.pw-input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 4px #d9822b26}.pw-input[aria-invalid=true]{border-color:var(--color-danger);box-shadow:0 0 0 4px #c2410c1f}.pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:transparent;border:none;font-size:22px;padding:6px 8px;border-radius:10px;cursor:pointer;line-height:1}.pw-toggle:hover{background:#2a1d0c0d}.pw-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.pw-error{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:12px;background:#fef1e8;border:1px solid #f4d2b6;font-size:14px;animation:auth-tag-in .24s ease}.pw-error--server-down{background:#fff6d6;border-color:#ebd675}.pw-error--unknown{background:#f1ecff;border-color:#d5c8f4}.pw-error__emoji{font-size:22px;line-height:1.1}.pw-error__text{display:flex;flex-direction:column;gap:2px}.pw-error__text strong{color:var(--color-fg)}.pw-error__text span{color:var(--color-muted)}.pw-actions{display:flex;flex-direction:column;gap:8px;margin-top:4px}.pw-submit{background:var(--color-accent);color:#fff;border:none;border-radius:14px;padding:14px 16px;font-size:16px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:transform .12s ease,filter .12s ease,opacity .16s ease}.pw-submit:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.03)}.pw-submit:active:not(:disabled){transform:translateY(1px)}.pw-submit:disabled{opacity:.6;cursor:not-allowed}.pw-back{background:transparent;border:none;color:var(--color-muted);padding:10px;cursor:pointer;font-size:14px;border-radius:12px}.pw-back:hover{background:#2a1d0c0d;color:var(--color-fg)}.pw-spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:pw-spin .7s linear infinite}@keyframes pw-spin{to{transform:rotate(360deg)}}.app-header{display:flex;align-items:center;justify-content:space-between;padding:8px 0 12px}.app-header__title{font-size:18px;font-weight:700;color:var(--color-fg);text-decoration:none;display:inline-flex;align-items:center;gap:8px}.app-menu-btn{border-radius:12px;border:1px solid rgba(42,29,12,.12);background:#fff;padding:8px 12px;font-size:18px;line-height:1;cursor:pointer;color:var(--color-fg)}.app-menu-btn:hover{background:#fff6ea}.app-menu-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.app-drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2a1d0c59;z-index:40;animation:auth-tag-in .18s ease}.app-drawer{position:fixed;top:0;right:0;height:100dvh;width:min(320px,88vw);background:#fff;z-index:50;box-shadow:-12px 0 40px -12px #2a1d0c4d;padding:20px 18px;display:flex;flex-direction:column;gap:14px;animation:app-drawer-in .24s cubic-bezier(.2,.9,.25,1.05)}@keyframes app-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}.app-drawer__header{display:flex;align-items:center;justify-content:space-between}.app-drawer__title{margin:0;font-size:18px}.app-drawer__close{background:transparent;border:none;font-size:20px;cursor:pointer;padding:6px 10px;border-radius:10px;color:var(--color-muted)}.app-drawer__close:hover{background:#2a1d0c0f;color:var(--color-fg)}.app-drawer__identity{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;background:#fff6ea}.app-drawer__avatar{font-size:32px;line-height:1}.app-drawer__name{font-weight:700}.app-drawer__sub{font-size:12px;color:var(--color-muted)}.app-drawer__links{display:flex;flex-direction:column;gap:4px}.app-drawer__link{display:flex;align-items:center;min-height:44px;padding:0 12px;border-radius:10px;color:var(--color-fg);text-decoration:none;font-size:15px}.app-drawer__link:hover{background:#2a1d0c0d}.app-drawer__logout{margin-top:auto;background:transparent;border:1px solid rgba(42,29,12,.15);color:var(--color-fg);padding:12px;border-radius:12px;font-weight:600;cursor:pointer}.app-drawer__logout:hover{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.session-banner{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:12px;background:#fff7d6;border:1px solid #ecd982;font-size:13px;margin-bottom:12px;color:#6b4a00}.session-banner__emoji{font-size:16px}@media(prefers-reduced-motion:reduce){.pwa-banner{animation:none}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
