@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#f4f1ea;--surface:#fff;--surface-2:#ebe7dd;--track:#e6e1d5;--ink:#1b1a17;--ink-2:#5d5950;--ink-3:#969084;--line:#e2ddd0;--accent:#e8602e;--accent-soft:#fbe6dc;--done:#2c9a6a;--done-soft:#dff2e8;--swap:#d4951a;--swap-soft:#f9edcf;--miss:#cf4c3a;--miss-soft:#f9e0db;--excused:#74839a;--excused-soft:#e3e8ef;--blank:#c8c2b5;--shadow:0 1px 2px #2820100d, 0 6px 20px #2820100d;--radius:16px;--display:"Bricolage Grotesque Variable", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--body:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#141311;--surface:#1f1d1a;--surface-2:#2a2723;--track:#322f2a;--ink:#f2eee6;--ink-2:#b6b0a4;--ink-3:#7e786d;--line:#34312b;--accent:#ff7d4d;--accent-soft:#3a2218;--done:#45b983;--done-soft:#173426;--swap:#e8b03a;--swap-soft:#3a2e12;--miss:#ec6b5a;--miss-soft:#3d1c17;--excused:#8e9db4;--excused-soft:#262c36;--blank:#4b473f;--shadow:0 1px 2px #0000004d}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font:16px/1.45 var(--body);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;margin:0}h1,h2,h3,p,ul{margin:0;padding:0}ul{list-style:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;text-align:inherit;background:0 0;border:0;padding:0}button:disabled{cursor:default;opacity:.4}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{max-width:520px;min-height:100dvh;margin:0 auto}.screen{padding:8px 16px calc(96px + env(safe-area-inset-bottom))}.loading{min-height:100dvh}.tabbar{width:100%;max-width:520px;padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);z-index:20;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab{color:var(--ink-3);letter-spacing:.01em;border-radius:12px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:6px 2px;font-size:11px;font-weight:600;display:flex}.tab.on{color:var(--ink)}.tab.on svg{color:var(--accent)}.top{align-items:center;gap:8px;padding:14px 0 12px;display:flex}.top-title{text-align:center;flex:1;min-width:0}.top-title.left{text-align:left}.top-title h1{font:700 30px/1.1 var(--display);letter-spacing:-.02em}.top-title p{color:var(--ink-2);margin-top:2px;font-size:14px}.block{margin-top:22px}.section-head{align-items:baseline;gap:8px;margin-bottom:10px;display:flex}.section-head h2,.card h2{font:700 19px/1.2 var(--display);letter-spacing:-.01em}.card h3{color:var(--ink-2);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;font-size:13px;font-weight:700}.count{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:13px;font-weight:700}.spacer{flex:1}.muted{color:var(--ink-2);font-size:14px}.small{font-size:12.5px}.hint{color:var(--ink-2);margin-bottom:12px;font-size:14px}.empty{text-align:center;color:var(--ink-2);text-wrap:balance;padding:44px 20px;font-size:15px}.empty-line{color:var(--ink-2);font-size:14px}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin-top:14px;padding:16px}.card h2{margin-bottom:12px}.icon-btn{background:var(--surface);width:40px;height:40px;box-shadow:var(--shadow);border-radius:50%;flex:none;place-items:center;display:grid}.icon-btn.on-dark{color:#fff;box-shadow:none;background:#ffffff24}.btn{background:var(--surface);border:1px solid var(--line);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;border-radius:14px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:0 16px;font-size:15px;font-weight:650;display:inline-flex}.btn.primary{background:var(--ink);border-color:var(--ink);color:var(--bg)}.btn.danger{background:var(--miss);border-color:var(--miss);color:#fff}.btn.ghost{color:var(--ink-2);background:0 0;border-color:#0000}.btn.danger-text{color:var(--miss)}.btn.dashed{border-style:dashed;border-color:var(--blank);color:var(--ink-2);background:0 0}.btn.block{width:100%;margin-top:10px;display:flex}.btn.big{min-height:54px;margin-top:0;font-size:16px}.btn.small{border-radius:11px;min-height:36px;padding:0 12px;font-size:14px}.btn.grow{flex:1}.btn-row{gap:10px;margin-top:10px;display:flex}.link-btn{color:var(--accent);align-items:center;gap:5px;font-size:14px;font-weight:650;display:inline-flex}.link-btn.inline{display:inline}.field{margin-top:18px}.label{color:var(--ink-2);margin-bottom:8px;font-size:13px;font-weight:700;display:block}.label.small{color:var(--ink-3);margin-top:12px;font-weight:600}.input{border:1px solid var(--line);background:var(--bg);resize:none;border-radius:12px;width:100%;padding:12px 14px;font-size:16px;display:block}.input.time{width:auto;min-width:130px}.input.select{width:auto;max-width:55%;padding:8px 10px;font-size:14px}fieldset.plain{border:0;min-width:0;margin:0;padding:0}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips.scroll{scrollbar-width:none;flex-wrap:nowrap;margin:0 -16px;padding:2px 16px 6px;overflow-x:auto}.chips.scroll::-webkit-scrollbar{display:none}.chip{border:1px solid var(--line);background:var(--surface);white-space:nowrap;border-radius:999px;flex:none;padding:8px 14px;font-size:14px;font-weight:600}.chip small{color:var(--ink-3);margin-left:2px;font-weight:700}.chip.on{background:var(--ink);border-color:var(--ink);color:var(--bg)}.chip.on small{color:inherit;opacity:.7}.chip.excused.on{background:var(--excused);border-color:var(--excused);color:#fff}.summary{grid-template-columns:1fr 1fr;gap:10px;display:grid}.sum-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);white-space:nowrap;align-items:center;gap:10px;min-width:0;padding:10px;display:flex}.sum-card b{font:700 16px/1.2 var(--display);display:block}.sum-card span{color:var(--ink-2);font-size:12.5px}.ring{flex:none;position:relative}.ring svg{display:block}.ring circle{transition:stroke-dashoffset .35s}.ring .ring-label{color:var(--ink);font-variant-numeric:tabular-nums;place-items:center;font-size:12px;font-weight:750;display:grid;position:absolute;inset:0}.list{flex-direction:column;gap:8px;display:flex}.row{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:4px;min-height:62px;padding:6px 8px 6px 6px;display:flex}.check{color:#fff;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;display:grid;position:relative}.check:before{content:"";border:2px solid var(--blank);border-radius:50%;transition:background .15s,border-color .15s,transform .15s;position:absolute;inset:7px}.check:active:before{transform:scale(.88)}.check svg{position:relative}.is-done .check:before{background:var(--done);border-color:var(--done)}.is-swapped .check:before{background:var(--swap);border-color:var(--swap)}.is-missed .check:before{background:var(--miss);border-color:var(--miss)}.is-excused .check:before{background:var(--excused);border-color:var(--excused)}.is-blank .check:before{border-style:dashed}.row-body{flex-direction:column;flex:1;gap:1px;min-width:0;padding:6px 4px;display:flex}.row-title{align-items:center;gap:8px;min-width:0;display:flex}.row-name{text-overflow:ellipsis;white-space:nowrap;font-weight:650;overflow:hidden}.is-done .row-name{color:var(--ink-2)}.row-sub{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.is-missed .row-sub{color:var(--miss)}.is-swapped .row-sub{color:var(--swap)}.is-excused .row-sub{color:var(--excused)}.streak{background:var(--accent-soft);color:var(--accent);font-variant-numeric:tabular-nums;border-radius:999px;flex:none;align-items:center;gap:2px;padding:1px 7px 1px 5px;font-size:12px;font-weight:750;display:inline-flex}.row-cam{width:44px;height:44px;color:var(--ink-3);cursor:pointer;border-radius:12px;flex:none;place-items:center;display:grid}.row-photo{border-radius:12px;flex:none;width:46px;height:46px;overflow:hidden}.thumb{object-fit:cover;background:var(--surface-2);width:100%;height:100%;display:block}.plan-row{padding-left:12px}.strip{scrollbar-width:none;gap:8px;margin:0 -16px;padding:2px 16px 6px;display:flex;overflow-x:auto}.strip::-webkit-scrollbar{display:none}.strip-item{width:68px;color:var(--ink-2);text-align:center;flex:none;font-size:11.5px}.strip-item .thumb{border-radius:12px;height:68px;margin-bottom:4px}.memory{border-radius:var(--radius);background:var(--surface);width:150px;box-shadow:var(--shadow);flex:none;overflow:hidden}.memory .thumb{height:150px}.memory span{color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;padding:8px 10px 10px;font-size:12.5px;display:block;overflow:hidden}.memory b{color:var(--ink);font-size:13.5px;display:block}.closed-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;align-items:flex-start;gap:10px;padding:16px;display:flex}.closed-head{align-items:center;gap:8px;width:100%;display:flex}.closed-head b{font:700 17px/1.2 var(--display);flex:1}.closed-card p{color:var(--ink-2);font-size:15px}.mood-tag{background:var(--surface-2);border-radius:999px;flex:none;padding:3px 10px;font-size:13px;font-weight:600}.welcome{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:calc(100dvh - 140px);padding:24px 8px;display:flex}.welcome h1{font:800 40px/1 var(--display);letter-spacing:-.03em;margin-top:18px}.welcome p{color:var(--ink-2);text-wrap:balance;max-width:300px;margin:10px 0 22px}.backdrop{z-index:40;background:#0f0d0973;justify-content:center;align-items:flex-end;animation:.18s fade;display:flex;position:fixed;inset:0}.backdrop.center{z-index:70;align-items:center;padding:24px}.sheet{background:var(--surface);border-radius:24px 24px 0 0;flex-direction:column;width:100%;max-width:520px;max-height:92dvh;animation:.24s cubic-bezier(.2,.8,.2,1) rise;display:flex}.sheet-head{align-items:center;gap:12px;padding:18px 16px 4px 20px;display:flex}.sheet-head h2{min-width:0;font:700 22px/1.2 var(--display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.sheet-head .icon-btn{background:var(--surface-2);box-shadow:none}.sheet-body{overscroll-behavior:contain;padding:4px 20px 20px;overflow-y:auto}.sheet-foot{padding:12px 20px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);gap:10px;display:flex}.sheet-foot .btn.block{margin-top:0}.dialog{background:var(--surface);border-radius:22px;width:100%;max-width:360px;padding:22px;animation:.18s pop}.dialog h2{font:700 20px/1.25 var(--display)}.dialog p{color:var(--ink-2);margin-top:8px;font-size:15px}.dialog-actions{gap:10px;margin-top:20px;display:flex}.dialog-actions .btn{flex:1}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(40px)}}@keyframes pop{0%{opacity:0;transform:scale(.94)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.plan-box{background:var(--bg);border-radius:14px;margin-top:12px;padding:12px 14px;font-size:15px}.plan-box p{white-space:pre-line;color:var(--ink-2)}.plan-time{font-variant-numeric:tabular-nums;margin-bottom:4px;font-weight:750;display:inline-block}.status-grid{gap:8px;margin-top:16px;display:grid}.status-grid.cols-2{grid-template-columns:1fr 1fr}.status-grid.cols-3{grid-template-columns:1fr 1fr 1fr}.status-btn{border:1.5px solid var(--line);color:var(--ink-2);border-radius:14px;flex-direction:column;align-items:center;gap:6px;padding:14px 6px;font-size:14px;font-weight:650;display:flex}.status-btn.s-done.on{background:var(--done-soft);border-color:var(--done);color:var(--done)}.status-btn.s-swapped.on{background:var(--swap-soft);border-color:var(--swap);color:var(--swap)}.status-btn.s-missed.on{background:var(--miss-soft);border-color:var(--miss);color:var(--miss)}.photo-actions{gap:10px;display:flex}.photo-box{align-items:center;gap:12px;display:flex}.photo-preview{background:var(--surface-2);border-radius:14px;flex:none;width:120px;height:150px;overflow:hidden}.photo-preview img{object-fit:cover;width:100%;height:100%;display:block}.photo-side,.open-list{flex-direction:column;gap:8px;display:flex}.open-list li{justify-content:space-between;align-items:center;gap:10px;font-size:15px;font-weight:600;display:flex}.open-list li>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.mood-row{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.mood-btn{border:1.5px solid var(--line);color:var(--ink-2);border-radius:14px;flex-direction:column;align-items:center;gap:2px;padding:10px 2px 8px;font-size:11.5px;font-weight:600;display:flex}.mood-btn span{font-size:26px;line-height:1.1}.mood-btn.on{border-color:var(--ink);background:var(--surface-2);color:var(--ink)}.emoji-grid{grid-template-columns:repeat(8,1fr);gap:6px;display:grid}.emoji-btn{aspect-ratio:1;background:var(--bg);text-align:center;border:1.5px solid #0000;border-radius:12px;font-size:20px}.emoji-btn.on{border-color:var(--ink);background:var(--surface-2)}.week-toggle{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.day-btn{aspect-ratio:1;border:1.5px solid var(--line);text-align:center;color:var(--ink-3);border-radius:50%;font-size:14px;font-weight:700}.day-btn.on{background:var(--ink);border-color:var(--ink);color:var(--bg)}.diet-thumb{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;flex:none;width:42px;height:52px;overflow:hidden}.diet-thumb img{object-fit:cover;object-position:top;width:100%;height:100%;display:block}.diet-viewer{z-index:60;background:var(--bg);flex-direction:column;animation:.18s fade;display:flex;position:fixed;inset:0}.diet-bar{padding:calc(10px + env(safe-area-inset-top)) 14px 10px 18px;border-bottom:1px solid var(--line);align-items:center;gap:10px;display:flex}.diet-bar b{font:700 18px/1.2 var(--display)}.diet-scroll{flex:1;padding:12px;overflow:auto}.diet-page{max-width:900px;box-shadow:var(--shadow);background:#fff;border-radius:10px;margin:0 auto 12px;overflow:auto}.diet-page img{cursor:zoom-in;width:100%;display:block}.diet-page.zoom img{cursor:zoom-out;width:230%}.seg-control{background:var(--surface-2);border-radius:14px;grid-template-columns:1fr 1fr;padding:4px;display:grid}.seg-control button{text-align:center;color:var(--ink-2);border-radius:10px;padding:9px;font-size:14.5px;font-weight:650}.seg-control button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.period{justify-content:space-between;align-items:center;margin-top:12px;display:flex}.period b{font:700 17px/1.2 var(--display)}.stat-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.stat-head h2{margin-bottom:2px}.big-pct{font:800 40px/1 var(--display);letter-spacing:-.03em;font-variant-numeric:tabular-nums}.stack{border-radius:6px;gap:2px;height:12px;display:flex;overflow:hidden}.seg{min-width:4px}.seg-done{background:var(--done)}.seg-swapped{background:var(--swap)}.seg-missed{background:var(--miss)}.seg-excused{background:var(--excused)}.seg-blank,.seg-empty{background:var(--blank)}.legend{color:var(--ink-2);flex-wrap:wrap;gap:4px 14px;margin-top:10px;font-size:13px;display:flex}.legend li{align-items:center;gap:6px;display:flex}.legend b{color:var(--ink);font-variant-numeric:tabular-nums}.dot{border-radius:3px;width:9px;height:9px}.insight{border-top:1px solid var(--line);color:var(--ink-2);margin-top:14px;padding-top:12px;font-size:14.5px}.cal{grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:10px;display:grid}.cal-head{text-align:center;color:var(--ink-3);font-size:11.5px;font-weight:700}.cal-cell{aspect-ratio:1;background:var(--surface-2);font-variant-numeric:tabular-nums;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;font-size:13px;font-weight:700;line-height:1.15;display:flex}.cal.week .cal-cell{aspect-ratio:auto;border-radius:12px;min-height:68px;padding:8px 0}.cal-cell small{opacity:.85;font-size:10.5px;font-weight:650}.cal-cell i{margin-top:1px;font-size:13px;font-style:normal}.cal-cell.today{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--accent)}.item-stats{flex-direction:column;gap:12px;display:flex}.item-stat-head{justify-content:space-between;gap:10px;margin-bottom:6px;font-size:14.5px;font-weight:600;display:flex}.item-stat-head b{font-variant-numeric:tabular-nums;color:var(--ink-2)}.item-stats .stack{height:8px}.reason-group+.reason-group{margin-top:16px}.reasons{flex-direction:column;gap:8px;display:flex}.reasons li{grid-template-columns:minmax(0,46%) 1fr 22px;align-items:center;gap:10px;font-size:14.5px;display:grid}.reasons li>span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.reasons b{text-align:right;font-variant-numeric:tabular-nums}.reason-bar{background:var(--surface-2);border-radius:4px;height:8px;overflow:hidden}.reason-bar i{background:var(--miss);border-radius:4px;height:100%;display:block}.events{flex-direction:column;display:flex}.event{border-top:1px solid var(--line);grid-template-columns:76px 1fr;gap:10px;padding:10px 0;font-size:14.5px;display:grid}.event:first-child{border-top:0;padding-top:0}.event:last-child{padding-bottom:0}.event-date{color:var(--ink-3);padding-top:1px;font-size:13px;font-weight:600}.event b{display:block}.event span em{font-style:normal;font-weight:650}.event.is-missed em{color:var(--miss)}.event.is-swapped em{color:var(--swap)}.event.is-excused em{color:var(--excused)}.event div span{color:var(--ink-2);font-size:13.5px}.event p{color:var(--ink-2);margin-top:2px}.photo-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.photo-cell{aspect-ratio:4/5;border-radius:12px;position:relative;overflow:hidden}.photo-cell span{color:#fff;background:linear-gradient(#0000,#0009);padding:16px 8px 6px;font-size:12px;font-weight:650;position:absolute;bottom:0;left:0;right:0}.compare-grid{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;display:grid}.compare-grid button{aspect-ratio:4/5;border-radius:12px;position:relative;overflow:hidden}.compare-grid span{color:#fff;background:linear-gradient(#0000,#000000a6);padding:18px 10px 8px;font-size:13px;font-weight:650;position:absolute;bottom:0;left:0;right:0}.lightbox{z-index:80;background:#0b0a09;flex-direction:column;animation:.18s fade;display:flex;position:fixed;inset:0}.lightbox-bar{padding:calc(10px + env(safe-area-inset-top)) 12px 10px;gap:8px;display:flex}.lightbox img{object-fit:contain;flex:1;width:100%;min-height:0}.lightbox-cap{padding:14px 20px calc(18px + env(safe-area-inset-bottom));color:#fff;text-align:center}.lightbox-cap b{font:700 18px/1.2 var(--display);display:block}.lightbox-cap span{opacity:.75;font-size:14px}.badge{--c1:#d39a63;--c2:#a8683a;color:#fff;background:radial-gradient(circle at 32% 26%, var(--c1), var(--c2) 78%);box-shadow:inset 0 0 0 3px #ffffff47, 0 3px 10px color-mix(in srgb, var(--c2) 40%, transparent);border-radius:50%;flex:none;place-items:center;display:grid;position:relative}.badge.tier-1{--c1:#c3cbd6;--c2:#7f8a98}.badge.tier-2{--c1:#f3cd55;--c2:#c8901a}.badge.tier-3{--c1:#56cc98;--c2:#1f8a5c}.badge.tier-4{--c1:#6aa8f2;--c2:#2c63bd}.badge.tier-5{--c1:#b08cff;--c2:#6d3fd4}.badge.tier-6{--c1:#f57f93;--c2:#c42f4d}.badge.tier-7{--c1:#5a5a66;--c2:#1c1c22}.badge.tier-8{background:conic-gradient(from 210deg,#f3cd55,#f57f93,#b08cff,#6aa8f2,#56cc98,#f3cd55)}.badge.locked{background:var(--surface-2);color:var(--ink-3);box-shadow:inset 0 0 0 2px var(--line)}.badge-level{background:var(--ink);min-width:24px;color:var(--bg);border:2px solid var(--surface);text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;padding:1px 6px;font-size:11px;font-weight:800;position:absolute;bottom:-4px;right:-4px}.badge-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.badge-grid li{text-align:center;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;align-items:center;gap:2px;min-width:0;padding:16px 8px 12px;display:flex}.badge-grid b{text-wrap:balance;margin-top:10px;font-size:13.5px;line-height:1.2}.badge-grid span{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:12px;overflow:hidden}.badge-grid small{color:var(--ink-3);margin-top:2px;font-size:11px}.next-list{flex-direction:column;gap:8px;display:flex}.next-row{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:14px;padding:12px 14px 12px 12px;display:flex}.next-row>div:nth-child(2){flex:1;min-width:0}.next-row b{font-size:15px;display:block}.next-row span{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;font-size:13px;display:block;overflow:hidden}.next-row .next-count{color:var(--ink);font-variant-numeric:tabular-nums;flex:none;font-size:14px;font-weight:750}.progress{background:var(--track);border-radius:3px;height:6px;margin-top:7px;overflow:hidden}.progress i{background:var(--accent);border-radius:3px;height:100%;display:block}.toasts{top:calc(10px + env(safe-area-inset-top));z-index:90;pointer-events:none;flex-direction:column;gap:8px;width:calc(100% - 24px);max-width:440px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast{pointer-events:auto;background:var(--ink);color:var(--bg);border-radius:16px;align-items:center;gap:14px;padding:12px 16px;animation:.28s cubic-bezier(.2,.8,.2,1) drop;display:flex;box-shadow:0 10px 30px #00000040}.toast span{flex-direction:column;min-width:0;display:flex}.toast b{font-size:15px}.toast em{opacity:.75;font-size:13px;font-style:normal}.toast small{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);font-size:11px;font-weight:700}.toast .badge-level{border-color:var(--ink);background:var(--bg);color:var(--ink)}@keyframes drop{0%{opacity:0;transform:translateY(-16px)}}.print-only{display:none}@media print{:root{--bg:#fff;--surface:#fff;--surface-2:#eee;--track:#e5e5e5;--ink:#111;--ink-2:#444;--ink-3:#777;--line:#ddd;--shadow:none}.tabbar,.toasts,.no-print{display:none!important}.print-only{display:block}.app{max-width:none}.screen{padding:0}.card{border:1px solid var(--line);break-inside:avoid}.photo-grid{grid-template-columns:repeat(6,1fr)}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
