:root{color-scheme:light dark;--space-0: 0;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--radius-xs: 8px;--radius-sm: 12px;--radius-md: 16px;--radius-lg: 22px;--radius-xl: 28px;--radius-2xl: 36px;--radius-pill: 999px;--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;--font-num: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .9375rem;--text-md: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.25rem;--text-hero: clamp(2.75rem, 12vw, 3.75rem);--weight-regular: 400;--weight-medium: 550;--weight-semibold: 650;--weight-bold: 760;--canvas: #eef3ef;--canvas-tint-a: rgba(52, 211, 153, .16);--canvas-tint-b: rgba(99, 102, 241, .1);--surface: #ffffff;--surface-2: #f7faf8;--surface-raised: rgba(255, 255, 255, .82);--surface-sunken: #eaf0ec;--border: rgba(16, 35, 28, .09);--border-strong: rgba(16, 35, 28, .16);--ink: #0f2119;--ink-2: #3d5148;--ink-3: #678074;--ink-inverse: #ffffff;--primary: #0e9f6e;--primary-strong: #0b7d57;--primary-soft: rgba(14, 159, 110, .12);--primary-glow: rgba(14, 159, 110, .28);--primary-grad: linear-gradient(135deg, #12b981 0%, #0e9f6e 55%, #0b8f7c 100%);--macro-protein: #6366f1;--macro-carbs: #f59e0b;--macro-fat: #ec4899;--macro-fiber: #06b6d4;--macro-protein-soft: rgba(99, 102, 241, .14);--macro-carbs-soft: rgba(245, 158, 11, .16);--macro-fat-soft: rgba(236, 72, 153, .14);--macro-fiber-soft: rgba(6, 182, 212, .14);--meal-breakfast: #f59e0b;--meal-lunch: #0e9f6e;--meal-dinner: #6366f1;--meal-snack: #ec4899;--over: #8b6f47;--over-soft: rgba(139, 111, 71, .14);--grid-line: rgba(16, 35, 28, .08);--axis-text: #678074;--shadow-xs: 0 1px 2px rgba(11, 40, 30, .05);--shadow-sm: 0 1px 2px rgba(11, 40, 30, .05), 0 2px 6px rgba(11, 40, 30, .045);--shadow-md: 0 1px 2px rgba(11, 40, 30, .05), 0 6px 16px rgba(11, 40, 30, .07);--shadow-lg: 0 2px 4px rgba(11, 40, 30, .05), 0 14px 34px rgba(11, 40, 30, .11);--shadow-glow: 0 8px 26px var(--primary-glow);--ease: cubic-bezier(.22, .8, .32, 1);--dur-fast: .14s;--dur: .24s;--dur-slow: .62s;--content-max: 1180px;--chart-max: 760px;--sidebar-w: 248px;--nav-h: 68px;--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px)}@media(prefers-color-scheme:dark){:root{--canvas: #0a100e;--canvas-tint-a: rgba(16, 185, 129, .14);--canvas-tint-b: rgba(99, 102, 241, .12);--surface: #141d1a;--surface-2: #18231f;--surface-raised: rgba(24, 35, 31, .78);--surface-sunken: #101815;--border: rgba(228, 243, 236, .09);--border-strong: rgba(228, 243, 236, .18);--ink: #e9f2ec;--ink-2: #adc2b8;--ink-3: #7d968b;--ink-inverse: #06100c;--primary: #2ad0a0;--primary-strong: #4ee0b4;--primary-soft: rgba(42, 208, 160, .16);--primary-glow: rgba(42, 208, 160, .3);--primary-grad: linear-gradient(135deg, #34e0ad 0%, #22c79a 55%, #12a7a0 100%);--macro-protein: #8b8dfb;--macro-carbs: #fbbf47;--macro-fat: #f97bb9;--macro-fiber: #38cfe6;--macro-protein-soft: rgba(139, 141, 251, .18);--macro-carbs-soft: rgba(251, 191, 71, .18);--macro-fat-soft: rgba(249, 123, 185, .18);--macro-fiber-soft: rgba(56, 207, 230, .18);--meal-breakfast: #fbbf47;--meal-lunch: #2ad0a0;--meal-dinner: #8b8dfb;--meal-snack: #f97bb9;--over: #d3b183;--over-soft: rgba(211, 177, 131, .16);--grid-line: rgba(228, 243, 236, .08);--axis-text: #7d968b;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .4);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 1px 2px rgba(0, 0, 0, .42), 0 8px 20px rgba(0, 0, 0, .38);--shadow-lg: 0 2px 6px rgba(0, 0, 0, .45), 0 18px 40px rgba(0, 0, 0, .5);--shadow-glow: 0 8px 30px rgba(42, 208, 160, .24)}}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%}body{min-height:100dvh;font-family:var(--font-sans);font-size:var(--text-base);line-height:1.55;color:var(--ink);background:var(--canvas);-webkit-font-smoothing:antialiased;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(60rem 40rem at 12% -10%,var(--canvas-tint-a),transparent 62%),radial-gradient(52rem 36rem at 92% 4%,var(--canvas-tint-b),transparent 60%)}h1,h2,h3,h4{line-height:1.2;font-weight:var(--weight-bold);letter-spacing:-.02em;text-wrap:balance}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}input,select,textarea{font-size:16px}a{color:var(--primary-strong);text-decoration:none}:focus-visible{outline:2.5px solid var(--primary);outline-offset:2px;border-radius:var(--radius-xs)}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;letter-spacing:-.01em}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.app{min-height:100dvh;display:flex;flex-direction:column}.app-main{flex:1;width:100%;max-width:var(--content-max);margin:0 auto;padding:calc(var(--space-4) + var(--safe-t)) var(--space-4) calc(var(--nav-h) + var(--safe-b) + var(--space-16))}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap}.page-title{font-size:var(--text-2xl)}.page-sub{color:var(--ink-3);font-size:var(--text-sm);margin-top:2px}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.stack-sm{display:flex;flex-direction:column;gap:var(--space-2)}.row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.spacer{flex:1}.sidebar{display:none}.brand{display:flex;align-items:center;gap:var(--space-3);font-weight:var(--weight-bold);font-size:var(--text-lg);letter-spacing:-.02em}.brand-mark{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--primary-grad);color:#fff;box-shadow:var(--shadow-glow);flex:none}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:40;display:grid;grid-template-columns:repeat(5,1fr);padding:var(--space-1) var(--space-1) calc(var(--space-1) + var(--safe-b));background:var(--surface-raised);backdrop-filter:blur(18px) saturate(150%);-webkit-backdrop-filter:blur(18px) saturate(150%);border-top:1px solid var(--border)}.nav-item{appearance:none;border:0;background:none;cursor:pointer;min-height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:var(--space-1);border-radius:var(--radius-sm);color:var(--ink-3);font-size:.6875rem;font-weight:var(--weight-medium);transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.nav-item[aria-current=page]{color:var(--primary-strong)}.nav-item:active{background:var(--primary-soft)}.nav-item svg{width:23px;height:23px}.card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-sm)}.card-glass{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 96%,var(--primary) 4%) 0%,var(--surface) 60%);box-shadow:var(--shadow-md)}.card-hero{border-radius:var(--radius-2xl);padding:var(--space-6);overflow:hidden;background:radial-gradient(24rem 16rem at 88% -20%,var(--primary-soft),transparent 70%),var(--surface);box-shadow:var(--shadow-md)}.card-title{font-size:var(--text-md);font-weight:var(--weight-semibold);letter-spacing:-.01em}.card-sub{color:var(--ink-3);font-size:var(--text-sm)}.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap}.grid{display:grid;gap:var(--space-4);grid-template-columns:1fr}.btn{appearance:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:46px;padding:0 var(--space-5);border-radius:var(--radius-pill);border:1px solid transparent;background:var(--surface-sunken);color:var(--ink);font-size:var(--text-base);font-weight:var(--weight-semibold);letter-spacing:-.01em;transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),opacity var(--dur-fast) var(--ease);text-align:center}.btn svg{width:19px;height:19px;flex:none}.btn:active:not(:disabled){transform:scale(.965)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary-grad);color:#fff;box-shadow:var(--shadow-glow)}.btn-ghost{background:transparent;border-color:var(--border-strong);color:var(--ink-2)}.btn-quiet{background:transparent;color:var(--ink-3);min-height:40px;padding:0 var(--space-3);font-weight:var(--weight-medium)}.btn-block{width:100%}.btn-lg{min-height:60px;font-size:var(--text-lg);border-radius:var(--radius-xl)}.btn-hero{min-height:116px;border-radius:var(--radius-xl);flex-direction:column;gap:var(--space-2);font-size:var(--text-lg);padding:var(--space-5)}.btn-hero svg{width:34px;height:34px}.btn-hero .btn-hint{font-size:var(--text-sm);font-weight:var(--weight-regular);opacity:.85}.icon-btn{appearance:none;cursor:pointer;display:inline-grid;place-items:center;width:44px;height:44px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--ink-2);transition:transform var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.icon-btn svg{width:19px;height:19px}.icon-btn:active{transform:scale(.92)}.chip{appearance:none;cursor:pointer;display:inline-flex;align-items:center;gap:var(--space-2);min-height:44px;padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--ink);font-size:var(--text-sm);font-weight:var(--weight-medium);box-shadow:var(--shadow-xs);transition:transform var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease);text-align:left}.chip:active{transform:scale(.96)}.chip[aria-pressed=true],.chip.is-active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-strong)}.chip-dot{width:9px;height:9px;border-radius:50%;flex:none;background:currentColor}.chip-count{font-size:var(--text-xs);color:var(--ink-3);font-variant-numeric:tabular-nums}.chip-scroll{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:var(--space-1);margin-inline:calc(var(--space-4) * -1);padding-inline:var(--space-4);scrollbar-width:none}.chip-scroll::-webkit-scrollbar{display:none}.chip-scroll>*{flex:none}.field{display:flex;flex-direction:column;gap:var(--space-2)}.label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--ink-2)}.input,.select,.textarea{width:100%;min-height:48px;padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.textarea{min-height:116px;resize:vertical;line-height:1.5}.select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 12px) 50%;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:var(--space-10)}.field-hint{font-size:var(--text-xs);color:var(--ink-3)}.field-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:var(--space-1);padding:var(--space-1);border-radius:var(--radius-pill);background:var(--surface-sunken);border:1px solid var(--border)}.segmented button{appearance:none;border:0;cursor:pointer;background:transparent;min-height:42px;border-radius:var(--radius-pill);color:var(--ink-3);font-size:var(--text-sm);font-weight:var(--weight-semibold);transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease);padding:0 var(--space-2)}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-xs)}.hero-figure{display:flex;flex-direction:column;align-items:center;gap:var(--space-1)}.hero-number{font-size:var(--text-hero);font-weight:var(--weight-bold);line-height:1;letter-spacing:-.045em;font-variant-numeric:tabular-nums}.hero-label{font-size:var(--text-sm);color:var(--ink-3);font-weight:var(--weight-medium);text-transform:uppercase;letter-spacing:.08em}.stat-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:var(--space-3)}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-xs)}.stat-value{font-size:var(--text-xl);font-weight:var(--weight-bold);font-variant-numeric:tabular-nums;letter-spacing:-.03em}.stat-label{font-size:var(--text-xs);color:var(--ink-3);font-weight:var(--weight-medium)}.macro-meters{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.meter-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2);margin-bottom:6px}.meter-name{font-size:var(--text-sm);font-weight:var(--weight-semibold);display:inline-flex;align-items:center;gap:6px}.meter-value{font-size:var(--text-sm);color:var(--ink-3);font-variant-numeric:tabular-nums}.meter-track{height:9px;border-radius:var(--radius-pill);background:var(--surface-sunken);overflow:hidden}.meter-fill{height:100%;border-radius:var(--radius-pill);transition:width var(--dur-slow) var(--ease)}.macro-strip{display:flex;height:7px;border-radius:var(--radius-pill);overflow:hidden;background:var(--surface-sunken)}.macro-strip span{transition:flex-grow var(--dur) var(--ease)}.macro-key{display:flex;flex-wrap:wrap;gap:var(--space-3);font-size:var(--text-xs);color:var(--ink-3)}.macro-key-item{display:inline-flex;align-items:center;gap:6px}.key-dot{width:9px;height:9px;border-radius:3px;flex:none}.meal-group{display:flex;flex-direction:column;gap:var(--space-3)}.meal-group-head{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-bold);letter-spacing:.02em;text-transform:uppercase;color:var(--ink-3)}.meal-group-head svg{width:17px;height:17px}.meal-card{width:100%;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-xs);display:flex;flex-direction:column;gap:var(--space-3);cursor:pointer;appearance:none;transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease);view-transition-name:none}.meal-card:active{transform:scale(.985)}@media(hover:hover){.meal-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong)}}.meal-card-name{font-size:var(--text-md);font-weight:var(--weight-semibold);letter-spacing:-.015em}.meal-card-meta{font-size:var(--text-xs);color:var(--ink-3);display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.meal-card-kcal{font-size:var(--text-lg);font-weight:var(--weight-bold);font-variant-numeric:tabular-nums;letter-spacing:-.03em;white-space:nowrap}.meal-items-list{font-size:var(--text-sm);color:var(--ink-2);display:flex;flex-direction:column;gap:2px}.meal-item-row{display:flex;justify-content:space-between;gap:var(--space-3)}.fab-wrap{position:fixed;right:max(var(--space-4),env(safe-area-inset-right,0px));bottom:calc(var(--nav-h) + var(--safe-b) + var(--space-4));z-index:45;display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-2)}.fab{appearance:none;border:0;cursor:pointer;width:60px;height:60px;border-radius:var(--radius-pill);background:var(--primary-grad);color:#fff;display:grid;place-items:center;box-shadow:var(--shadow-lg),var(--shadow-glow);transition:transform var(--dur) var(--ease)}.fab svg{width:27px;height:27px;transition:transform var(--dur) var(--ease)}.fab[aria-expanded=true] svg{transform:rotate(45deg)}.fab:active{transform:scale(.92)}.fab-action{display:inline-flex;align-items:center;gap:var(--space-2);min-height:46px;padding:0 var(--space-4);border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--ink);font-size:var(--text-sm);font-weight:var(--weight-semibold);box-shadow:var(--shadow-md);cursor:pointer;animation:pop-in var(--dur) var(--ease) backwards}.fab-action svg{width:18px;height:18px;color:var(--primary-strong)}.fab-scrim{position:fixed;inset:0;z-index:44;background:#06100c47;backdrop-filter:blur(2px);border:0;appearance:none;cursor:pointer}.sheet-scrim{position:fixed;inset:0;z-index:60;background:#06100c66;backdrop-filter:blur(3px);display:flex;align-items:flex-end;justify-content:center;animation:fade-in var(--dur) var(--ease)}.sheet{width:100%;max-width:520px;max-height:min(88dvh,760px);overflow-y:auto;background:var(--surface);border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;padding:var(--space-5) var(--space-5) calc(var(--space-6) + var(--safe-b));box-shadow:var(--shadow-lg);animation:slide-up var(--dur) var(--ease)}.sheet-grip{width:42px;height:4px;border-radius:var(--radius-pill);background:var(--border-strong);margin:0 auto var(--space-4)}.sheet-title{font-size:var(--text-lg);margin-bottom:var(--space-4)}.toast-layer{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-h) + var(--safe-b) + var(--space-4));z-index:70;display:flex;flex-direction:column;gap:var(--space-2);width:min(94vw,460px);pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);font-size:var(--text-sm);animation:slide-up var(--dur) var(--ease)}.toast svg{width:19px;height:19px;flex:none;color:var(--primary-strong)}.toast-text{flex:1;min-width:0}.toast-action{appearance:none;border:0;background:none;cursor:pointer;color:var(--primary-strong);font-weight:var(--weight-bold);font-size:var(--text-sm);padding:var(--space-2);min-height:40px}.notice{display:flex;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);background:var(--surface-2);border:1px solid var(--border);font-size:var(--text-sm);color:var(--ink-2);line-height:1.5}.notice svg{width:19px;height:19px;flex:none;margin-top:2px;color:var(--ink-3)}.notice-accent{background:var(--primary-soft);border-color:transparent;color:var(--ink-2)}.notice-accent svg{color:var(--primary-strong)}.notice-quiet{background:var(--over-soft);border-color:transparent}.notice-quiet svg{color:var(--over)}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-3);padding:var(--space-8) var(--space-4)}.empty-art{width:84px;height:84px;color:var(--primary);opacity:.9}.empty-title{font-size:var(--text-lg)}.empty-body{color:var(--ink-3);font-size:var(--text-sm);max-width:34ch}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(100deg,var(--surface-sunken) 30%,color-mix(in srgb,var(--surface-sunken) 60%,var(--surface) 40%) 50%,var(--surface-sunken) 70%);background-size:240% 100%;animation:shimmer 1.4s linear infinite}.chart-frame{width:100%;max-width:var(--chart-max);margin-inline:auto}.chart-svg{width:100%;height:auto;overflow:visible;display:block}.chart-grid-line{stroke:var(--grid-line);stroke-width:1}.chart-axis-text{fill:var(--axis-text);font-size:11px;font-family:var(--font-num);font-variant-numeric:tabular-nums}.chart-target-line{stroke:var(--ink-3);stroke-width:1.5;stroke-dasharray:5 4;opacity:.7}.chart-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);text-align:center;min-height:148px;padding:var(--space-5);border-radius:var(--radius-md);background:var(--surface-2);border:1px dashed var(--border-strong);color:var(--ink-3);font-size:var(--text-sm)}.chart-empty svg{width:30px;height:30px;opacity:.7}.ring-value{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-weight:760;fill:var(--ink);letter-spacing:-.03em}.ring-caption{font-family:var(--font-sans);fill:var(--ink-3);font-weight:550}.heatmap-wrap{max-width:460px;margin-inline:auto}.streak-badge{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);background:var(--macro-carbs-soft);color:var(--ink-2);font-size:var(--text-sm);font-weight:var(--weight-semibold)}.streak-badge svg{width:18px;height:18px;color:var(--macro-carbs)}.item-card{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-4);background:var(--surface-2);display:flex;flex-direction:column;gap:var(--space-3)}.item-card-head{display:flex;align-items:flex-start;gap:var(--space-2)}.confidence-pill{font-size:var(--text-xs);padding:2px var(--space-2);border-radius:var(--radius-pill);background:var(--surface-sunken);color:var(--ink-3);font-weight:var(--weight-medium);white-space:nowrap}.assumption-text{font-size:var(--text-xs);color:var(--ink-3);line-height:1.5}.estimated-by{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--ink-2);background:var(--primary-soft);padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill)}.estimated-by svg{width:14px;height:14px;color:var(--primary-strong)}.sticky-actions{position:sticky;bottom:calc(var(--nav-h) + var(--safe-b));z-index:20;display:flex;gap:var(--space-3);padding:var(--space-3) 0 var(--space-2);background:linear-gradient(to top,var(--canvas) 62%,transparent);margin-top:var(--space-2)}.sticky-actions .btn{flex:1}.login-screen{min-height:100dvh;display:grid;place-items:center;padding:var(--space-6) var(--space-4)}.login-card{width:100%;max-width:400px;display:flex;flex-direction:column;gap:var(--space-5);text-align:center}.login-mark{width:68px;height:68px;border-radius:var(--radius-lg);margin:0 auto;display:grid;place-items:center;background:var(--primary-grad);color:#fff;box-shadow:var(--shadow-glow)}.login-mark svg{width:34px;height:34px}.login-card .notice{text-align:left}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-40% 0}}@keyframes fade-in{0%{opacity:0}}@keyframes slide-up{0%{transform:translateY(18px);opacity:0}}@keyframes pop-in{0%{transform:scale(.85) translateY(8px);opacity:0}}@keyframes ring-sweep{0%{stroke-dashoffset:var(--ring-circumference)}}@keyframes rise{0%{transform:translateY(10px);opacity:0}}@keyframes celebrate{0%{transform:scale(1)}35%{transform:scale(1.06)}60%{transform:scale(.985)}to{transform:scale(1)}}.animate-rise{animation:rise var(--dur) var(--ease) backwards}.celebrating{animation:celebrate .9s var(--ease)}.ring-progress{transition:stroke-dashoffset var(--dur-slow) var(--ease)}@media(min-width:700px){.app-main{padding-left:var(--space-6);padding-right:var(--space-6)}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1120px){.app{flex-direction:row}.sidebar{display:flex;flex-direction:column;gap:var(--space-6);position:sticky;top:0;align-self:flex-start;height:100dvh;width:var(--sidebar-w);flex:none;padding:var(--space-6) var(--space-4);border-right:1px solid var(--border);background:var(--surface-raised);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.sidebar-nav{display:flex;flex-direction:column;gap:var(--space-1)}.sidebar .nav-item{flex-direction:row;justify-content:flex-start;gap:var(--space-3);min-height:48px;padding:0 var(--space-4);font-size:var(--text-base);font-weight:var(--weight-semibold)}.sidebar .nav-item[aria-current=page]{background:var(--primary-soft)}.bottom-nav{display:none}.app-main{padding:var(--space-8) var(--space-8) var(--space-12);max-width:calc(var(--content-max) - var(--sidebar-w));margin:0 auto}.fab-wrap,.toast-layer{bottom:var(--space-6)}.sticky-actions{bottom:var(--space-4)}.grid-lg-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sheet-scrim{align-items:center}.sheet{border-radius:var(--radius-xl);max-height:min(86dvh,780px);padding-bottom:var(--space-6)}.sheet-grip{display:none}.page-title{font-size:var(--text-3xl)}}@media(min-width:1360px){.grid-xl-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
