:root{--text:#4b4553;--text-h:#1f1a2e;--bg:#faf9fc;--surface:#fff;--border:#e6e3ec;--accent:#aa3bff;--shadow:#1f1a2e14 0 4px 16px -4px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;font:16px/145% var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#c9c5d1;--text-h:#f3f1f7;--bg:#16151c;--surface:#1f1e27;--border:#322f3b;--accent:#c084fc;--shadow:#00000059 0 4px 16px -4px}}*{box-sizing:border-box}body{margin:0}h1,h2,h3{font-family:var(--sans);color:var(--text-h);font-weight:600}.app{max-width:960px;margin:0 auto;padding:24px 16px 64px}.app-header{text-align:center;margin-bottom:24px}.app-header h1{justify-content:center;align-items:center;gap:10px;margin:0 0 4px;font-size:32px;display:flex}.app-logo{border-radius:8px;flex-shrink:0;width:32px;height:32px}@media (width<=430px){.app-header h1{gap:8px;font-size:24px}.app-logo{border-radius:6px;width:24px;height:24px}}.streak-banner{border:1px solid var(--border);background:var(--surface);width:fit-content;box-shadow:var(--shadow);border-radius:999px;justify-content:center;align-items:center;gap:10px;margin-bottom:16px;margin-left:auto;margin-right:auto;padding:10px 16px;display:flex}.streak-banner-empty{color:var(--text);opacity:.7;font-size:14px}.streak-flames{letter-spacing:1px;font-size:18px}.streak-label{font-size:14px;font-weight:600}.instruction-hint{text-align:center;opacity:.65;margin:0 0 16px;font-size:13px}.share-app{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;margin-top:20px;padding:16px}.share-app h3{margin:0 0 8px;font-size:15px}.share-app-hint{opacity:.7;margin:0 0 12px;font-size:13px}.share-app-success,.share-app-error{margin:10px 0 0;font-size:13px}.share-app-success{color:var(--accent)}.share-app-error{opacity:.75}.view-toggle{justify-content:center;gap:6px;margin-bottom:16px;display:flex}.toggle-button{border:1px solid var(--border);background:var(--surface);color:var(--text-h);cursor:pointer;border-radius:999px;padding:6px 16px;font-size:14px}.toggle-button.active{border-color:var(--accent);color:var(--accent);font-weight:600}.app-main{grid-template-columns:1fr 260px;align-items:start;gap:20px;display:grid}@media (width<=760px){.app-main{grid-template-columns:1fr}}.calendar{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;padding:16px}.calendar-toolbar{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.calendar-toolbar-left{align-items:center;gap:8px;display:flex}.calendar-toolbar-left h2{text-align:center;min-width:160px;margin:0;font-size:20px}.nav-button,.today-button{border:1px solid var(--border);background:var(--surface);color:var(--text-h);cursor:pointer;border-radius:8px;font-size:15px}.nav-button{width:32px;height:32px}.today-button{padding:6px 12px}.nav-button:hover,.today-button:hover{border-color:var(--accent)}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.weekday-label{text-align:center;opacity:.6;padding:4px 0;font-size:12px;font-weight:600}.calendar-day{aspect-ratio:1;border:1px solid var(--border);background:var(--surface);cursor:pointer;min-height:56px;color:var(--text-h);border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:4px;display:flex}.calendar-day:hover{border-color:var(--accent)}.calendar-day.outside-month{opacity:.35}.calendar-day.is-today{border-color:var(--accent);border-width:2px}.day-number{font-size:13px;font-weight:500}.day-icons{flex-wrap:wrap;gap:2px;display:flex}.day-icon{font-size:13px;line-height:1}.week-grid{flex-direction:column;gap:8px;display:flex}.week-day{border:1px solid var(--border);background:var(--surface);cursor:pointer;color:var(--text-h);text-align:left;border-radius:8px;align-items:center;gap:12px;width:100%;padding:10px 12px;display:flex}.week-day:hover{border-color:var(--accent)}.week-day.is-today{border-color:var(--accent);border-width:2px}.week-day-header{flex-direction:column;flex-shrink:0;align-items:center;min-width:42px;display:flex}.week-day-name{opacity:.6;font-size:11px;font-weight:600}.week-day-entries{flex-wrap:wrap;flex:1;gap:6px;display:flex}.week-day-empty{opacity:.35;font-size:13px}.week-day-tag{white-space:nowrap;border:1px solid;border-radius:999px;padding:3px 10px;font-size:12px}@media (width<=480px){.week-day-tag{padding:2px 8px;font-size:11px}}.legend{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;padding:16px}.legend h3{margin:0 0 10px;font-size:15px}.legend-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.legend-list li{align-items:center;gap:8px;font-size:14px;display:flex}.legend-label{flex:1}.legend-count{opacity:.7;font-weight:600}.legend-empty{opacity:.7;margin:0;font-size:14px}.legend-total{border-top:1px solid var(--border);margin-top:12px;padding-top:12px;font-size:14px}.panel-overlay{z-index:10;background:#14101e73;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.panel{background:var(--surface);width:100%;max-width:480px;max-height:85vh;box-shadow:var(--shadow);border-radius:14px;padding:20px;overflow-y:auto}.panel-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.panel-header h2{margin:0;font-size:18px}.icon-button{cursor:pointer;color:var(--text);background:0 0;border:none;padding:4px;font-size:16px;line-height:1}.panel-section{margin-top:16px}.panel-section h3{opacity:.75;margin:0 0 8px;font-size:14px}.logged-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.logged-list li{border:1px solid;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:8px;padding:8px 10px;font-size:14px;display:flex}.logged-entry-main{color:var(--text-h);cursor:pointer;text-align:left;background:0 0;border:none;flex-direction:column;flex:1;align-items:flex-start;gap:4px;min-width:0;padding:0;display:flex}.logged-entry-title{font-weight:500}.logged-entry-rating{color:var(--accent);letter-spacing:1px;font-size:13px}.logged-entry-notes{opacity:.75;white-space:pre-wrap;font-size:13px}.logged-entry-cost{opacity:.85;font-size:13px;font-weight:600}.type-theme-group{margin-bottom:14px}.type-theme-heading{text-transform:uppercase;letter-spacing:.04em;opacity:.55;margin:0 0 8px;font-size:12px;font-weight:700}.type-grid{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.type-button{background:var(--surface);color:var(--text-h);cursor:pointer;text-align:left;border:1px solid;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.type-button:hover:not(:disabled){filter:brightness(.97)}.type-button:disabled{opacity:.35;cursor:not-allowed}.type-emoji{font-size:16px}.entry-form{flex-direction:column;gap:12px;display:flex}.entry-form-field{flex-direction:column;gap:6px;display:flex}.entry-form-field label{opacity:.75;font-size:13px;font-weight:600}.entry-form-field textarea,.entry-form-field input[type=date]{border:1px solid var(--border);resize:vertical;background:var(--bg);color:var(--text-h);border-radius:8px;padding:8px 10px;font-family:inherit;font-size:14px}.entry-form-field input[type=date]{width:fit-content}.cost-input{border:1px solid var(--border);background:var(--bg);border-radius:8px;align-items:center;width:fit-content;padding:0 10px;display:flex}.cost-input:focus-within{border-color:var(--accent)}.cost-prefix{opacity:.6;font-size:14px}.cost-input input{color:var(--text-h);background:0 0;border:none;width:100px;padding:8px 6px;font-family:inherit;font-size:14px}.cost-input input:focus{outline:none}.rating-input{gap:4px;display:flex}.rating-star{cursor:pointer;color:var(--border);background:0 0;border:none;padding:2px;font-size:26px;line-height:1}.rating-star.filled{color:var(--accent)}.entry-form-actions{justify-content:flex-end;gap:8px;display:flex}.primary-button,.secondary-button{cursor:pointer;border-radius:8px;padding:8px 16px;font-size:14px}.primary-button{border:1px solid var(--accent);background:var(--accent);color:#fff}.secondary-button{border:1px solid var(--border);background:var(--surface);color:var(--text-h)}.money-tracker{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;margin-top:20px;padding:16px}.money-tracker h3{margin:0 0 10px;font-size:15px}.money-tracker-empty{opacity:.7;margin:0;font-size:14px}.money-tracker-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.money-tracker-list li{align-items:center;gap:10px;font-size:14px;display:flex}.money-tracker-label{flex:1}.money-tracker-amount{color:var(--accent);font-weight:600}.money-tracker-total{border-top:1px solid var(--border);margin-top:12px;padding-top:12px;font-size:14px}.top-rated{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;margin-top:20px;padding:16px}.top-rated h3{margin:0 0 10px;font-size:15px}.top-rated-empty{opacity:.7;margin:0;font-size:14px}.top-rated-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.top-rated-list li{align-items:center;gap:10px;font-size:14px;display:flex}.top-rated-rank{opacity:.5;min-width:16px;font-weight:700}.top-rated-label{flex:1}.top-rated-score{color:var(--accent);font-weight:600}.top-rated-count{opacity:.6;font-size:13px}.year-heatmap{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;margin-top:20px;padding:16px}.year-heatmap-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.year-heatmap-header h3{margin:0;font-size:15px}.year-heatmap-nav{align-items:center;gap:8px;display:flex}.year-heatmap-year{text-align:center;min-width:40px;font-size:14px;font-weight:600}.year-heatmap-scroll{padding-bottom:4px;overflow-x:auto}.year-heatmap-grid{gap:3px;width:fit-content;display:flex}.year-heatmap-week{flex-direction:column;gap:3px;display:flex}.year-heatmap-month-label{opacity:.6;white-space:nowrap;height:14px;font-size:10px}.year-heatmap-cell{border-radius:2px;width:11px;height:11px;display:inline-block}.year-heatmap-cell.heat-0{background:var(--border)}.year-heatmap-cell.heat-1{background:#aa3bff59}.year-heatmap-cell.heat-2{background:#aa3bffa6}.year-heatmap-cell.heat-3{background:#aa3bff}.year-heatmap-cell.heat-outside{background:0 0}.year-heatmap-cell[data-today=true]{outline:1.5px solid var(--text-h);outline-offset:1px}.year-heatmap-total{border-top:1px solid var(--border);margin-top:12px;padding-top:12px;font-size:14px}.auth-section{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;margin-top:20px;padding:16px}.auth-section h3{margin:0 0 8px;font-size:15px}.auth-section-hint{opacity:.7;margin:0 0 12px;font-size:13px}.auth-section-form{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.auth-section-form input[type=email]{border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:8px;width:100%;max-width:280px;padding:8px 10px;font-family:inherit;font-size:14px}.auth-optin-label{opacity:.8;cursor:pointer;align-items:center;gap:6px;font-size:13px;display:flex}.auth-section-success{color:var(--accent);margin:0;font-size:13px}.auth-section-error{opacity:.75;margin:0;font-size:13px}.data-backup{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;margin-top:20px;padding:16px}.data-backup h3{margin:0 0 8px;font-size:15px}.data-backup-hint{opacity:.7;margin:0 0 12px;font-size:13px}.data-backup-actions{flex-wrap:wrap;gap:8px;display:flex}.data-backup-success{color:var(--accent);margin:10px 0 0;font-size:13px}.data-backup-error{color:#ef4444;margin:10px 0 0;font-size:13px}.suggestion-box{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;margin-top:20px;padding:16px}.suggestion-box h3{margin:0 0 10px;font-size:15px}.suggestion-form{flex-direction:column;gap:10px;display:flex}.suggestion-form input,.suggestion-form textarea{border:1px solid var(--border);background:var(--bg);color:var(--text-h);resize:vertical;border-radius:8px;padding:8px 10px;font-family:inherit;font-size:14px}.suggestion-form .primary-button{align-self:flex-start}.suggestion-sent{color:var(--accent);margin:0;font-size:14px}.suggestion-error{opacity:.75;margin:0;font-size:13px}
