:root{--bg:#faf6f2;--bg-soft:#f3e8dc;--ink:#2c241c;--ink-soft:#6e5f52;--brand:#e8914a;--brand-deep:#c96a28;--brand-soft:#ffe8d4;--accent:#f0c56a;--accent-soft:#fff4d8;--card:#fff;--line:#c96a2824;--danger:#e35d4c;--danger-soft:#fde8e5;--ok:#e8914a;--shadow:0 10px 28px #2c241c14;--shadow-sm:0 4px 14px #2c241c0f;--radius:20px;--radius-sm:14px;--card-gap:12px;--font-display:"Fraunces", Georgia, serif;--font-body:"Outfit", system-ui, sans-serif;--nav-h:72px;color:var(--ink);background:var(--bg);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:radial-gradient(900px 420px at 0 -5%,#ffe8d4 0%,#0000 55%),radial-gradient(700px 380px at 100% 0,#fff4d8 0%,#0000 50%),linear-gradient(#fffaf6 0%,#f5ebe3 100%);min-width:320px;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{width:min(480px,100%);min-height:100dvh;padding:max(14px, env(safe-area-inset-top)) 16px calc(var(--nav-h) + 18px + env(safe-area-inset-bottom));flex-direction:column;gap:14px;margin:0 auto;display:flex}.app-shell.auth{padding-bottom:max(24px, env(safe-area-inset-bottom));justify-content:center}.brand-lockup{flex-direction:column;gap:6px;animation:.55s both rise;display:flex}.brand-lockup.rowish{flex-direction:row;align-items:center;gap:12px}.brand-lockup .mark{background:0 0;border-radius:16px;flex-shrink:0;place-items:center;width:48px;height:48px;display:grid;overflow:hidden;box-shadow:0 10px 22px #e8914a59}.brand-lockup .mark img{object-fit:cover;width:100%;height:100%;display:block}.brand-lockup .mark.mark-lg{border-radius:24px;width:88px;height:88px;box-shadow:0 14px 28px #e8914a61}.welcome-hero{text-align:left;gap:10px;padding:8px 4px 4px}.welcome-hero .mark{margin-bottom:4px}.welcome-kicker{font-family:var(--font-display);font-weight:600;color:var(--brand-deep)!important;margin:2px 0 0!important;font-size:1.15rem!important}.welcome-hint{text-align:center;margin:28px 0 0;font-size:.9rem;line-height:1.45}.welcome-hint.pwa-hint{margin-top:12px;font-size:.82rem}.welcome-card{animation:.6s 80ms both rise}.brand-lockup h1{font-family:var(--font-display);letter-spacing:-.03em;color:var(--brand-deep);margin:0;font-size:clamp(1.85rem,7vw,2.35rem);line-height:1.05}.brand-lockup p{color:var(--ink-soft);margin:0;font-size:.95rem}.brand-lockup .titles{flex-direction:column;gap:2px;min-width:0;display:flex}.brand-lockup .titles h1{font-size:1.35rem}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px;animation:.45s both rise}.panel h2{font-family:var(--font-display);color:var(--brand-deep);margin:0 0 4px;font-size:1.25rem}.panel-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.panel-head h2{margin:0}.stack{gap:var(--card-gap);flex-direction:column;display:flex}.danger-zone{border-top:1px solid #b43c282e;margin-top:8px;padding-top:16px}.danger-zone h3{color:#9a3b2a;margin:0;font-size:1rem}.row{align-items:center;gap:8px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--ink-soft);font-size:.82rem;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--line);color:var(--ink);background:#fffaf7;border-radius:12px;outline:none;padding:12px 14px;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px #e8914a2e}.btn{border:none;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:12px 18px;font-weight:600;transition:transform .15s,background .15s,opacity .15s;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:linear-gradient(145deg, var(--brand) 0%, var(--brand-deep) 100%);color:#fff;box-shadow:0 8px 18px #e8914a47}.btn-primary:hover:not(:disabled){filter:brightness(1.05)}.btn-secondary{background:var(--accent-soft);color:#7a5a00}.btn-google{color:#1f1f1f;background:#fff;border:1px solid #dadce0;justify-content:center;align-items:center;gap:8px;font-weight:600;display:inline-flex}.btn-google:hover:not(:disabled){background:#f8f9fa}.auth-divider{color:var(--muted);align-items:center;gap:12px;font-size:.85rem;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:color-mix(in srgb, var(--ink) 12%, transparent);flex:1;height:1px}.auth-login-paths .btn{width:100%}.qr-display{border:1px solid color-mix(in srgb, var(--ink) 10%, transparent);background:#fff;border-radius:16px;justify-content:center;padding:12px;display:flex}.qr-canvas{max-width:100%;height:auto;display:block}.qr-scanner-wrap{background:#111;border-radius:16px;min-height:240px;position:relative;overflow:hidden}.qr-scanner{width:100%}.qr-scanner video{border-radius:16px;width:100%!important}.qr-scanner-hint{color:#fff;pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.qr-wait-panel{align-items:stretch}.member-qr-box{border-top:1px solid color-mix(in srgb, var(--ink) 10%, transparent);margin-top:8px;padding-top:12px}.google-link-box{border-top:1px solid color-mix(in srgb, var(--ink) 10%, transparent);padding:12px 0 4px}.btn-danger{background:var(--danger-soft);color:var(--danger);border:1px solid #e35d4c33}.btn-ghost{color:var(--brand-deep);border:1px solid var(--line);background:0 0}.btn-small{padding:8px 12px;font-size:.85rem}.segmented{background:var(--bg-soft);border-radius:14px;grid-template-columns:1fr 1fr;gap:8px;padding:6px;display:grid}.segmented.cols-3{grid-template-columns:1fr 1fr 1fr}.segmented.cols-4{grid-template-columns:repeat(4,1fr)}.segmented.cols-4 button{padding:9px 4px;font-size:.82rem}.segmented.cols-5{grid-template-columns:repeat(5,1fr)}.segmented.cols-5 button{padding:9px 2px;font-size:.72rem}.task-reject-note{color:#8a3d12;background:#fff1e8;border:1px solid #c85a2838;border-radius:12px;margin:0 0 8px;padding:8px 10px;font-size:.86rem;line-height:1.35}.task-feedback-note{color:#1f5c34;background:#eef8f0;border:1px solid #2e7d4633;border-radius:12px;margin:8px 0;padding:8px 10px;font-size:.86rem;line-height:1.35}.done-actions{flex-wrap:wrap;align-items:center;margin-top:8px}.feedback-sheet-backdrop{z-index:80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#281c1273;justify-content:center;align-items:flex-end;padding:16px;display:flex;position:fixed;inset:0}.feedback-sheet{border:1px solid var(--line);background:#fffaf4;border-radius:20px 20px 16px 16px;width:min(440px,100%);max-height:min(86vh,640px);padding:16px 16px 18px;overflow:auto;box-shadow:0 16px 40px #3c281433}.feedback-sheet-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.feedback-sheet-head h3{color:var(--brand-deep);margin:0 0 2px}.feedback-sheet-head .muted{margin:0;font-size:.86rem}.feedback-presets{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.feedback-preset{color:var(--brand-deep);cursor:pointer;background:#fff;border:1px solid #5a463229;border-radius:999px;padding:8px 12px;font-size:.88rem;font-weight:600}.feedback-preset:hover:not(:disabled){background:#fff6ec;border-color:#e8914a8c}.feedback-preset.active{background:#ffe8d2;border-color:#e8914ab3}.feedback-preset:disabled{opacity:.55;cursor:default}.feedback-sheet-actions{flex-wrap:wrap;margin-top:10px}.week-calendar{flex-direction:column;gap:10px;display:flex}.week-day-card{border:1px solid var(--line);background:#faf6f1;border-radius:16px;padding:12px 14px}.week-day-card.is-today{background:linear-gradient(#fffefb 0%,#fff4e4 100%);border-color:#e8914a59}.week-day-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.week-day-head strong{color:var(--brand-deep)}.week-day-empty{margin:0;font-size:.88rem}.week-day-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.week-day-list li{background:#fff;border:1px solid #5a463214;border-radius:12px;flex-direction:column;gap:2px;padding:8px 10px;display:flex}.week-task-title{color:var(--brand-deep);font-size:.92rem;font-weight:700}.week-task-who{font-size:.78rem;font-weight:600}.segmented button{color:var(--ink-soft);background:0 0;border:none;border-radius:10px;padding:11px;font-weight:600}.segmented button.active{color:var(--brand-deep);box-shadow:var(--shadow-sm);background:#fff}.topbar{justify-content:space-between;align-items:center;gap:12px;display:flex}.topbar-user{align-items:center;gap:8px;display:flex}.topbar-user .ach-row{justify-content:flex-end;max-width:110px;margin-top:0}.stats{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.stats.stats-5{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.stat{background:var(--card);border:1px solid var(--line);text-align:center;box-shadow:var(--shadow-sm);border-radius:16px;padding:12px 10px;animation:.4s both rise}.stats.stats-5 .stat{padding:10px 4px}.stats.stats-5 .stat strong{font-size:1.15rem}.stats.stats-5 .stat span{letter-spacing:.02em;font-size:.62rem}button.stat.stat-button{cursor:pointer;font:inherit;color:inherit;appearance:none;transition:border-color .15s,background .15s,transform .12s}button.stat.stat-button:active{transform:scale(.98)}button.stat.stat-button.is-active{background:linear-gradient(#fffaf3 0%,#f8ead8 100%);border-color:#e8914a73}.stat strong{font-family:var(--font-display);color:var(--brand-deep);font-size:1.35rem;line-height:1;display:block}.stat span{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;margin-top:4px;font-size:.72rem;font-weight:600;display:block}.share-banner{background:linear-gradient(135deg,#fff7ef 0%,#fff4d8 100%);border-color:#e8914a33}.invite-link{border:1px dashed var(--line);word-break:break-all;color:var(--ink-soft);background:#fffc;border-radius:12px;margin:8px 0 12px;padding:10px 12px;font-size:.78rem}.code-grid{grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;display:grid}.code-box{border:1px dashed var(--line);text-align:center;background:#ffffffd9;border-radius:14px;padding:12px}.code-box span{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;font-weight:600;display:block}.code-box strong{font-family:var(--font-display);letter-spacing:.08em;color:var(--brand-deep);margin-top:4px;font-size:1.35rem;display:block}.code-box strong.invite-link-text{font-family:var(--font-body,inherit);letter-spacing:0;word-break:break-all;text-transform:none;font-size:.78rem;line-height:1.35}.share-card{background:var(--accent-soft);border:1px solid #f4b94259;border-radius:14px;padding:14px}.tabs-bottom{width:min(480px,100%);padding:10px 8px calc(10px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line);z-index:40;background:#ffffffeb;grid-template-columns:repeat(5,1fr);gap:2px;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -8px 24px #2430280f}.tabs-bottom button{color:var(--ink-soft);background:0 0;border:none;border-radius:14px;flex-direction:column;align-items:center;gap:4px;padding:8px 2px;font-size:.68rem;font-weight:600;display:flex}.tabs-bottom button svg{width:22px;height:22px}.tabs-bottom button.active{color:var(--brand-deep);background:var(--brand-soft)}.task-list,.member-list,.family-list{gap:var(--card-gap);flex-direction:column;display:flex}.family-card{box-shadow:var(--shadow-sm);background:linear-gradient(#fffefb 0%,#fff8f1 100%);border:1px solid #e8914a24;border-radius:18px;animation:.35s both rise;overflow:hidden}.family-card.is-you{background:linear-gradient(#fff9f2 0%,#ffeeda 100%);border-color:#e8914a47}.family-card-main{text-align:left;width:100%;color:inherit;cursor:pointer;background:0 0;border:none;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 14px;display:grid}.family-card-main:hover .family-card-info strong,.family-card-main:hover .family-card-chevron{color:var(--brand-deep)}.family-card-main .avatar{width:52px;height:52px;font-size:.95rem}.family-card-info{gap:6px;min-width:0;display:grid}.family-card-info strong{text-overflow:ellipsis;white-space:nowrap;font-size:1.02rem;line-height:1.2;overflow:hidden}.family-card-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.family-code-pill{font-family:var(--font-display);letter-spacing:.06em;color:var(--brand-deep);background:#ffffffbf;border:1px dashed #e8914a59;border-radius:999px;align-items:center;padding:3px 9px;font-size:.78rem;font-weight:700;display:inline-flex}.member-code-line{color:var(--ink-soft);margin:4px 0 0;font-size:.88rem}.member-code-line strong{font-family:var(--font-display);letter-spacing:.06em;color:var(--brand-deep)}.family-card-chevron{color:var(--ink-soft);font-size:1.45rem;font-weight:500;line-height:1}.family-card-actions{flex-wrap:wrap;gap:8px;padding:0 12px 12px;display:flex}.family-card-remove{align-self:start;margin:0 12px 12px}.task-item,.member-item{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:16px;padding:14px;animation:.35s both rise}.task-item.done{opacity:.72}.task-item{grid-template-columns:auto 1fr;align-items:start;gap:12px;display:grid}.task-grid{gap:var(--card-gap);grid-template-columns:1fr 1fr;display:grid}.task-card{border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fff;border-radius:16px;flex-direction:column;gap:6px;min-width:0;padding:12px;animation:.35s both rise;display:flex}.task-card-top{justify-content:space-between;align-items:center;gap:6px;display:flex}.task-card .task-check{width:34px;height:34px;font-size:.85rem}.task-card-pts{flex-shrink:0;padding:3px 8px;font-size:.68rem}.task-card-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:.92rem;line-height:1.25;display:-webkit-box;overflow:hidden}.task-card-notes{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:.72rem;line-height:1.3;display:-webkit-box;overflow:hidden}.task-card-meta{gap:4px;margin:2px 0 0}.task-card-meta .badge{padding:2px 7px;font-size:.64rem}.task-card-progress{margin-top:2px}.task-card-progress .muted{margin:4px 0 0;font-size:.68rem}.task-card-action{justify-content:center;width:100%;margin-top:auto}.task-card-actions{align-items:center;gap:8px;margin-top:auto;padding-top:6px;display:flex}.task-card.is-done-by-me{opacity:.92}.task-completers{flex-direction:column;gap:6px;margin-top:4px;display:flex}.task-completer-avatars{flex-wrap:wrap;align-items:center;gap:0;display:flex}.task-completer-avatars .avatar-xs{border:2px solid #fff;width:28px;height:28px;margin-right:-6px;font-size:.62rem;box-shadow:0 1px 2px #2c241c1f}.task-completer-avatars .avatar-xs:last-child{margin-right:0}.task-completer-count{margin:0;font-size:.72rem}.task-card-wait{margin:6px 0 0;font-size:.72rem}.task-done-head{align-items:flex-start;gap:10px;display:flex}.plan-box{border:1px solid var(--line);background:#fff8f2;border-radius:14px;padding:12px 14px}.plan-box-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;display:flex}.partner-redeem h3{margin:0;font-size:1rem}.task-item .task-done-head .avatar-xs{flex-shrink:0;width:32px;height:32px;font-size:.68rem}.task-done-btn{flex:1;justify-content:center;align-items:center;gap:8px;min-height:38px;display:inline-flex}.task-done-btn.is-loading,.task-done-btn:disabled{opacity:.85;cursor:wait}.task-card.is-completing{border-color:#e8914a73;box-shadow:0 0 0 2px #e8914a1f}.profile-color-picker{flex-wrap:wrap;gap:8px;display:flex}.profile-color-swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:32px;height:32px;padding:0;box-shadow:inset 0 0 0 1px #0000001f}.profile-color-swatch.active{box-shadow:inset 0 0 0 1px #00000014, 0 0 0 2px #fff, 0 0 0 4px var(--accent,#e8914a);border-color:#2c241c}.profile-color-swatch:disabled{opacity:.55;cursor:not-allowed}.task-card.has-member-color,.task-item.has-member-color{--tint:color-mix(in srgb, var(--member-color) 18%, #fff);background:var(--tint);border-color:color-mix(in srgb, var(--member-color) 42%, var(--line));box-shadow:var(--shadow-sm), inset 3px 0 0 var(--member-color)}.task-item.has-member-color.done{opacity:.88}.btn-spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.evidence-input.is-disabled{opacity:.45;pointer-events:none}.task-check{border:2px solid var(--brand-soft);width:42px;height:42px;color:var(--brand);background:#fffaf6;border-radius:50%;flex-shrink:0;place-items:center;padding:0;display:grid}.task-check.ready:hover{background:var(--brand-soft)}.task-check.done{background:linear-gradient(145deg, var(--brand), var(--brand-deep));border-color:var(--brand);color:#fff}.task-body{flex-direction:column;gap:8px;min-width:0;display:flex}.task-body h3{margin:0;font-size:1.02rem;line-height:1.25}.task-body>.muted{margin:0}.task-meta{flex-wrap:wrap;gap:6px;margin:0;display:flex}.badge{background:var(--brand-soft);color:var(--brand-deep);border-radius:999px;align-items:center;padding:4px 10px;font-size:.72rem;font-weight:600;display:inline-flex}.badge.accent{background:var(--accent-soft);color:#7a5a00}.badge.ok{color:var(--ok);background:#ffe8d4}.badge.warn{color:#a33b2a;background:#fde8e4}.check-row{background:var(--bg-soft);cursor:pointer;border-radius:12px;align-items:flex-start;gap:10px;padding:10px 12px;font-size:.92rem;line-height:1.35;display:flex}.check-row.is-disabled{opacity:.75;cursor:default}.check-row input{flex-shrink:0;width:18px;height:18px;margin-top:3px}.progress{background:var(--bg-soft);border-radius:999px;height:8px;margin:8px 0 4px;overflow:hidden}.progress>span{border-radius:inherit;background:linear-gradient(90deg, var(--brand), #f0b06e);height:100%;transition:width .35s;display:block}.avatar{width:40px;height:40px;color:var(--brand-deep);background:var(--brand-soft);border-radius:50%;flex-shrink:0;place-items:center;font-size:.9rem;font-weight:700;display:grid;position:relative;overflow:hidden}.avatar.has-art{background:0 0;padding:0}.avatar-photo{object-fit:cover;border-radius:inherit;width:100%;height:100%;display:block}.avatar-toggle-preview .avatar-photo{border-radius:50%;width:40px;height:40px}.avatar-picker-panel{gap:10px;margin-top:10px;display:grid}.avatar-upload-actions{gap:8px;display:grid}.avatar-upload-btn{border:1px dashed var(--line);width:100%;color:var(--brand-deep);cursor:pointer;font-size:.9rem;font-weight:600;font:inherit;background:#fffaf7;border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:12px 14px;display:flex}.avatar-upload-btn-secondary{color:var(--ink-soft);background:#fff;font-weight:500}.avatar-upload-btn input{display:none}.avatar-upload-btn:hover:not(:disabled){border-color:var(--brand);background:#fff}.avatar-upload-btn:disabled{opacity:.65;cursor:wait}.avatar-art{width:100%;height:100%;display:block}.avatar-picker{width:100%}.avatar-select-field{margin-top:8px;margin-bottom:8px}.avatar-tap{color:inherit;cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:8px;padding:0;display:inline-flex}.avatar-tap .avatar{width:64px;height:64px;font-size:1.1rem;transition:transform .15s,box-shadow .15s}.avatar-select-field.size-lg .avatar-tap .avatar{width:88px;height:88px;font-size:1.4rem}.avatar-select-field.size-sm .avatar-tap .avatar{width:48px;height:48px}.avatar-tap:hover .avatar,.avatar-tap.active .avatar{transform:scale(1.04);box-shadow:0 12px 26px #e8914a66}.avatar-tap:disabled{opacity:.6;cursor:not-allowed}.avatar-tap-hint{color:var(--brand-deep);font-size:.78rem;font-weight:600}.avatar-toggle-row{width:100%}.avatar-toggle{border:1px solid var(--line);text-align:left;width:100%;color:inherit;cursor:pointer;background:#fff;border-radius:14px;grid-template-columns:40px 1fr auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.avatar-toggle-preview{background:var(--brand-soft);border-radius:50%;place-items:center;width:40px;height:40px;display:grid;overflow:hidden}.avatar-toggle-preview .avatar-art{width:100%;height:100%}.avatar-select-empty{color:var(--brand-deep);font-weight:700}.avatar-toggle-text{flex-direction:column;gap:2px;min-width:0;display:flex}.avatar-toggle-text strong{font-size:.9rem}.avatar-toggle-text small{color:var(--ink-soft);font-size:.78rem}.avatar-toggle-chevron{color:var(--ink-soft);font-size:1.2rem;line-height:1}.avatar-select-field .avatar-grid{margin-top:8px}.role-select-field{margin-top:8px;margin-bottom:4px}.role-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.role-option{border:2px solid var(--line);cursor:pointer;color:var(--ink-soft);text-align:center;background:#fff;border-radius:14px;flex-direction:column;align-items:center;gap:6px;padding:8px 6px;font-size:.72rem;font-weight:600;line-height:1.15;display:flex}.role-option svg{width:44px;height:44px;display:block}.role-option.active{border-color:var(--brand-deep);background:var(--brand-soft);color:var(--brand-deep);box-shadow:0 0 0 2px #e8914a2e}.role-option:hover{transform:translateY(-1px)}.avatar-grid{grid-template-columns:repeat(6,1fr);gap:8px;display:grid}.avatar-grid.compact{grid-template-columns:repeat(6,1fr);gap:6px}.avatar-option{aspect-ratio:1;cursor:pointer;background:0 0;border:2px solid #0000;border-radius:50%;padding:0;overflow:hidden}.avatar-option svg{width:100%;height:100%;display:block}.avatar-option.active{border-color:var(--brand-deep);box-shadow:0 0 0 2px var(--brand-soft)}.avatar-option:hover{transform:scale(1.04)}@media (width<=400px){.avatar-grid,.avatar-grid.compact{grid-template-columns:repeat(4,1fr)}}.avatar.admin{background:var(--accent-soft);color:#7a5a00}.avatar.has-art.admin{background:0 0}.avatar.online{color:#1f7a3a;background:#d8f5de;box-shadow:0 0 0 2px #2fbd5a}.avatar.online:after{content:"";background:#2fbd5a;border:2px solid #fff;border-radius:50%;width:12px;height:12px;position:absolute;bottom:-1px;right:-1px;box-shadow:0 0 0 1px #2fbd5a59}.badge.online{color:#1f7a3a;background:#d8f5de}.member-clickable .member-open{text-align:left;width:100%;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}.member-clickable .member-open:hover .info strong{color:var(--brand-deep)}.member-main{align-items:center;gap:12px;display:flex}.member-main.avatar-edit-row{grid-template-columns:auto 1fr;align-items:center;gap:12px 14px;display:grid}.member-main.avatar-edit-row .avatar-select-field{margin:0;display:contents}.member-main.avatar-edit-row .avatar-tap{grid-area:1/1}.member-main.avatar-edit-row>.info{grid-area:1/2;min-width:0}.member-main.avatar-edit-row .avatar-picker-panel{grid-area:2/1/auto/-1;width:100%}.member-main.avatar-edit-row .avatar-tap .avatar{width:88px;height:88px;font-size:1.4rem}.member-item{flex-direction:column;gap:10px;display:flex}.member-main .info{flex:1;min-width:0}.group-chips{flex-wrap:wrap;gap:8px;display:flex}.group-chip{background:var(--brand-soft);border:1px solid var(--line);border-radius:999px;align-items:center;gap:6px;padding:6px 8px 6px 10px;font-size:.85rem;font-weight:600;display:inline-flex}.group-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.group-chip-x{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:1.1rem;line-height:1}.task-group-block{margin-top:14px}.task-group-block:first-of-type{margin-top:8px}.task-group-head{align-items:center;gap:8px;margin-bottom:8px;display:flex}.task-group-head h3{flex:1;margin:0;font-size:.95rem;font-weight:700}.muted{color:var(--ink-soft);margin:0;font-size:.9rem}.pie-wrap{grid-template-columns:140px 1fr;align-items:center;gap:14px;display:grid}.pie-visual{width:140px;height:140px}.pie-svg{filter:drop-shadow(0 4px 10px #2c241c14);width:100%;height:100%}.pie-legend{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.pie-legend li{grid-template-columns:10px 1fr auto;align-items:center;gap:8px;font-size:.9rem;display:grid}.pie-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.pie-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.rank-list{flex-direction:column;gap:10px;margin:12px 0 0;padding:0;list-style:none;display:flex}.rank-list li{grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;font-size:.95rem;display:grid}.rank-pos{background:var(--brand-soft);width:28px;height:28px;color:var(--brand-deep);border-radius:10px;justify-content:center;align-items:center;font-size:.82rem;font-weight:700;display:inline-flex}.rank-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--ink);font-weight:600;overflow:hidden}.rank-list strong{font-variant-numeric:tabular-nums;color:var(--ink-soft);white-space:nowrap;font-size:.9rem}.pie-legend strong{font-variant-numeric:tabular-nums;color:var(--ink-soft);font-size:.85rem}@media (width<=380px){.pie-wrap{grid-template-columns:1fr;justify-items:center}.pie-legend{width:100%}}.error{color:var(--danger);background:var(--danger-soft);border-radius:12px;padding:10px 12px;font-size:.9rem}.offline-banner{background:var(--accent-soft);color:#7a5a00;text-align:center;border:1px solid #f0c56ab3;border-radius:12px;padding:10px 12px;font-size:.86rem;font-weight:600}.task-card .task-check{position:relative}.task-card .task-check button{width:100%;height:100%;color:inherit;cursor:pointer;background:0 0;border:0}.evidence-input{cursor:pointer;width:40px;height:40px;box-shadow:none;background:0 0;border:none;border-radius:50%;flex-shrink:0;place-items:center;padding:0;display:grid;position:relative}.evidence-cam-btn{cursor:pointer;background:0 0;border:none;place-items:center;width:40px;height:40px;padding:0;display:grid}.evidence-cam-btn:disabled{cursor:wait}.evidence-input .icon-camera-cute{width:40px;height:40px;transition:transform .18s;display:block}.evidence-input:hover:not(.is-disabled) .icon-camera-cute,.evidence-cam-btn:hover:not(:disabled) .icon-camera-cute{transform:scale(1.08)rotate(-4deg)}.evidence-input input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.task-menu{position:relative}.task-menu summary{border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;border-radius:10px;padding:4px 8px;font-size:1.2rem;line-height:1;list-style:none}.task-menu summary::-webkit-details-marker{display:none}.task-menu-popover{z-index:10;border:1px solid var(--line);min-width:130px;box-shadow:var(--shadow);background:#fff;border-radius:12px;position:absolute;top:calc(100% + 5px);right:0;overflow:hidden}.task-menu-popover button{width:100%;color:var(--ink);text-align:left;background:#fff;border:0;padding:9px 11px;font-size:.8rem}.task-menu-popover button:hover{background:var(--brand-soft)}.evidence-thumb,.reward-image{border:1px solid var(--line);object-fit:cover;border-radius:12px;flex-shrink:0;width:72px;height:72px;margin:0;display:block}.evidence-thumb-lg{width:112px;height:112px}.evidence-row{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.evidence-link{color:var(--brand-deep);cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;flex-direction:column;align-items:flex-start;gap:4px;padding:0;text-decoration:none;display:inline-flex}.evidence-link .evidence-thumb{margin-top:0}.evidence-open{font-size:.78rem;font-weight:600}.photo-lightbox{z-index:200;padding:max(56px, calc(env(safe-area-inset-top) + 48px)) 16px max(24px, env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(4px);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;overscroll-behavior:contain;background:#14100cd1;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.photo-lightbox-img{z-index:1;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:16px;max-width:min(100%,720px);max-height:min(70dvh,900px);position:relative;box-shadow:0 16px 48px #00000059}.photo-lightbox-close{top:max(12px, env(safe-area-inset-top,0px));right:max(12px, env(safe-area-inset-right,0px));z-index:2;color:#222;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:#fffffff2;border:none;border-radius:999px;width:48px;height:48px;font-size:1.75rem;line-height:1;position:fixed;box-shadow:0 4px 16px #00000040}.task-who{margin:4px 0 0;font-size:.9rem}.reward-image{align-self:start;width:64px;height:64px;margin:0}.task-item.reward-item{align-items:start;gap:var(--card-gap)}.screen-stack{gap:var(--card-gap);flex-direction:column;display:flex}.podium{justify-content:center;align-items:flex-end;gap:8px;min-height:112px;display:flex}.podium-place{background:var(--brand-soft);text-align:center;border-radius:14px 14px 6px 6px;flex-direction:column;flex:1;align-items:center;gap:3px;min-width:0;padding:10px 6px;display:flex}.podium-place.place-1{background:var(--accent-soft);min-height:104px}.podium-place.place-2{min-height:82px}.podium-place.place-3{background:#f9eee6;min-height:66px}.podium-place span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:.8rem;font-weight:700;overflow:hidden}.podium-place small{color:var(--ink-soft);font-size:.7rem}.streak-badges{flex-wrap:wrap;gap:7px;margin-top:12px;margin-bottom:14px;display:flex}.streak-badge{background:var(--brand-soft);color:var(--brand-deep);border-radius:999px;padding:6px 9px;font-size:.76rem;font-weight:700}.empty{text-align:center;color:var(--ink-soft);padding:28px 14px}.empty .empty-illu{background:var(--brand-soft);width:64px;height:64px;color:var(--brand-deep);border-radius:20px;place-items:center;margin:0 auto 12px;font-size:1.6rem;display:grid}.toast{left:50%;bottom:calc(var(--nav-h) + 16px + env(safe-area-inset-bottom));background:var(--ink);color:#fff;box-shadow:var(--shadow);z-index:50;border-radius:999px;max-width:min(90vw,420px);padding:12px 16px;font-size:.92rem;animation:.3s both rise;position:fixed;transform:translate(-50%)}.app-shell.auth .toast{bottom:max(24px, env(safe-area-inset-bottom))}.tour-root{z-index:120;pointer-events:none;position:fixed;inset:0}.tour-scrim{pointer-events:auto;background:#2c241c47;position:absolute;inset:0}.tour-spotlight{pointer-events:none;z-index:1;border:2px solid #e8914ad9;border-radius:18px;transition:top .25s,left .25s,width .25s,height .25s;position:absolute;box-shadow:0 0 0 9999px #2c241c85}.tour-card{left:16px;right:16px;bottom:calc(var(--nav-h) + 18px + env(safe-area-inset-bottom));z-index:2;pointer-events:auto;margin:0;max-width:520px;margin-inline:auto;padding:18px 18px 14px;animation:.28s both rise;position:absolute}.tour-card h2{font-family:var(--font-display);margin:0 0 8px;font-size:1.35rem}.tour-card>p{color:var(--ink-soft);margin:0 0 14px;font-size:.95rem;line-height:1.45}.tour-progress{letter-spacing:.04em;text-transform:uppercase;font-weight:600;margin:0 0 6px!important;font-size:.78rem!important}.tour-actions{justify-content:space-between;align-items:center;gap:10px;display:flex}.tour-dots{flex:1;justify-content:center;gap:6px;display:flex}.tour-dot{background:var(--line);border-radius:999px;width:7px;height:7px}.tour-dot.active{background:var(--brand);width:16px}.day-picker{flex-wrap:wrap;gap:8px;display:flex}.day-chip{border:1px solid var(--line);width:40px;height:40px;color:var(--ink-soft);background:#fff;border-radius:12px;justify-content:center;align-items:center;padding:0;font-weight:700;line-height:1;display:inline-flex}.day-chip.active{background:var(--brand);border-color:var(--brand);color:#fff}.day-chip.daypart-chip{border-radius:14px;width:48px;height:48px}.day-chip.daypart-chip .icon-daypart{margin:0 auto;display:block}.day-chip.daypart-chip.active{border-color:var(--brand);color:inherit;box-shadow:0 0 0 2px color-mix(in srgb, var(--brand) 28%, transparent);background:#fff8ef}.daypart-badge{background:#fff6ea;border:1px solid #f0d7b4;padding:3px 7px}.repeat-badge{gap:6px}.repeat-badge-slots{align-items:center;gap:2px;display:inline-flex}.icon-daypart{flex-shrink:0;display:block}.composer-toggle{justify-content:space-between;width:100%}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.child-lock-banner{color:var(--brand-deep);background:#fff4e8;border-radius:14px;justify-content:space-between;align-items:center;gap:10px;margin:0 0 12px;padding:10px 12px;font-size:.88rem;font-weight:600;display:flex}.challenge-panel{margin-bottom:0}.challenge-bar{background:var(--brand-soft);border-radius:999px;height:10px;margin:8px 0;overflow:hidden}.challenge-bar-fill{background:var(--brand);border-radius:999px;height:100%;transition:width .35s}.challenge-edit summary{cursor:pointer;color:var(--brand-deep);font-weight:600}.template-panel{border:1px solid var(--line);background:#faf6f1;border-radius:14px;padding:0 12px 10px}.template-panel>summary{cursor:pointer;color:var(--brand-deep);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:12px 0;font-weight:700;list-style:none;display:flex}.template-panel>summary::-webkit-details-marker{display:none}.template-panel>summary:after{content:"";border-right:2px solid var(--ink-soft);border-bottom:2px solid var(--ink-soft);width:8px;height:8px;margin-left:auto;transition:transform .15s;transform:rotate(45deg)}.template-panel[open]>summary:after{margin-top:4px;transform:rotate(-135deg)}.template-panel>summary .muted{font-size:.88rem;font-weight:600}.template-chips{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:220px;padding-bottom:2px;display:grid;overflow-y:auto}.template-chip-wrap{min-width:0;position:relative}.template-chip{border:1px solid var(--line);width:100%;min-width:0;color:var(--brand-deep);text-align:left;cursor:pointer;font:inherit;background:linear-gradient(#fffefb 0%,#f7f0e8 100%);border-radius:14px;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 28px 10px 12px;display:flex}.template-chip-delete{width:24px;height:24px;color:var(--ink-soft);cursor:pointer;background:#5a463214;border:none;border-radius:999px;place-items:center;padding:0;font-size:1.1rem;line-height:1;display:grid;position:absolute;top:4px;right:4px}.template-chip-delete:hover:not(:disabled){color:#a33;background:#b43c3c1f}.template-chip-delete:disabled{opacity:.4;cursor:not-allowed}.template-chip:hover:not(:disabled){background:linear-gradient(#fffaf3 0%,#f3e6d8 100%);border-color:#e8914a73}.template-chip:disabled{opacity:.55;cursor:not-allowed}.template-chip-name{color:var(--brand-deep);font-size:.92rem;font-weight:700;line-height:1.2}.template-chip-meta{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:.78rem;font-weight:600;line-height:1.25;overflow:hidden}@media (width<=360px){.template-chips{grid-template-columns:1fr}}.badge-grid{gap:var(--card-gap);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.badge-card{opacity:.55;background:#f5f0eb;border-radius:14px;flex-direction:column;gap:4px;padding:10px;display:flex}.badge-card.is-earned{opacity:1;background:var(--accent-soft)}.badge-card strong{font-size:.85rem}.ach-row{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.ach-more{color:var(--ink-soft);font-size:.72rem;font-weight:700}.ach-badge{flex-direction:column;align-items:center;gap:4px;display:inline-flex}.ach-medal{box-shadow:var(--shadow-sm);border:2px solid #0000;border-radius:50%;place-items:center;display:grid}.ach-size-sm{width:28px;height:28px;padding:4px}.ach-size-md{width:36px;height:36px;padding:6px}.ach-size-lg{width:52px;height:52px;padding:10px}.ach-badge.is-locked .ach-medal{opacity:.35;filter:grayscale(.85);color:#8a7b6e;background:#efe8e1}.ach-badge.is-locked.ach-bronze .ach-medal,.ach-badge.is-locked.ach-silver .ach-medal,.ach-badge.is-locked.ach-gold .ach-medal{filter:none;opacity:.42}.ach-badge.is-locked.ach-bronze .ach-medal{background:#f6e4d2;border-color:#d4a06a}.ach-badge.is-locked.ach-silver .ach-medal{background:#e8edf2;border-color:#b0bac6}.ach-badge.is-locked.ach-gold .ach-medal{background:#f8edd0;border-color:#e2c57a}.ach-badge.is-earned.ach-gold .ach-medal{color:#8a5a12;background:linear-gradient(145deg,#ffe7a0,#f0c56a);border-color:#e2b44a}.ach-badge.is-earned.ach-coral .ach-medal{color:#7a3d12;background:linear-gradient(145deg,#ffd4b8,#e8914a);border-color:#d87a2f}.ach-badge.is-earned.ach-mint .ach-medal{color:#1f6b48;background:linear-gradient(145deg,#d8f3e2,#7bc9a0);border-color:#5bb387}.ach-badge.is-earned.ach-sky .ach-medal{color:#1f4f7a;background:linear-gradient(145deg,#d7ebff,#7eb6e8);border-color:#5a9ad0}.ach-badge.is-earned.ach-bronze .ach-medal{color:#7a3d12;background:linear-gradient(145deg,#f3d2b0,#cd7f32);border-color:#b36d34}.ach-badge.is-earned.ach-silver .ach-medal{color:#3d4a57;background:linear-gradient(145deg,#f4f7fa,#aeb8c4);border-color:#8a98a6}.ach-badge.is-earned.ach-violet .ach-medal{color:#5a2f8a;background:linear-gradient(145deg,#e8d9ff,#b48ae0);border-color:#9a6fc8}.ach-label{color:var(--brand-deep);text-align:center;max-width:72px;font-size:.68rem;font-weight:700;line-height:1.15}.ach-shelf{grid-template-columns:1fr;gap:10px;display:grid}.ach-shelf-card{opacity:.55;background:#f5f0eb;border-radius:16px;grid-template-columns:auto 1fr;align-items:center;gap:12px;padding:10px 12px;display:grid}.ach-shelf-card.is-earned{opacity:1;background:linear-gradient(#fffefb 0%,#fff4e4 100%);border:1px solid #e8914a2e}.ach-shelf-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.ach-shelf-copy strong{font-size:.92rem}.ach-showcase{flex-wrap:wrap;gap:10px;margin-top:10px;display:flex}.month-medal-list{flex-direction:column;gap:8px;margin-top:12px;display:flex}.month-medal-row{opacity:.72;background:#f5f0eb;border:1px solid #0000;border-radius:16px;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:12px 14px;display:grid}.month-medal-row.is-earned{opacity:1;background:linear-gradient(#fffefb 0%,#fff4e4 100%);border-color:#e8914a33}.month-medal-text{flex-direction:column;gap:2px;min-width:0;display:flex}.month-medal-text strong{color:var(--brand-deep);font-size:1rem}.month-medal-text .muted{font-size:.88rem;font-weight:600}.section-subhead{color:var(--brand-deep);margin:0;font-size:.95rem;font-weight:700}.challenge-standing-row{background:#f7f2ec;border-radius:14px;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.challenge-standing-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.challenge-standing-copy strong{color:var(--brand-deep);font-size:.95rem}.challenge-standing-medals{align-items:center;gap:4px;display:flex}.challenge-list{flex-direction:column;gap:10px;display:flex}.challenge-list-card{text-align:left;cursor:pointer;width:100%;color:inherit;font:inherit;background:linear-gradient(#fffefb 0%,#f7f0e8 100%);border:1px solid #5a46321a;border-radius:16px;flex-direction:column;gap:8px;padding:14px;display:flex}.challenge-list-card.is-done{background:linear-gradient(#f7fff9 0%,#e8f6ec 100%);border-color:#5aa06e59}.challenge-list-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.challenge-list-top strong{color:var(--brand-deep);font-size:1.02rem}.challenge-list-medals{gap:4px;display:flex}.medals-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.medal-card{text-align:center;opacity:.7;background:#f5f0eb;border:1px solid #0000;border-radius:16px;flex-direction:column;align-items:center;gap:6px;min-width:0;padding:14px 10px;display:flex}.medal-card.is-earned{opacity:1;background:linear-gradient(#fffefb 0%,#fff4e4 100%);border-color:#e8914a38}.medal-card strong{color:var(--brand-deep);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.9rem;line-height:1.2;display:-webkit-box;overflow:hidden}.medal-card .muted{font-size:.78rem;font-weight:600}.challenge-medal-bronze{background:linear-gradient(#fffaf5 0%,#f4e0cc 100%);border-color:#cd7f3247}.challenge-medal-silver{background:linear-gradient(#fbfcfe 0%,#e6ebf1 100%);border-color:#6e7a8847}.challenge-medal-gold{background:linear-gradient(#fffdf5 0%,#f7e8bc 100%);border-color:#e2b44a59}.challenge-medal-fields{align-items:stretch}.challenge-medal-field{border:1px solid #0000;border-radius:14px;flex:1;min-width:0;padding:10px}.challenge-medal-field-label{align-items:center;gap:6px;margin-bottom:6px;display:flex}.member-achievements{margin-top:8px}.member-profile .panel-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.member-profile .panel-head h2{margin:0}.member-badge-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.member-badge-card{text-align:center;background:linear-gradient(#fffefb 0%,#fff4e4 100%);border:1px solid #e8914a33;border-radius:16px;flex-direction:column;align-items:center;gap:6px;min-width:0;padding:12px 10px;display:flex}.member-badge-card.is-locked{opacity:.55;background:#f7f4ef;border-color:#5a46320f}.member-badge-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.member-badge-copy strong{color:var(--brand-deep);font-size:.88rem;line-height:1.25}.member-badge-copy .muted{font-size:.75rem;line-height:1.3}.member-task-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.member-task-item{background:#faf6f1;border:1px solid #5a463214;border-radius:14px;justify-content:space-between;align-items:flex-start;gap:10px;padding:12px;display:flex}.member-task-item.is-done{background:#f3f8f4}.member-task-main{flex-direction:column;gap:3px;min-width:0;display:flex}.member-task-main strong{color:var(--brand-deep);font-size:.95rem;line-height:1.3}.member-task-notes{font-size:.8rem;line-height:1.3}.member-task-meta{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:4px;display:flex}.child-lock-box{background:#fff8f2;border-radius:16px;padding:12px}
