:root{--indigo:#3a2fa8;--indigo-2:#4a3ebe;--purple:#6d28d9;--green:#10b981;--green-ink:#047857;--blue:#2563eb;--blue-ink:#1d4ed8;--pink:#db2777;--pink-ink:#be185d;--pink-soft:#f472b6;--amber:#f59e0b;--amber-strong:#d97706;--amber-ink:#b45309;--gray:#b8b4d6;--bg:#f1eff9;--card:#fff;--soft:#f6f4fc;--track:#f1eff9;--line:#f0eef7;--border:#dad6ee;--ink:#221f3d;--text:#4a4770;--muted:#6b6890;--on-indigo:#dcd7ff;--hero-track:#5446c4;--ring-track:#eceaf5;--danger:#b91c1c;--font:"Nunito Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:15px}button,input,select,textarea{font:inherit;color:inherit}h1,h2{text-wrap:balance;margin:0}p{margin:0}:focus-visible{outline:3px solid color-mix(in srgb, var(--purple) 55%, transparent);outline-offset:2px}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.num{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.b{font-weight:700}.grow{flex:1}.small-text{font-size:13px}.btn{cursor:pointer;white-space:nowrap;border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 18px;font-size:14px;font-weight:800;text-decoration:none;transition:background .15s,transform .1s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--purple);color:#fff}.btn.primary:hover{background:#5b21b6}.btn.ghost{background:var(--card);border:1.5px solid var(--border);color:var(--ink)}.btn.ghost:hover{background:var(--soft)}.btn.ghost.danger{color:var(--danger)}.btn.danger-solid{background:var(--danger);color:#fff}.btn.light{color:var(--indigo);background:#fff;margin-top:auto}.btn.big{min-height:52px;font-size:16px}.btn.small{border-radius:10px;min-height:38px;padding:0 12px;font-size:13px}.icon-btn{width:40px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:10px;flex:none;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover:not(:disabled){background:var(--soft);color:var(--indigo)}.icon-btn:disabled{opacity:.35;cursor:not-allowed}.link-btn{color:#5b3fd9;cursor:pointer;background:0 0;border:none;padding:6px 2px;font-size:14px;font-weight:700}.link-btn:hover{color:var(--indigo);text-decoration:underline}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1.5px solid var(--border);background:var(--card);min-height:40px;color:var(--ink);cursor:pointer;border-radius:99px;padding:0 16px;font-size:14px;font-weight:700}.chip.on{background:var(--indigo);border-color:var(--indigo);color:#fff}.login{flex-wrap:wrap;min-height:100vh;display:flex}.login-brand{background:var(--indigo);color:#fff;flex-direction:column;flex:420px;justify-content:space-between;gap:48px;padding:56px max(24px,4vw);display:flex}.login-pitch{flex-direction:column;gap:20px;max-width:520px;display:flex}.login-pitch h1{font-size:clamp(32px,4vw,44px);font-weight:800;line-height:1.15}.login-pitch p{color:var(--on-indigo);font-size:18px;line-height:1.6}.login-points{flex-wrap:wrap;gap:12px;margin:0;padding:0;list-style:none;display:flex}.login-points li{background:#ffffff1a;border-radius:14px;align-items:center;gap:10px;padding:12px 16px;font-weight:700;display:flex}.login-form-wrap{flex:420px;justify-content:center;align-items:center;padding:48px 16px;display:flex}.login-form{background:var(--card);border-radius:24px;flex-direction:column;gap:20px;width:100%;max-width:440px;padding:40px clamp(20px,5vw,40px);display:flex;box-shadow:0 12px 40px #3a2fa81a}.login-head{flex-direction:column;gap:6px;display:flex}.login-head h2{font-size:28px;font-weight:800}.login-head p,.fine{color:var(--muted)}.fine{text-align:center;font-size:13px}.login-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.pw{display:flex;position:relative}.pw input{flex:1;padding-right:52px}.pw .icon-btn{position:absolute;top:4px;right:4px}.check{cursor:pointer;align-items:center;gap:10px;min-height:40px;font-size:14px;display:flex}.check input{width:18px;height:18px;accent-color:var(--purple);flex:none}.notice{background:var(--soft);color:var(--text);border-radius:14px;flex-direction:column;gap:12px;padding:16px;font-size:14px;line-height:1.5;display:flex}.notice .btn{align-self:flex-start}.error{color:var(--danger);background:#fef2f2;border-radius:12px;padding:12px 14px;font-size:14px;font-weight:600}.field{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.field>label,.field>.label{font-size:14px;font-weight:700}.hint{color:var(--muted);font-size:13px}input:not([type=checkbox]):not([type=range]),select,textarea{border:1.5px solid var(--border);width:100%;min-height:48px;color:var(--ink);background:#faf9fe;border-radius:12px;padding:0 14px;font-size:16px}textarea{resize:vertical;padding:12px 14px;line-height:1.5}input:focus,select:focus,textarea:focus{border-color:var(--purple);box-shadow:0 0 0 3px color-mix(in srgb, var(--purple) 20%, transparent);outline:none}.money-input{align-items:center;display:flex;position:relative}.money-input span{color:var(--muted);pointer-events:none;font-weight:700;position:absolute;left:14px}.money-input input{padding-left:34px!important}.form{flex-direction:column;gap:18px;display:flex}.form-row{flex-wrap:wrap;gap:14px;display:flex}.form-row>.field{flex:160px}.form-actions{flex-wrap:wrap;align-items:center;gap:10px;padding-top:4px;display:flex}.segmented{background:var(--soft);border-radius:12px;gap:4px;padding:4px;display:flex}.segmented button{min-height:40px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:9px;flex:1;font-size:14px;font-weight:700}.segmented button.on{background:var(--indigo);color:#fff}.segmented button.on.in{background:var(--green-ink)}.danger-zone{border-top:1px solid var(--line);flex-direction:column;gap:12px;padding-top:18px;display:flex}.dz-title{font-weight:800}.danger-zone p{color:var(--muted);font-size:14px}.dz-actions{flex-wrap:wrap;gap:10px;display:flex}.look-picker{flex-wrap:wrap;gap:8px;display:flex}.look-picker button{cursor:pointer;border:2px solid #0000;border-radius:12px;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.look-picker button.on{border-color:var(--indigo)}.modal-backdrop{padding:max(24px, env(safe-area-inset-top,0px)) 16px 24px;z-index:50;background:#221f3d73;justify-content:center;align-items:flex-start;animation:.15s ease-out fade;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--card);border-radius:22px;flex-direction:column;gap:18px;width:100%;max-width:520px;margin-top:6vh;padding:24px clamp(18px,4vw,28px) 26px;animation:.18s ease-out rise;display:flex;box-shadow:0 24px 60px #221f3d40}.modal-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.modal-head h2{font-size:22px;font-weight:800}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.shell{background:linear-gradient(to right, var(--indigo) 260px, var(--bg) 260px);flex-wrap:wrap;min-height:100vh;display:flex}.sidebar{background:var(--indigo);color:#fff;flex-direction:column;flex:0 0 260px;gap:36px;height:100vh;padding:28px 20px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;padding:0 6px;display:flex}.brand-mark{width:44px;height:44px;color:var(--indigo);background:#fff;border-radius:12px;flex:none;justify-content:center;align-items:center;display:flex}.brand-name{font-size:19px;font-weight:800}.brand-sub{color:var(--on-indigo);font-size:13px}.nav-links,.nav-foot{flex-direction:column;gap:6px;display:flex}.nav-foot{margin-top:auto}.nav-link{color:#e4e0ff;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:12px;align-items:center;gap:12px;width:100%;min-height:48px;padding:0 14px;font-size:15px;font-weight:700;text-decoration:none;display:flex}.nav-link:hover{color:#fff;background:#ffffff1a}.nav-link.active{color:var(--indigo);background:#fff;font-weight:800}.save-state{color:var(--on-indigo);padding:8px 14px 0;font-size:13px}.save-state.error{color:#ffd1d1}.save-state .link-btn{color:#fff;padding:0;font-size:13px;text-decoration:underline}.boot{background:var(--bg);min-height:100vh;color:var(--text);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px 16px;font-weight:700;display:flex}.main{flex-direction:column;flex:560px;gap:26px;min-width:0;max-width:1400px;padding:32px max(16px,2.8vw) 48px;display:flex}@media (width<=860px){.shell{background:var(--bg)}.sidebar{flex:100%;gap:14px;height:auto;padding:16px;position:static}.nav-links{flex-flow:wrap}.nav-links .nav-link{flex:140px}.nav-foot{flex-flow:wrap;align-items:center;margin-top:0}.save-state{flex:100%;padding:0 6px}.nav-foot .nav-link{min-height:40px;font-size:14px}.main{padding:22px 16px 40px}}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.page-head h1{font-size:30px;font-weight:800}.page-head p{color:var(--muted);margin-top:4px;font-size:15px}.head-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.date-chip{background:var(--card);min-height:44px;color:var(--indigo);border-radius:12px;align-items:center;gap:8px;padding:0 16px;font-size:14px;font-weight:700;display:flex}.avatar{color:#9d174d;background:#f9d9ea;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:17px;font-weight:800;display:flex}.month-picker,.quarter-picker{background:var(--card);border-radius:12px;align-items:center;gap:4px;min-height:48px;padding:4px;display:flex}.month-picker span{text-align:center;min-width:130px;font-size:14px;font-weight:800}.quarter-picker .year{padding:0 2px;font-size:14px;font-weight:800}.seg{gap:4px;margin-left:6px;display:flex}.seg button{min-width:48px;min-height:40px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:9px;font-size:14px;font-weight:700}.seg button.on{background:var(--indigo);color:#fff;font-weight:800}.card{background:var(--card);border-radius:18px}.panel{flex-direction:column;gap:16px;min-width:0;padding:24px 26px;display:flex}.panel h2,.hero-card h2{font-size:20px;font-weight:800}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.row{flex-wrap:wrap;gap:24px;display:flex}.row>.wide{flex:2 520px}.row>.narrow{flex:300px}.stats{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:20px;display:grid}.stats.compact{flex:2 460px;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));align-content:stretch}.stat{text-align:left;border:none;flex-direction:column;gap:6px;min-width:0;padding:22px;display:flex}.stats.compact .stat{justify-content:center}.stat-label{letter-spacing:.06em;color:var(--muted);font-size:12.5px;font-weight:700}.stat-value{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-size:30px;font-weight:800;line-height:1.15}.stat-sub{color:var(--text);font-size:14px}.stat-row{flex-wrap:wrap;align-items:baseline;column-gap:10px;display:flex}.delta{color:var(--muted);font-size:13px;font-weight:700}.delta.up{color:var(--green-ink)}.delta.down{color:var(--amber-ink)}.spark-card{cursor:pointer;padding-bottom:0;transition:box-shadow .15s,transform .15s;overflow:hidden}.spark-card:hover{transform:translateY(-1px);box-shadow:0 8px 24px #3a2fa81f}.spark{width:calc(100% + 44px);height:48px;margin:6px -22px 0;display:block}.mini-bar{padding:14px 0 22px}.tone-indigo{color:var(--indigo)}.tone-purple{color:var(--purple)}.tone-green{color:var(--green-ink)}.tone-blue{color:var(--blue-ink)}.tone-pink{color:var(--pink-ink)}.tone-amber{color:var(--amber-ink)}.hero-card{background:var(--indigo);color:#fff;flex:340px;align-items:center;gap:24px;padding:24px 28px;display:flex}@media (width<=480px){.hero-card{flex-wrap:wrap}}.hero-card.column{flex-direction:column;align-items:stretch;gap:18px}.hero-text{flex-direction:column;gap:6px;display:flex}.eyebrow{letter-spacing:.06em;color:var(--on-indigo);font-size:12.5px;font-weight:700}.hero-title{font-size:22px;font-weight:800}.hero-sub,.hero-sub-list{color:var(--on-indigo);font-size:15px}.hero-sub-list{flex-direction:column;gap:6px;display:flex}.hero-ring-row{flex-wrap:wrap;align-items:center;gap:22px;display:flex}.attention{background:var(--indigo-2);border-radius:14px;flex-direction:column;gap:6px;padding:16px 18px;display:flex}.attention-title{font-size:17px;font-weight:800}.ring-arc{transition:stroke-dasharray .4s}.chart{width:100%;height:auto;display:block}.chart-grid line{stroke:#eceaf5;stroke-width:1px}.chart-axis,.chart-axis text{fill:var(--muted);font-size:12px;font-family:var(--font)}.chart-axis.strong{fill:var(--ink);font-weight:800}.chart rect{transition:y .3s,height .3s}.legend{color:var(--text);flex-wrap:wrap;align-items:center;gap:18px;font-size:14px;display:flex}.legend span{align-items:center;gap:8px;display:flex}.legend i{border-radius:50%;width:10px;height:10px}.donut-wrap{flex-wrap:wrap;align-items:center;gap:22px;display:flex}.donut-wrap text{font-family:var(--font)}.donut-list{flex-direction:column;flex:140px;gap:10px;margin:0;padding:0;font-size:14px;list-style:none;display:flex}.donut-list li{align-items:center;gap:10px;display:flex}.donut-list i{border-radius:3px;flex:none;width:10px;height:10px}.donut-list .num{font-weight:700}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;min-width:520px;font-size:15px}.table th{background:var(--soft);color:var(--muted);text-align:left;padding:12px 14px;font-size:13px;font-weight:700}.table th:first-child{border-radius:10px 0 0 10px}.table th:last-child{border-radius:0 10px 10px 0}.table td{border-bottom:1px solid var(--line);height:52px;padding:10px 14px}.table tr:last-child td{border-bottom:none}.table .r{text-align:right}.table .pos{color:var(--green-ink);font-weight:800}.pill{white-space:nowrap;border-radius:99px;padding:4px 10px;font-size:13px;font-weight:700;display:inline-block}.pill-income{color:#5b21b6;background:#ede9fe}.goal-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:20px;display:grid}.goal{border:2px solid #0000;flex-direction:column;gap:14px;padding:22px;transition:border-color .15s;display:flex}.goal.status-behind{border-color:#fcd34d}.goal.selected{border-color:var(--purple)}.goal-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.eyebrow-sm{color:var(--muted);letter-spacing:.04em;font-size:13px;font-weight:700}.status-pill.on-track{color:#065f46;background:#e3f8ef}.status-pill.behind{color:#92400e;background:#fef3c7}.status-pill.done{color:#5b21b6;background:#ede9fe}.goal h2{font-size:19px;font-weight:800}.goal-title{all:unset;cursor:pointer}.goal-title:hover{color:var(--purple)}.goal-title:focus-visible{outline:3px solid color-mix(in srgb, var(--purple) 55%, transparent);border-radius:4px}.goal-foot{color:var(--text);flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:14px;display:flex}.goal-foot b{color:var(--ink)}.goal-actions{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;margin-top:auto;padding-top:10px;display:flex}.stepper{background:var(--soft);border-radius:12px;align-items:center;gap:2px;display:flex}.stepper span{text-align:center;min-width:44px;color:var(--muted);font-size:13px;font-weight:700}.add-tile{min-height:200px;color:var(--indigo);cursor:pointer;background:0 0;border:2px dashed #c9c3ea;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:15px;font-weight:800;display:flex}.add-tile:hover{background:#ffffff80}.bar{background:var(--track);border-radius:99px;overflow:hidden}.bar-fill{border-radius:99px;height:100%;transition:width .35s}.hero-card .bar{background:var(--hero-track)}.steps{flex-direction:column;gap:4px;display:flex}.step{border-radius:12px;align-items:center;gap:8px;padding-right:6px;display:flex}.step:nth-child(odd){background:var(--soft)}.step label{cursor:pointer;flex:1;align-items:center;gap:14px;min-height:50px;padding:0 14px;font-size:15px;font-weight:700;display:flex}.step input{width:20px;height:20px;accent-color:var(--purple);flex:none}.step.done span{color:var(--muted);font-weight:400;text-decoration:line-through}.icon-btn.subtle{width:36px;height:36px}.add-step{gap:10px;margin-top:8px;display:flex}.add-step input{flex:1}.number-progress{flex-direction:column;gap:12px;display:flex}.number-progress>label{font-size:14px;font-weight:700}.np-row{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.np-row input[type=range]{accent-color:var(--purple);flex:240px;height:28px}.np-input{flex:none;width:120px!important}.wish-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px;display:grid}.wish{border:2px solid #0000;flex-direction:column;gap:12px;padding:16px;display:flex}.wish.ready{border-color:#6ee7b7}.wish.bought{opacity:.85}.wish-art{border-radius:14px;justify-content:center;align-items:center;height:130px;display:flex}.tint-purple{color:var(--purple);background:#f1e8ff}.tint-blue{color:var(--blue-ink);background:#e4edff}.tint-green{color:var(--green-ink);background:#e3f8ef}.tint-amber{color:var(--amber-ink);background:#fef3c7}.tint-pink{color:var(--pink-ink);background:#fde7f1}.tint-indigo{color:var(--indigo);background:#e8e6fa}.wish-top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.wish-top h2{font-size:17px;font-weight:800}.wish-top .pill{flex:none;font-size:12px;font-weight:800}.pill-must{color:#9d174d;background:#fde7f1}.pill-nice{color:#5b21b6;background:#ede9fe}.pill-ready{color:#065f46;background:#e3f8ef}.pill-bought{background:var(--soft);color:var(--muted)}.wish-price{font-size:22px;font-weight:800}.wish-progress{flex-direction:column;gap:6px;display:flex}.wish-progress .muted{color:var(--text)}.wish-actions{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;margin-top:auto;padding-top:12px;display:flex}.wish-actions .icon-btn{margin-left:auto}.saving-row{flex-direction:column;gap:8px;display:flex}.saving-top{flex-wrap:wrap;justify-content:space-between;gap:10px;font-size:15px;display:flex}.empty{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:28px 12px;display:flex}.empty-title{font-size:18px;font-weight:800}.empty p{color:var(--muted);max-width:46ch;line-height:1.5}.empty .btn{margin-top:6px}
