.travel-workspace{--accent: #3678e3;--surface: #ffffff;--surface-2: #f4f6f9;--border: #e3e8ef;--text: #303944;--text-strong: #19232e;--text-muted: #606c7b;--text-faint: #737e8d;background:var(--surface);color:var(--text);letter-spacing:0}:root[data-theme=dark] .travel-workspace{--surface: #202226;--surface-2: #292d32;--border: #3c424a;--text: #e1e5ea;--text-strong: #f6f7fa;--text-muted: #b4bdc8;--text-faint: #a2adba;--accent: #8bb8ff}@media(prefers-color-scheme:dark){:root:not([data-theme]) .travel-workspace{--surface: #202226;--surface-2: #292d32;--border: #3c424a;--text: #e1e5ea;--text-strong: #f6f7fa;--text-muted: #b4bdc8;--text-faint: #a2adba;--accent: #8bb8ff}}.travel-workspace h2,.travel-workspace h3,.travel-workspace h4{color:var(--text-strong);letter-spacing:0}.travel-workspace button,.travel-workspace select,.travel-workspace input{font:inherit}.travel-workspace button{cursor:pointer}.travel-workspace button:disabled{cursor:default;opacity:.4}.travel-workspace svg{flex:none}.travel-workspace .btn,.travel-add{display:inline-flex;align-items:center;justify-content:center;gap:7px}.travel-library-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.travel-library-head h2{font-size:16px;margin:0}.travel-library-head h2 span{color:var(--text-faint);font-size:13px;font-weight:400;margin-left:6px}.travel-create{border-block:1px solid var(--border);padding:20px 0;margin-bottom:20px}.travel-create h3{display:flex;align-items:center;gap:8px;font-size:16px;margin:0 0 20px}.travel-plan-list{display:flex;overflow-x:auto;gap:12px;list-style:none;padding:0 0 16px;margin:0}.travel-plan-list li{flex:0 0 auto;max-width:100%}.travel-plan-choice{display:grid;grid-template-columns:20px minmax(0,1fr);column-gap:10px;row-gap:4px;text-align:left;padding:12px 18px;min-width:210px;max-width:100%;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text)}.travel-plan-choice svg{grid-row:span 2;align-self:center;color:var(--text-faint)}.travel-plan-choice b{overflow-wrap:anywhere;font-size:14px}.travel-plan-choice span{font-size:12px;color:var(--text-muted)}.travel-plan-choice.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 5%,var(--surface))}.travel-plan-choice.active svg{color:var(--accent)}.travel-detail{border-top:1px solid var(--border);padding-top:20px}.travel-overview{display:flex;align-items:center;justify-content:space-between;gap:20px}.travel-overview-copy{min-width:0}.travel-eyebrow{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--accent);margin:0 0 9px}.travel-overview h2{font-size:28px;line-height:1.3;overflow-wrap:anywhere;margin:0 0 12px}.travel-meta{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:13px;color:var(--text-muted)}.travel-meta span{display:inline-flex;align-items:center;gap:6px}.travel-overview .plan-actions{flex:none}.travel-summary{margin-top:16px;color:var(--text-muted);font-size:13px}.travel-summary summary{cursor:pointer;width:fit-content}.travel-summary p{max-width:900px;line-height:1.9;margin:10px 0;white-space:pre-line}.travel-sections{display:flex;gap:28px;border-bottom:1px solid var(--border);margin:22px 0 16px}.travel-sections .plan-section{display:flex;align-items:center;gap:7px;padding:13px 0;border-radius:0;border-bottom:3px solid transparent;font-size:14px}.travel-sections .plan-section.active{color:var(--accent);border-bottom-color:var(--accent);box-shadow:none}.travel-revise{margin:12px 0 20px;font-size:13px}.travel-revise>summary{display:flex;align-items:center;gap:7px;width:fit-content;cursor:pointer;color:var(--accent)}.travel-revise .plan-revise{margin:12px 0 0;border:0;border-radius:0}.travel-schedule{display:grid;grid-template-columns:112px minmax(0,1fr);gap:28px}.travel-days{display:flex;flex-direction:column;gap:6px;align-self:start;position:sticky;top:0}.travel-days button{display:grid;grid-template-columns:1fr auto;gap:6px;text-align:left;padding:13px 10px;background:transparent;color:var(--text-muted);border:0;border-left:3px solid transparent;border-radius:0 5px 5px 0}.travel-days b{font-size:13px}.travel-days span{font-size:12px}.travel-days small{font-size:11px;grid-column:span 2;color:var(--text-faint)}.travel-days button.active{background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--accent);border-left-color:var(--accent)}.travel-day-detail{min-width:0}.travel-day-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin:0 0 18px}.travel-day-head h3{margin:0 0 6px;font-size:19px}.travel-day-head p{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0;font-size:12px;color:var(--text-muted)}.travel-add{border:0;background:transparent;color:var(--accent);padding:8px 0 8px 8px;font-size:13px!important;flex:none}.travel-route{display:flex;flex-wrap:wrap;gap:8px;padding:12px 0;margin-bottom:14px;border-block:1px solid var(--border);font-size:12px;color:var(--text-muted)}.travel-route span{display:inline-flex;align-items:center;gap:8px;overflow-wrap:anywhere}.travel-timeline{list-style:none;margin:0;padding:0}.travel-stop{--stop-color: #3f80de;display:grid;grid-template-columns:34px minmax(0,1fr);gap:16px;position:relative;padding:0 0 20px}.travel-stop-food{--stop-color: #bb713b}.travel-stop-hotel{--stop-color: #8960b8}.travel-stop-attraction{--stop-color: #2c9580}.travel-stop-other{--stop-color: #758394}.travel-stop:not(:last-child):before{content:"";position:absolute;width:1px;top:34px;bottom:0;left:16px;background:var(--border)}.travel-stop-marker{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:color-mix(in srgb,var(--stop-color) 12%,var(--surface));color:var(--stop-color)}.travel-stop-content{min-width:0;border-bottom:1px solid var(--border);padding:3px 0 14px}.travel-stop-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--text-muted)}.travel-stop-meta>span:first-child{color:var(--stop-color)}.travel-stop-meta time{display:inline-flex;align-items:center;gap:5px;font-variant-numeric:tabular-nums}.travel-stop-cost{margin-left:auto}.travel-stop h4{font-size:16px;line-height:1.55;margin:8px 0;overflow-wrap:anywhere}.travel-stop-description{font-size:13px;line-height:1.85;color:var(--text-muted);margin:0;white-space:pre-line;overflow-wrap:anywhere}.travel-stop-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.travel-move-day{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text-faint)}.travel-move-day select{max-width:90px;border:none;background:var(--surface);color:var(--text-muted);font-size:11px;padding:5px 0}.travel-stop-tools{display:flex;gap:4px}.travel-stop-tools button{display:grid;place-items:center;width:30px;height:30px;padding:0;background:transparent;color:var(--text-muted);border:none;border-radius:4px}.travel-stop-tools button:hover:not(:disabled){color:var(--accent);background:var(--surface-2)}.travel-item-editor{padding:16px;background:var(--surface-2);border-radius:6px}.travel-item-editor .row{flex-wrap:wrap}.travel-item-editor .field{min-width:0;flex:1 1 180px}.travel-tips{margin-top:16px;padding:18px 0;border-top:1px solid var(--border)}.travel-tips summary{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}.travel-tips summary svg{color:#bc8a29}.travel-tips summary span{color:var(--text-faint);font-size:12px}.travel-tips ul{font-size:13px;line-height:1.9;color:var(--text-muted)}.travel-day-empty{text-align:center;color:var(--text-faint);padding:50px 0;font-size:14px}@media(max-width:640px){.travel-workspace{padding:18px 16px}.travel-overview{align-items:flex-start;flex-direction:column;gap:14px}.travel-overview h2{font-size:24px}.travel-meta{gap:8px}.travel-sections{gap:24px}.travel-sections .plan-section{font-size:13px;gap:5px}.travel-schedule{grid-template-columns:minmax(0,1fr);gap:22px}.travel-days{flex-direction:row;position:static;overflow-x:auto;padding-bottom:4px}.travel-days button{flex:0 0 80px;grid-template-columns:1fr;border-left:0;border-bottom:3px solid transparent;border-radius:5px 5px 0 0}.travel-days b{white-space:nowrap}.travel-days small{display:none}.travel-days button.active{border-bottom-color:var(--accent)}.travel-day-head h3{font-size:17px}.travel-stop{grid-template-columns:30px minmax(0,1fr);gap:10px}.travel-stop-marker{width:30px;height:30px}.travel-stop:not(:last-child):before{left:14px;top:30px}.travel-stop h4{font-size:15px}.travel-stop-meta{column-gap:8px;row-gap:4px}.travel-stop-cost{margin-left:0}.travel-stop-tools button{width:32px;height:32px}.travel-item-editor{padding:12px}.travel-create .row{flex-wrap:wrap}.travel-create .field{min-width:0;flex:1 1 140px}}:root{color-scheme:dark;--bg: #16120f;--surface: #1e1916;--surface-2: #29221d;--surface-3: #352c26;--border: #4a3f37;--text: #e8e0d8;--text-strong: #fbf7f2;--text-muted: #b3a89d;--text-faint: #8a7d72;--accent: #e0a56a;--accent-ink: #16120f;--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--series-4: #c98500;--series-5: #d55181;--series-6: #008300;--diverge-pos: #199e70;--diverge-neg: #d95926;--grid: #2f2822;--status-good: #199e70;--status-warn: #c98500;--status-bad: #e66767;--shadow-card: 0 1px 2px rgb(0 0 0 / 35%), 0 2px 8px rgb(0 0 0 / 18%);--shadow-lift: 0 3px 12px rgb(0 0 0 / 30%), 0 1px 3px rgb(0 0 0 / 25%);--shadow-pop: 0 6px 20px rgb(0 0 0 / 45%);--hero-text-shadow: 0 1px 14px rgb(0 0 0 / 55%);--art-filter: brightness(.7) contrast(1.02) saturate(.95)}:root[data-theme=light]{color-scheme:light;--bg: #faf6f0;--surface: #fffdf9;--surface-2: #f3ece2;--surface-3: #e9e0d3;--border: #ddd2c3;--text: #2f2823;--text-strong: #1a1512;--text-muted: #6b6058;--text-faint: #93877c;--accent: #b5651d;--accent-ink: #fffdf9;--series-1: #2a78d6;--series-2: #eb6834;--series-3: #1baf7a;--series-4: #eda100;--series-5: #e87ba4;--series-6: #008300;--diverge-pos: #1baf7a;--diverge-neg: #eb6834;--grid: #e6dccd;--status-good: #157f5b;--status-warn: #a06c00;--status-bad: #c0392b;--shadow-card: 0 1px 2px rgb(90 70 50 / 10%), 0 3px 10px rgb(90 70 50 / 7%);--shadow-lift: 0 4px 14px rgb(90 70 50 / 12%), 0 1px 3px rgb(90 70 50 / 8%);--shadow-pop: 0 6px 20px rgb(90 70 50 / 18%);--hero-text-shadow: 0 1px 14px rgb(255 255 255 / 70%);--art-filter: brightness(1)}@media(prefers-color-scheme:light){:root:not([data-theme]){color-scheme:light;--bg: #faf6f0;--surface: #fffdf9;--surface-2: #f3ece2;--surface-3: #e9e0d3;--border: #ddd2c3;--text: #2f2823;--text-strong: #1a1512;--text-muted: #6b6058;--text-faint: #93877c;--accent: #b5651d;--accent-ink: #fffdf9;--series-1: #2a78d6;--series-2: #eb6834;--series-3: #1baf7a;--series-4: #eda100;--series-5: #e87ba4;--series-6: #008300;--diverge-pos: #1baf7a;--diverge-neg: #eb6834;--grid: #e6dccd;--status-good: #157f5b;--status-warn: #a06c00;--status-bad: #c0392b;--shadow-card: 0 1px 2px rgb(90 70 50 / 10%), 0 3px 10px rgb(90 70 50 / 7%);--shadow-lift: 0 4px 14px rgb(90 70 50 / 12%), 0 1px 3px rgb(90 70 50 / 8%);--shadow-pop: 0 6px 20px rgb(90 70 50 / 18%);--hero-text-shadow: 0 1px 14px rgb(255 255 255 / 70%);--art-filter: brightness(1)}}:root{--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--radius-full: 999px;--text-xs: 12px;--text-sm: 13px;--text-md: 14px;--text-lg: 17px;--text-xl: 21px;--text-2xl: 26px;--text-hero: 42px;--font-sans: -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Helvetica Neue", sans-serif;--font-mono: "SF Mono", ui-monospace, "JetBrains Mono", monospace;--duration-fast: 90ms;--duration: .18s;--duration-slow: .32s;--ease-out: cubic-bezier(.16, .84, .24, 1);--ease-spring: cubic-bezier(.34, 1.45, .44, 1);--ring: 0 0 0 3px color-mix(in srgb, var(--accent) 28%, transparent)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--text-md);-webkit-font-smoothing:antialiased;transition:background var(--duration) ease,color var(--duration) ease}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.estimated{color:var(--text-faint)}a{color:var(--accent)}button{font-family:inherit}.app{display:grid;grid-template-rows:auto 1fr;height:100%;min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-6);border-bottom:1px solid var(--border);min-width:0}.brand{font-size:var(--text-lg);font-weight:600;letter-spacing:.02em}.page{width:100%;overflow:hidden;min-width:0}.page-col{display:flex;flex-direction:column;height:100%;overflow:visible;max-width:1180px;margin:0 auto;min-width:0}.page-col-wide{max-width:none}.page-body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:var(--space-6)}.page-col>.empty,.page-col>.errorbox{flex:none;margin:var(--space-6)}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:radial-gradient(120% 90% at 12% 0%,color-mix(in srgb,var(--accent) 7%,transparent),transparent 60%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E")}.page-in>*{animation:rise .42s cubic-bezier(.2,.7,.3,1) both}.page-in>*:nth-child(1){animation-delay:0ms}.page-in>*:nth-child(2){animation-delay:40ms}.page-in>*:nth-child(3){animation-delay:80ms}.page-in>*:nth-child(4){animation-delay:.12s}.page-in>*:nth-child(n+5){animation-delay:.16s}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}@media(prefers-reduced-motion:reduce){.page-in>*{animation:none}}.duo{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:var(--space-5);align-items:start}.duo>*{min-width:0}.duo-even{align-items:stretch}@media(max-width:900px){.duo{grid-template-columns:1fr}}.duo-col{display:grid;gap:var(--space-5);align-content:start}.grid{display:grid;gap:var(--space-4)}.grid-kpi{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.overview{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr) minmax(0,1fr);gap:var(--space-4)}@media(max-width:900px){.overview{grid-template-columns:1fr}}.overview>.card:first-child{display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden;background:linear-gradient(160deg,color-mix(in srgb,var(--accent) 6%,var(--surface)),var(--surface) 55%)}.overview>.card:first-child:before{content:"";position:absolute;inset:0 0 auto;height:2px;background:linear-gradient(90deg,var(--accent),transparent 70%)}.ledger{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:0 var(--space-6)}.ledger>table+table{border-left:1px solid var(--surface-2);padding-left:var(--space-6);margin-left:calc(var(--space-6) * -1)}@media(max-width:760px){.ledger>table+table{border-left:none;padding-left:0;margin-left:0}}.seg{display:flex;gap:var(--space-1);padding:3px;border-radius:var(--radius-md);background:var(--surface-2)}.seg .btn{border-color:transparent;background:transparent;box-shadow:none}.seg .btn-primary{background:var(--surface);color:var(--text-strong);border-color:var(--border);box-shadow:var(--shadow-card)}.grid-2{grid-template-columns:1fr 1fr}.stack{display:grid;gap:var(--space-4)}.row{display:flex;align-items:flex-end;flex-wrap:wrap;gap:var(--space-3)}.row>.field{flex:1 1 180px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}@media(max-width:900px){.grid-2{grid-template-columns:1fr}}.page-hero{position:relative;display:flex;flex:none;align-items:center;gap:var(--space-5);grid-column:1 / -1;width:100vw;margin:0 calc((100% - 100vw)/2);padding:var(--space-6) max(var(--space-6),calc((100vw - 1180px) / 2 + var(--space-6)));min-height:clamp(190px,24vw,400px);isolation:isolate;overflow:hidden;--hero-fade: var(--bg)}.page-hero-bare{min-height:0;padding-top:var(--space-5);padding-bottom:var(--space-3)}.page-hero-art{position:absolute;z-index:-1;inset:0;width:100%;height:100%;object-fit:cover;object-position:center center;filter:var(--art-filter);mask-image:linear-gradient(to bottom,#000 0%,#000 46%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 46%,transparent 100%)}.page-hero-veil{position:absolute;z-index:-1;inset:0;background:linear-gradient(to right,color-mix(in srgb,var(--hero-fade) 45%,transparent) 0%,transparent 60%)}.page-hero-inner{display:grid;gap:var(--space-4);justify-items:start;max-width:min(52%,620px);min-width:0}.page-hero-head{display:flex;align-items:center;gap:var(--space-3);min-width:0}.page-hero-lead{flex:none;line-height:0}.page-hero-copy{position:relative;display:grid;gap:var(--space-2);min-width:0;text-shadow:var(--hero-text-shadow)}.page-hero-copy:before{position:absolute;z-index:-1;inset:-50% -12% -50% -100vw;background:linear-gradient(to right,var(--hero-fade) 0%,color-mix(in srgb,var(--hero-fade) 82%,transparent) 55%,transparent 100%);content:""}.page-hero-kicker{margin:0;color:var(--text);font-size:var(--text-xs)}.page-hero-title{margin:0;color:var(--text-strong);font-size:var(--text-2xl);font-weight:600;line-height:1.2}.page-hero-stats{display:flex;gap:var(--space-5);margin:var(--space-2) 0 0}.page-hero-stats div{display:grid;gap:var(--space-1)}.page-hero-stats dt{color:var(--text-muted);font-size:var(--text-xs)}.page-hero-stats dd{margin:0;color:var(--text-strong);font-size:var(--text-lg)}.page-hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.page-hero-strip{min-height:0;padding-top:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid var(--border)}.page-hero-strip .page-hero-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-4);width:100%;max-width:none;padding-right:40px}.page-hero-strip .page-hero-head{flex:1;min-width:0}.page-hero-strip .page-hero-copy{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2) var(--space-4);min-width:0}.page-hero-strip .page-hero-title{font-size:var(--text-lg)}.page-hero-strip .page-hero-stats{margin:0;gap:var(--space-4)}.page-hero-strip .page-hero-stats div{display:flex;align-items:baseline;gap:var(--space-2)}.page-hero-strip .page-hero-stats dd{font-size:var(--text-md)}.page-hero-strip .page-hero-art{opacity:.22;object-position:center 42%;mask-image:linear-gradient(to right,transparent 0%,#000 45%);-webkit-mask-image:linear-gradient(to right,transparent 0%,#000 45%)}.page-hero-strip .page-hero-veil{background:linear-gradient(to right,color-mix(in srgb,var(--hero-fade) 70%,transparent) 0%,transparent 75%)}.page-hero-toggle{position:absolute;inset-inline-end:max(var(--space-6),calc((100vw - 1180px) / 2 + var(--space-6)));display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--border);border-radius:var(--radius-full);background:color-mix(in srgb,var(--surface) 82%,transparent);color:var(--text-muted);font-size:10px;line-height:1;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background var(--duration) ease,color var(--duration) ease}.page-hero-toggle:hover{background:var(--surface);color:var(--text-strong)}.page-hero-banner .page-hero-toggle{bottom:var(--space-4)}.page-hero-strip .page-hero-toggle{top:50%;transform:translateY(-50%)}.page-col:has(>.page-hero-rail){display:grid;grid-template-columns:300px minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;max-width:none}.page-hero-rail{grid-column:1;grid-row:1 / -1}.page-col:has(>.page-hero-rail)>*:not(.page-hero-rail){grid-column:2}.page-col:has(>.page-hero-rail) .page-body{max-width:1180px;margin:0 auto;width:100%}.page-hero-rail{flex:none;flex-direction:column;align-items:stretch;justify-content:flex-start;width:300px;min-height:0;height:100%;margin:0;padding:0 0 var(--space-5);gap:var(--space-4);border-right:1px solid var(--border);border-bottom:none;overflow-y:auto;scrollbar-width:thin}.page-hero-rail .page-hero-art{position:static;z-index:auto;flex:none;width:100%;height:clamp(300px,58vh,620px);object-fit:cover;object-position:center bottom;opacity:1;mask-image:linear-gradient(to bottom,#000 0%,#000 72%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 72%,transparent 100%)}.page-hero-rail .page-hero-veil{display:none}.page-hero-rail .page-hero-inner{max-width:none;padding:0 var(--space-4);margin-top:calc(-1 * var(--space-5))}.page-hero-rail .page-hero-stats{flex-direction:column;gap:var(--space-2)}.page-hero-rail .page-hero-stats div{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2)}.hero-status{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--text-muted);font-size:var(--text-sm)}.hero-status:before{width:7px;height:7px;border-radius:50%;background:var(--status-good);content:""}.hero-status.off:before{background:var(--text-faint)}.illustrated-empty{display:grid;grid-template-columns:132px minmax(200px,1fr);align-items:center;justify-content:center;max-width:620px;margin:0 auto}.illustrated-empty>img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-sm)}@media(max-width:640px){.app{grid-template-rows:minmax(0,1fr) auto;height:100dvh}.page{grid-row:1;padding-top:env(safe-area-inset-top)}.topbar{grid-row:2;padding:var(--space-1) var(--space-2) calc(var(--space-1) + env(safe-area-inset-bottom));overflow:hidden;border-top:1px solid var(--border);border-bottom:none;background:var(--surface)}.topbar-left{flex:1;gap:0;overflow:hidden}.topbar-user,.brand{display:none}.tabs{flex:1;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;overscroll-behavior-x:contain}.tabs::-webkit-scrollbar{display:none}.tab-sep{display:none}.tab{flex:0 0 56px;flex-direction:column;justify-content:center;gap:2px;padding:var(--space-1) var(--space-2);font-size:var(--text-xs);white-space:nowrap}.tab svg{width:18px;height:18px}.topbar-right{flex:none;gap:0}.tab-icon{width:44px;min-width:44px}.page-body{padding:var(--space-3)}.page-hero{padding:var(--space-4) var(--space-3)}.page-hero:not(.page-hero-strip){min-height:220px}.page-hero-strip{padding-top:var(--space-2);padding-bottom:var(--space-2)}.page-hero-toggle{inset-inline-end:var(--space-3)}.page-hero-bare{min-height:0}.page-hero-title{font-size:var(--text-xl)}.page-hero:not(.page-hero-strip) .page-hero-stats{flex-direction:column;gap:var(--space-1)}.page-hero-stats div{display:flex;align-items:baseline;gap:var(--space-2)}.page-hero-stats dd{font-size:var(--text-md)}.illustrated-empty{grid-template-columns:1fr}.illustrated-empty>img{width:min(220px,65vw);margin:0 auto}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-card)}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--surface-2)}.card-title{margin:0;font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em;color:var(--text-strong)}.card-subtitle{margin:var(--space-1) 0 0;font-size:var(--text-sm);color:var(--text-faint);line-height:1.6}.stat-label{font-size:var(--text-xs);color:var(--text-faint)}.stat-value{margin-top:var(--space-2);font-size:var(--text-xl);color:var(--text-strong);letter-spacing:-.02em}.stat-value.hero{font-size:var(--text-hero);line-height:1.05;letter-spacing:-.03em}.stat-delta{display:inline-flex;align-items:center;align-self:flex-start;width:fit-content;margin-top:var(--space-3);padding:2px 8px;border-radius:var(--radius-full);background:var(--surface-2);font-size:var(--text-sm)}.delta-up{color:var(--status-good)}.delta-down{color:var(--status-bad)}.delta-flat{color:var(--text-faint)}.stat-note{margin-top:var(--space-2);font-size:var(--text-xs);color:var(--text-faint);line-height:1.5}.legend{display:flex;flex-wrap:wrap;gap:var(--space-4);list-style:none;margin:var(--space-3) 0 0;padding:0;font-size:var(--text-sm);color:var(--text-muted)}.legend li{display:flex;align-items:center;gap:var(--space-2)}.legend-swatch{display:inline-block;vertical-align:middle;width:10px;height:10px;border-radius:2px;flex:none}.tooltip{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3);font-size:var(--text-sm);box-shadow:0 6px 20px #00000073}.tooltip-date{color:var(--text-muted);margin-bottom:var(--space-2)}.tooltip-row{display:flex;align-items:center;gap:var(--space-2);justify-content:space-between;margin-top:var(--space-1)}.tooltip-name{display:flex;align-items:center;gap:var(--space-2);color:var(--text-muted)}.tooltip-value{color:var(--text)}.tooltip-note{margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--border);color:var(--text-faint);font-size:var(--text-xs)}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th{text-align:left;font-weight:500;font-size:var(--text-xs);color:var(--text-faint);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--surface-2);color:var(--text)}.table tr:last-child td{border-bottom:none}.table tbody tr{transition:background var(--duration) ease}.table tbody tr:hover{background:color-mix(in srgb,var(--surface-2) 55%,transparent)}.table .right{text-align:right}.table .nowrap{white-space:nowrap}.cell-edit{padding:2px 6px;margin:-2px -6px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:inherit;font:inherit;cursor:pointer;transition:border-color var(--duration) ease,background var(--duration) ease}.table tr:hover .cell-edit{border-color:var(--border);background:var(--surface-2)}.cell-edit:hover{border-color:var(--accent);background:var(--surface-2)}.cell-editing{display:inline-flex;align-items:center;gap:var(--space-2);justify-content:flex-end}.cell-editing .input{width:9em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);flex:none;white-space:nowrap;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--duration) ease,background var(--duration) ease,scale var(--duration-fast) var(--ease-out)}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--bg);font-weight:600}.btn-danger:hover:not(:disabled){border-color:var(--status-bad);color:var(--status-bad)}.field{display:block;margin-bottom:var(--space-4)}.field-label{display:block;font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--space-2)}.field-hint{display:block;font-size:var(--text-xs);color:var(--text-faint);margin-top:var(--space-1)}.input{width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:var(--text-md);font-family:inherit;outline:none;transition:border-color var(--duration) ease}.input:focus{border-color:var(--accent)}.input--auto{width:auto}.progress-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--space-2);font-size:var(--text-sm);color:var(--text-muted)}.progress-track{height:6px;border-radius:var(--radius-full);background:var(--surface-2);overflow:hidden}.progress-fill{height:100%;border-radius:var(--radius-full);background:var(--accent);transition:width .4s ease-out}@media(prefers-reduced-motion:reduce){.progress-fill{transition:none}}.empty{padding:var(--space-7) var(--space-4);text-align:center}.empty-title{margin:0;color:var(--text-muted)}.empty-hint{margin:var(--space-2) 0 0;color:var(--text-faint);font-size:var(--text-sm);line-height:1.7}.empty-action{margin-top:var(--space-4)}.errorbox{max-width:60ch;padding:var(--space-4);border:1px solid var(--status-bad);border-radius:var(--radius-md);color:var(--text);font-size:var(--text-sm)}.errorbox p{margin:0 0 var(--space-3)}.login{display:grid;place-items:center;height:100%}.login-box{width:340px}.login-title{font-size:var(--text-xl);margin:0 0 var(--space-2)}.login-sub{color:var(--text-faint);font-size:var(--text-sm);margin:0 0 var(--space-5);line-height:1.7}.catbar{display:flex;height:28px;border-radius:var(--radius-sm);overflow:hidden;gap:2px;background:var(--surface)}.catbar-seg{min-width:6px;transition:filter var(--duration) ease}.catbar-seg:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.catbar-seg:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.catbar-seg:hover{filter:brightness(1.15)}.pnl-row{display:grid;grid-template-columns:1fr 120px 1fr auto;align-items:center;gap:var(--space-3);padding:var(--space-2) 0}.pnl-name{display:flex;align-items:baseline;gap:var(--space-2);min-width:0;font-size:var(--text-sm);color:var(--text)}.pnl-name-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pnl-code{flex:none;font-size:var(--text-xs);color:var(--text-faint)}.pnl-track{position:relative;height:100%;min-height:20px}.pnl-axis{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--border)}.pnl-bar{position:absolute;top:50%;transform:translateY(-50%);height:14px}.pnl-bar.pos{left:50%;border-radius:0 4px 4px 0}.pnl-bar.neg{right:50%;border-radius:4px 0 0 4px}.pnl-value{font-size:var(--text-sm);text-align:right;white-space:nowrap}.pnl-head{font-size:var(--text-xs);color:var(--text-faint);border-bottom:1px solid var(--border);padding-bottom:var(--space-2);margin-bottom:var(--space-2)}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-3)}.photo{position:relative;margin:0;border-radius:var(--radius-md);overflow:hidden;background:var(--surface-2);border:1px solid var(--border)}.photo img{display:block;width:100%;aspect-ratio:4 / 3;object-fit:cover}.photo-delete{position:absolute;top:var(--space-2);right:var(--space-2);display:grid;place-items:center;width:24px;height:24px;padding:0;border:none;border-radius:50%;background:#00000073;color:#fff;font-size:var(--text-md);line-height:1;cursor:pointer;opacity:0;transition:opacity var(--duration) ease,background var(--duration) ease}.photo:hover .photo-delete,.photo-delete:focus-visible{opacity:1}.photo-delete:hover{background:var(--status-bad)}@media(hover:none){.photo-delete{opacity:1}}.photo-missing{display:grid;place-items:center;aspect-ratio:4 / 3;background:repeating-linear-gradient(45deg,var(--surface-2),var(--surface-2) 8px,var(--border) 8px,var(--border) 16px);color:var(--text-faint);font-size:var(--text-xs)}.photo figcaption{position:absolute;inset:auto 0 0;padding:var(--space-5) var(--space-3) var(--space-2);background:linear-gradient(transparent,#0000009e);color:#fff;font-size:var(--text-xs);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-del{background:none;border:none;color:var(--text-faint);font-size:var(--text-xs);cursor:pointer;padding:0;flex:none}.photo-del:hover{color:var(--status-bad)}.wall{list-style:none;margin:0;padding:0}.wall li{padding:var(--space-3) 0;border-bottom:1px solid var(--surface-2)}.wall li:last-child{border-bottom:none}.wall-content{margin:0;line-height:1.7;white-space:pre-wrap;word-break:break-word}.wall-meta{display:flex;justify-content:space-between;margin-top:var(--space-2);font-size:var(--text-xs);color:var(--text-faint)}.anniv{list-style:none;margin:0;padding:0}.anniv li{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--surface-2)}.anniv-plain li{grid-template-columns:1fr auto}.anniv li:last-child{border-bottom:none}.anniv .photo-del{opacity:0;transition:opacity var(--duration) ease,color var(--duration) ease}.anniv li:hover .photo-del,.anniv .photo-del:focus-visible{opacity:1}@media(hover:none){.anniv .photo-del{opacity:1}}.anniv li.past{color:var(--text-faint)}.anniv-title{color:inherit}.anniv-date{font-size:var(--text-xs);color:var(--text-faint);margin-top:var(--space-1)}.anniv-days{font-size:var(--text-sm)}.tabs{display:flex;gap:var(--space-1)}.tab{background:none;border:none;border-radius:var(--radius-sm);color:var(--text-faint);padding:var(--space-2) var(--space-3);font-size:var(--text-md);cursor:pointer;transition:color var(--duration) ease,background var(--duration) ease,scale var(--duration-fast) var(--ease-out)}.tab:hover{color:var(--text)}.tab.active{color:var(--text-strong);background:var(--surface-2)}.tab.off{opacity:.45}.tab.off:after{content:"·";margin-left:var(--space-1);color:var(--status-warn)}.ai-off{display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.theme-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-3)}.theme-option{display:grid;gap:var(--space-1);text-align:left;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);cursor:pointer;transition:border-color var(--duration) ease}.theme-option:hover{border-color:var(--accent)}.theme-option.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.theme-swatch{width:100%;height:28px;border-radius:var(--radius-sm);border:1px solid var(--border)}.theme-swatch-dark{background:linear-gradient(120deg,#16120f,#1e1916 55%,#e0a56a 55% 100%)}.theme-swatch-light{background:linear-gradient(120deg,#faf6f0,#fffdf9 55%,#b5651d 55% 100%)}.theme-swatch-system{background:linear-gradient(120deg,#16120f 0% 50%,#faf6f0 50% 100%)}.theme-title{color:var(--text);font-size:var(--text-md)}.theme-hint{color:var(--text-faint);font-size:var(--text-xs);line-height:1.5}.palette{display:flex;gap:2px;margin-top:var(--space-2)}.palette-chip{width:44px;height:24px;border-radius:var(--radius-sm)}.setting-group+.setting-group,.theme-picker+.setting-group{margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--border)}.setting-label{margin:0 0 var(--space-3);color:var(--text-muted);font-size:var(--text-sm);font-weight:600}.hero-swatch{background:var(--surface)}.hero-swatch-banner{background:linear-gradient(to bottom,var(--accent) 0 62%,var(--surface) 62% 100%)}.hero-swatch-strip{background:linear-gradient(to bottom,var(--accent) 0 26%,var(--surface) 26% 100%)}.hero-swatch-rail{background:linear-gradient(to right,var(--accent) 0 30%,var(--surface) 30% 100%)}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.setting-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}.settings-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:0 var(--space-1);font-size:var(--text-sm);color:var(--text-faint)}.settings-foot .progress{flex:1}code{background:var(--surface-2);padding:1px 5px;border-radius:4px;font-family:var(--font-mono);font-size:.92em}.home-today-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.home-today-dow{margin-left:var(--space-2);color:var(--text-faint);font-size:var(--text-sm);font-weight:400}.home-today-more{border:0;background:none;color:var(--text-faint);font-size:var(--text-sm);cursor:pointer}.home-today-more:hover{color:var(--accent)}.home-today .cal-day-item{cursor:default}.home-ask-row{display:flex;gap:var(--space-3)}.home-ask-input{flex:1;min-width:0}.home-ask-chips{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.home-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.home-strip-item{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label value" "note  note";align-items:center;gap:0 var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);font:inherit;color:inherit;text-align:left;cursor:pointer;transition:border-color var(--duration) ease}.home-strip-item:hover{border-color:var(--accent)}.home-strip-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.home-strip-label{grid-area:label;color:var(--text-muted);font-size:var(--text-sm)}.home-strip-value{grid-area:value;color:var(--text-strong)}.home-strip-note{grid-area:note;overflow:hidden;color:var(--text-faint);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap}.home-refreshing{text-align:center}@media(max-width:640px){.home-strip{grid-template-columns:minmax(0,1fr)}}.cal-toolbar{display:flex;align-items:center;gap:var(--space-4)}.cal-views{display:flex;padding:2px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2)}.cal-view{padding:var(--space-1) var(--space-4);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;transition:background var(--duration) ease,color var(--duration) ease}.cal-view.active{background:var(--surface);color:var(--text-strong);box-shadow:var(--shadow-card)}.cal-nav{display:flex;align-items:center;gap:var(--space-2)}.cal-step{width:28px;height:28px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-muted);font-size:var(--text-lg);line-height:1;cursor:pointer}.cal-step:hover{border-color:var(--accent);color:var(--text)}.cal-head,.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.cal-head{margin-bottom:var(--space-2);font-size:var(--text-xs);color:var(--text-faint);text-align:center}.cal-head .weekend{color:color-mix(in srgb,var(--text-faint) 70%,transparent)}.cal-grid{border-top:1px solid var(--border);border-left:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.cal-cell{display:flex;flex-direction:column;gap:2px;min-height:clamp(68px,8.6vh,104px);padding:var(--space-2);border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface);cursor:pointer;overflow:hidden;transition:background var(--duration) ease}.cal-cell:hover{background:var(--surface-2)}.cal-cell.outside{background:color-mix(in srgb,var(--surface-2) 60%,var(--bg))}.cal-cell.outside .cal-date{color:var(--text-faint)}.cal-cell.selected{background:color-mix(in srgb,var(--accent) 10%,var(--surface));box-shadow:inset 2px 0 0 var(--accent)}.cal-cell-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-1)}.cal-date{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 4px;border-radius:var(--radius-full);font-size:var(--text-sm);color:var(--text-muted)}.cal-cell.today .cal-date{background:var(--accent);color:var(--accent-ink);font-weight:600}.cal-cell-body{display:flex;flex-direction:column;gap:2px;min-height:0}.cal-more{font-size:var(--text-xs);color:var(--text-faint)}.cal-event{display:flex;align-items:baseline;gap:4px;width:100%;padding:2px var(--space-2);border:none;border-left:3px solid var(--cat-color);border-radius:3px;background:color-mix(in srgb,var(--cat-color) 14%,transparent);color:var(--text);font-size:var(--text-xs);line-height:1.5;text-align:left;cursor:pointer;overflow:hidden}.cal-event:hover{background:color-mix(in srgb,var(--cat-color) 26%,transparent)}.cal-event-time{flex:none;color:var(--text-muted);font-size:var(--text-xs)}.cal-event-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cat-work{--cat-color: var(--series-1)}.cat-life{--cat-color: var(--series-3)}.cat-date{--cat-color: var(--series-5)}.cat-health{--cat-color: var(--series-4)}.cat-travel{--cat-color: var(--series-2)}.cat-attraction{--cat-color: var(--series-1)}.cat-food{--cat-color: var(--series-2)}.cat-transport{--cat-color: var(--series-3)}.cat-hotel{--cat-color: var(--series-5)}.cat-other{--cat-color: var(--text-faint)}.cal-week{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.cal-week-head,.cal-week-allday{display:grid;grid-template-columns:56px repeat(7,minmax(0,1fr));border-bottom:1px solid var(--border)}.cal-week-gutter{border-right:1px solid var(--border);color:var(--text-faint);font-size:var(--text-xs);text-align:right;padding:var(--space-2) var(--space-2) 0 0}.cal-week-day{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-2) 0;border:none;border-right:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer}.cal-week-day.weekend{background:color-mix(in srgb,var(--surface-2) 50%,var(--surface))}.cal-week-day.selected{background:color-mix(in srgb,var(--accent) 10%,var(--surface))}.cal-week-dow{font-size:var(--text-xs)}.cal-week-date{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;border-radius:var(--radius-full);font-size:var(--text-md);color:var(--text)}.cal-week-day.today .cal-week-date{background:var(--accent);color:var(--accent-ink);font-weight:600}.cal-week-allday-cell{display:flex;flex-direction:column;gap:2px;padding:var(--space-1);border-right:1px solid var(--border);min-height:28px}.cal-week-body{display:grid;grid-template-columns:56px repeat(7,minmax(0,1fr));max-height:520px;overflow-y:auto;scrollbar-width:thin}.cal-hour-label{padding-right:var(--space-2);color:var(--text-faint);font-size:var(--text-xs);text-align:right;transform:translateY(-6px)}.cal-week-col{position:relative;border-right:1px solid var(--border)}.cal-week-col.weekend{background:color-mix(in srgb,var(--surface-2) 40%,transparent)}.cal-week-col.today{background:color-mix(in srgb,var(--accent) 5%,transparent)}.cal-hour-line{position:absolute;left:0;right:0;border-top:1px solid var(--grid)}.cal-slot{position:absolute;display:flex;flex-direction:column;gap:1px;padding:2px var(--space-2);border:none;border-left:3px solid var(--cat-color);border-radius:4px;background:color-mix(in srgb,var(--cat-color) 20%,var(--surface));color:var(--text);font-size:var(--text-xs);line-height:1.35;text-align:left;cursor:pointer;overflow:hidden}.cal-slot:hover{background:color-mix(in srgb,var(--cat-color) 32%,var(--surface))}.cal-slot.short{flex-direction:row;align-items:baseline;gap:4px;padding-top:1px}.cal-slot-time{flex:none;color:var(--text-muted)}.cal-slot-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-agenda{list-style:none;margin:0;padding:0}.cal-agenda-day{display:grid;grid-template-columns:72px 1fr;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--border)}.cal-agenda-day:last-child{border-bottom:none}.cal-agenda-date{display:flex;flex-direction:column;align-items:flex-end;text-align:right;color:var(--text-muted)}.cal-agenda-num{font-size:var(--text-xl);color:var(--text-strong);line-height:1.1}.cal-agenda-day.today .cal-agenda-num,.cal-agenda-day.today .cal-agenda-dow{color:var(--accent)}.cal-agenda-dow,.cal-agenda-month{font-size:var(--text-xs)}.cal-agenda-month{color:var(--text-faint)}.cal-agenda-events{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.cal-agenda-event,.cal-day-item{display:grid;grid-template-columns:52px 1fr auto;gap:var(--space-3);align-items:baseline;width:100%;padding:var(--space-2) var(--space-3);border:none;border-left:3px solid var(--cat-color);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--cat-color) 15%,var(--surface-2));color:var(--text);text-align:left;cursor:pointer;transition:background var(--duration) ease}.cal-agenda-event:hover,.cal-day-item:hover{background:color-mix(in srgb,var(--cat-color) 20%,var(--surface-2))}.cal-agenda-time,.cal-day-time{color:var(--text-muted);font-size:var(--text-sm)}.cal-agenda-title,.cal-day-title{overflow:hidden;text-overflow:ellipsis}.cal-agenda-meta,.cal-day-meta{color:var(--text-faint);font-size:var(--text-xs);text-align:right}.cal-day-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-3)}.cal-day-head h3{margin:0;font-size:var(--text-lg);font-weight:600}.cal-day-dow{margin-left:var(--space-3);color:var(--text-faint);font-size:var(--text-sm);font-weight:400}.cal-day-empty{margin:0;color:var(--text-faint)}.cal-day-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.cal-day-main{display:flex;flex-direction:column;gap:2px;min-width:0}.cal-day-desc{color:var(--text-muted);font-size:var(--text-sm)}.cal-editor-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.cal-editor-head h3{margin:0;font-size:var(--text-lg);font-weight:600}.cal-editor-close{width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-faint);font-size:var(--text-xl);line-height:1;cursor:pointer}.cal-editor-close:hover{background:var(--surface-2);color:var(--text)}.cal-editor-note{margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border-left:3px solid var(--status-warn);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--status-warn) 10%,transparent);color:var(--text-muted);font-size:var(--text-sm)}.cal-allday{display:flex;align-items:center;gap:var(--space-2);padding-bottom:var(--space-2);color:var(--text-muted);font-size:var(--text-sm);cursor:pointer}.cal-editor-error{color:var(--status-bad);font-size:var(--text-sm)}.cal-editor-actions{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-4)}.cal-editor-spacer{margin-left:auto}@media(max-width:900px){.cal-cell{min-height:72px}.cal-event-title{display:none}.cal-agenda-day{grid-template-columns:56px 1fr}.cal-agenda-event,.cal-day-item{grid-template-columns:46px 1fr}.cal-agenda-meta,.cal-day-meta{grid-column:2;text-align:left}}.quiz-question{font-size:var(--text-lg);line-height:1.6;margin:0 0 var(--space-4);color:var(--text-strong)}.quiz-options{list-style:none;margin:0 0 var(--space-4);padding:0;display:grid;gap:var(--space-2)}.quiz-option{width:100%;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text);text-align:left;font:inherit;cursor:pointer}.quiz-option:hover:not(:disabled){border-color:var(--accent)}.quiz-option:disabled{cursor:default}.quiz-option-key{flex:none;width:22px;height:22px;display:grid;place-items:center;border-radius:50%;background:var(--surface-3);color:var(--text-muted);font-size:var(--text-xs)}.quiz-option.correct{border-color:var(--status-good);background:color-mix(in srgb,var(--status-good) 14%,var(--surface-2))}.quiz-option.wrong{border-color:var(--status-bad);background:color-mix(in srgb,var(--status-bad) 12%,var(--surface-2))}.quiz-option.correct .quiz-option-key,.quiz-option.wrong .quiz-option-key{text-indent:-99em;overflow:hidden;font-size:var(--text-sm)}.quiz-option.correct .quiz-option-key{color:var(--status-good)}.quiz-option.wrong .quiz-option-key{color:var(--status-bad)}.quiz-option.correct .quiz-option-key:after,.quiz-option.wrong .quiz-option-key:after{float:left;text-indent:0}.quiz-option.correct .quiz-option-key:after{content:"✓"}.quiz-option.wrong .quiz-option-key:after{content:"✕"}.quiz-feedback{padding:var(--space-4);border-radius:var(--radius-md);background:var(--surface-2);border-left:3px solid var(--border);line-height:1.65}.quiz-feedback.correct{border-left-color:var(--status-good)}.quiz-feedback.wrong{border-left-color:var(--status-bad)}.quiz-verdict{margin:0 0 var(--space-2);font-weight:600;color:var(--text-strong)}.wrong-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-4)}.wrong-item{padding:var(--space-4);border-radius:var(--radius-md);background:var(--surface-2)}.wrong-line,.wrong-explain{margin:var(--space-2) 0 0;line-height:1.6}.wrong-explain{color:var(--text-muted);font-size:var(--text-sm)}.plan-actions{display:flex;gap:var(--space-2)}.plan-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-2)}.plan-chip{display:flex;flex-direction:column;gap:2px;padding:var(--space-2) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text);text-align:left;cursor:pointer;transition:border-color var(--duration) ease}.plan-chip:hover{border-color:var(--accent)}.plan-chip.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--surface))}.plan-chip span{color:var(--text-faint);font-size:var(--text-xs)}.plan-sections{display:flex;padding:2px;margin-bottom:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);width:fit-content}.plan-section{padding:var(--space-1) var(--space-4);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer}.plan-section.active{background:var(--surface);color:var(--text-strong);box-shadow:var(--shadow-card)}.plan-note{color:var(--text-faint);font-size:var(--text-sm);line-height:1.6}.plan-error{color:var(--status-bad);font-size:var(--text-sm)}.plan-day{margin-top:var(--space-5)}.plan-day-title{display:flex;align-items:center;gap:var(--space-3);margin:0 0 var(--space-2);font-size:var(--text-md);font-weight:600;color:var(--text-strong)}.plan-sub{margin:var(--space-5) 0 var(--space-2);font-size:var(--text-md);font-weight:600}.plan-items,.plan-check-list,.plan-expenses{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.plan-item{padding:var(--space-3) var(--space-4);border-left:3px solid var(--cat-color);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--cat-color) 13%,var(--surface-2))}.plan-item.editing{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--accent)}.plan-item-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2)}.plan-item-title{min-width:0}.plan-tag{flex:none;padding:1px var(--space-2);border-radius:3px;background:color-mix(in srgb,var(--cat-color) 26%,transparent);color:var(--text);font-size:var(--text-xs)}.plan-time,.plan-cost{color:var(--text-muted);font-size:var(--text-sm)}.plan-desc{margin:var(--space-2) 0 0;color:var(--text-muted);font-size:var(--text-sm);line-height:1.6}.plan-item-tools{margin-left:auto;display:flex;gap:var(--space-1);opacity:.35;transition:opacity var(--duration) ease}.plan-item:hover .plan-item-tools,.plan-item-tools:focus-within{opacity:1}.plan-tool{padding:1px var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-muted);font-size:var(--text-xs);cursor:pointer}.plan-tool:hover:not(:disabled){border-color:var(--accent);color:var(--text)}.plan-tool:disabled{opacity:.35;cursor:default}.plan-tool.danger:hover:not(:disabled){border-color:var(--status-bad);color:var(--status-bad)}.plan-tool:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.plan-revise{padding:var(--space-4);margin-bottom:var(--space-4);border:1px dashed var(--border);border-radius:var(--radius-md);background:var(--surface-2)}.plan-revise-summary{margin:0 0 var(--space-3);line-height:1.7}.plan-diff{list-style:none;margin:0 0 var(--space-4);padding:0;display:flex;flex-direction:column;gap:var(--space-1)}.plan-diff li{display:flex;align-items:baseline;gap:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);background:var(--surface);font-size:var(--text-sm)}.plan-diff-mark{width:1em;font-weight:600}.plan-diff-day{color:var(--text-faint);font-size:var(--text-xs)}.plan-diff-added .plan-diff-mark{color:var(--status-good)}.plan-diff-removed .plan-diff-mark{color:var(--status-bad)}.plan-diff-removed{background:color-mix(in srgb,var(--status-bad) 8%,var(--surface))}.plan-diff-moved .plan-diff-mark{color:var(--accent)}.plan-budget-table{width:100%;border-collapse:collapse;margin-bottom:var(--space-3)}.plan-budget-table th,.plan-budget-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);text-align:left}.plan-budget-table th{color:var(--text-faint);font-size:var(--text-xs);font-weight:400}.plan-budget-table .right{text-align:right}.plan-budget-table tfoot td{border-bottom:none;border-top:1px solid var(--border);font-weight:600}.plan-budget-table .over{color:var(--status-bad)}.plan-budget-edit{padding:var(--space-3);margin-bottom:var(--space-3);border-radius:var(--radius-md);background:var(--surface-2)}.plan-expenses li{display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--surface-2);font-size:var(--text-sm)}.plan-expense-day{color:var(--text-faint);font-size:var(--text-xs)}.plan-expense-title{flex:1;min-width:0}.plan-check-list li{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--surface-2)}.plan-check-list label{flex:1;display:flex;align-items:center;gap:var(--space-3);cursor:pointer}.plan-check-list li.done label{color:var(--text-faint);text-decoration:line-through}.plan-tips ul{margin:0;padding-left:var(--space-5);color:var(--text-muted);line-height:1.7}.persona-list{list-style:none;margin:0 0 var(--space-4);padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--space-2)}.persona-item{display:flex;gap:var(--space-3);align-items:baseline;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--surface-2)}.persona-item span{font-size:var(--text-sm);color:var(--text-muted)}.poker-room{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:var(--space-3);height:100%;min-height:0}.poker-live-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;align-items:stretch;gap:var(--space-5);min-width:0}.poker-live-layout>.poker-room{min-width:0}.poker-standings{min-width:0;padding-left:var(--space-5);border-left:1px solid var(--border)}.poker-standings-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);padding:3px 0 var(--space-3)}.poker-standings-head h2{margin:0;font-size:var(--text-md);color:var(--text-strong);letter-spacing:0}.poker-standings-head span{font-size:var(--text-xs);color:var(--text-faint);font-variant-numeric:tabular-nums}.poker-standing-list{display:grid;gap:0;margin:0;padding:0;list-style:none}.poker-standing{display:grid;grid-template-columns:20px 36px minmax(0,1fr) auto;align-items:center;gap:var(--space-2);min-height:64px;padding:var(--space-2) 0;border-bottom:1px solid color-mix(in srgb,var(--border) 55%,transparent)}.poker-standing-rank{color:var(--text-faint);font-size:var(--text-xs);font-variant-numeric:tabular-nums;text-align:center}.poker-standing-face{width:36px;height:36px;border-radius:50%;object-fit:cover}.poker-standing-player,.poker-standing-money{display:flex;flex-direction:column;min-width:0;line-height:1.25}.poker-standing-player b{overflow:hidden;color:var(--text-strong);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap}.poker-standing-player small,.poker-standing-money small{color:var(--text-faint);font-size:var(--text-xs);white-space:nowrap}.poker-standing-money{align-items:flex-end;text-align:right;font-variant-numeric:tabular-nums}.poker-standing-money b{color:var(--text-muted);font-size:var(--text-sm)}.poker-standing-money b.good{color:var(--status-good)}.poker-standing-money b.bad{color:var(--status-bad)}@media(max-width:1100px){.poker-live-layout{grid-template-columns:minmax(0,1fr)}.poker-standings{padding-top:var(--space-4);padding-left:0;border-top:1px solid var(--border);border-left:0}.poker-standing-list{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));column-gap:var(--space-5)}.poker-felt[data-seat-count="7"] .pseat-cards .pcard,.poker-felt[data-seat-count="8"] .pseat-cards .pcard{--card-w: 40px}}.poker-topbar{display:flex;align-items:center;justify-content:space-between}.poker-stage{font-size:var(--text-lg);color:var(--text-strong)}.poker-felt{position:relative;min-height:clamp(320px,48vh,620px);border-radius:var(--radius-md);overflow:hidden;background:#073f2d}.poker-felt-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.pseat{position:absolute;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;width:clamp(92px,13vw,132px);transition:opacity .2s ease}.poker-felt[data-seat-count="6"] .pseat,.poker-felt[data-seat-count="7"] .pseat,.poker-felt[data-seat-count="8"] .pseat{width:clamp(76px,8vw,108px)}.poker-felt[data-seat-count="8"] .pseat-plate{gap:5px;padding-right:7px}.poker-felt[data-seat-count="8"] .pseat-face{width:30px;height:30px}.poker-felt[data-seat-count="8"] .pseat-talk{font-size:10px}.pseat.folded{opacity:.38}.pseat-cards{display:flex;gap:3px}.pseat-cards>:first-child{transform:rotate(-4deg)}.pseat-cards>:last-child{transform:rotate(4deg) translate(-6px)}.pseat-plate{display:flex;align-items:center;gap:var(--space-2);padding:4px 10px 4px 4px;border-radius:var(--radius-full);background:#0c0907b8;box-shadow:inset 0 0 0 1px #ffffff14;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.pseat-avatar{position:relative;flex:none;line-height:0}.pseat-face{width:34px;height:34px;border-radius:50%;object-fit:cover;flex:none}.pseat-role{position:absolute;right:-3px;bottom:-3px;min-width:17px;height:17px;padding:0 3px;border-radius:var(--radius-full);font-size:9px;font-weight:700;line-height:17px;text-align:center;letter-spacing:.02em;border:1px solid rgb(12 9 7 / 70%)}.pseat-role.role-d{background:#f4ece0;color:#2a2320}.pseat-role.role-sb,.pseat-role.role-bb{background:#0c0907e0;color:var(--accent)}.pseat-act{padding:1px 8px;border-radius:var(--radius-full);background:#0c09079e;color:#e2d8cc;font-size:var(--text-xs);white-space:nowrap}.pseat-act.folded{color:var(--text-faint)}.pseat-id{display:flex;flex-direction:column;line-height:1.15;min-width:0}.pseat-id b{font-size:var(--text-sm);color:#f0e7dc;white-space:nowrap}.pseat-id span{font-size:var(--text-xs);color:var(--accent);font-variant-numeric:tabular-nums}.pseat.acting .pseat-plate{box-shadow:inset 0 0 0 1px var(--accent),0 0 16px #e0a56a73}@keyframes pseat-breathe{0%,to{box-shadow:0 0 #e0a56a00}50%{box-shadow:0 0 0 5px #e0a56a38}}.pseat.acting .pseat-avatar,.poker-hero.acting .pseat-avatar{border-radius:50%;animation:pseat-breathe 2.2s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.pseat.acting .pseat-avatar,.poker-hero.acting .pseat-avatar{animation:none}}.pseat-bet{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-xs);color:#f0e7dc;font-variant-numeric:tabular-nums}.pseat-bet img{width:14px;height:14px}.pseat-talk{margin:0;max-width:100%;padding:4px 8px;border-radius:var(--radius-sm);background:#0c0907b8;color:#e2d8cc;font-size:var(--text-xs);text-align:center}.pseat-talk.thinking{color:var(--text-faint);font-style:italic}.poker-center{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);display:flex;flex-direction:row;align-items:center;gap:var(--space-3);z-index:2}.poker-board{display:flex;gap:6px}.poker-pot{display:flex;align-items:center;gap:var(--space-2);padding:3px 12px 3px 3px;border-radius:var(--radius-full);background:#0c09079e}.poker-pot img{width:40px;height:40px;object-fit:contain}.poker-pot b{font-size:var(--text-md);color:var(--accent);font-variant-numeric:tabular-nums}.poker-pot small{margin-left:6px;font-size:var(--text-xs);color:var(--text-faint)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.poker-hero{position:absolute;left:50%;bottom:6%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;z-index:1}.poker-hero-cards{display:flex;gap:4px}.poker-hero-cards>:first-child{transform:rotate(-5deg)}.poker-hero-cards>:last-child{transform:rotate(5deg) translate(-8px)}@media(max-height:920px){.poker-hero-cards .pcard{--card-w: 52px}.poker-hero-cards{margin-bottom:-26px}.poker-hero .pseat-plate{position:relative;z-index:1}}.poker-controls{min-height:76px;display:flex;align-items:center}.poker-actions{display:flex;align-items:center;gap:var(--space-3);width:100%;flex-wrap:wrap}.poker-bet{display:flex;align-items:center;gap:var(--space-3);flex:1 1 320px;min-width:0;flex-wrap:wrap}.poker-bet-quick,.poker-bet-custom{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.poker-bet-entry{display:flex;align-items:center;gap:var(--space-2);min-height:48px;padding-left:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-muted);font-size:var(--text-sm)}.poker-bet-amount{color:var(--text-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.poker-action-amount{margin-left:var(--space-2);color:var(--text-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.poker-bet-input{width:120px;min-height:46px;padding:var(--space-2) var(--space-3);border:0;border-left:1px solid var(--border);border-radius:0;background:transparent;text-align:left;font-size:20px;font-weight:650;font-variant-numeric:tabular-nums}.poker-bet-input:focus{border-left-color:var(--accent)}.poker-table-tools,.poker-show-control{position:relative;display:flex;align-items:center;gap:var(--space-2)}.poker-show-menu{position:absolute;z-index:20;top:calc(100% + var(--space-2));right:0;display:flex;gap:var(--space-2);min-width:max-content;padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-card)}.poker-bet-hint{font-size:var(--text-sm);color:var(--text-faint);font-variant-numeric:tabular-nums}.poker-allin-only{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.poker-rebuy{margin:0;font-size:var(--text-sm);color:var(--text-muted)}.poker-turn{display:flex;flex-direction:column;gap:var(--space-2);width:100%}.poker-equity{display:flex;align-items:center;gap:var(--space-4);margin:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--surface-2);font-size:var(--text-sm);color:var(--text-muted)}.poker-equity b{color:var(--text-strong);font-size:var(--text-md);font-variant-numeric:tabular-nums}.poker-equity small{margin-left:6px;font-size:var(--text-xs);color:var(--text-faint)}.poker-equity-odds.good small{color:var(--status-good)}.poker-equity-odds.bad small{color:var(--status-bad)}.persona-face{width:32px;height:32px;border-radius:50%;object-fit:cover;flex:none}.poker-waiting{display:flex;align-items:baseline;gap:var(--space-3);margin:0;color:var(--text-muted)}.poker-waiting span{font-size:var(--text-sm);color:var(--text-faint)}.poker-result{display:flex;align-items:center;gap:var(--space-4);width:100%;flex-wrap:wrap}.poker-result-actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.poker-result-art{width:64px;height:64px;border-radius:var(--radius-sm);object-fit:cover;flex:none}.poker-awards{list-style:none;margin:0;padding:0;flex:1 1 auto;min-width:0}.poker-reason{color:var(--text-muted);margin-left:var(--space-2)}.public-poker-app{display:flex;flex-direction:column;width:100%;min-height:100vh;min-height:100dvh;background:var(--bg)}.public-poker-nav{position:relative;z-index:30;display:flex;align-items:center;justify-content:space-between;min-height:58px;padding:0 clamp(var(--space-4),3vw,var(--space-7));border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 92%,transparent)}.public-poker-brand{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--text-strong);text-decoration:none}.public-poker-nav>span{color:var(--text-muted);font-variant-numeric:tabular-nums}.public-poker-app>.page-body,.public-poker-app>.empty{width:min(100%,1100px);margin:0 auto}.public-poker-app.compact>.page-body{width:100%}.public-poker-gate{display:grid;flex:1;place-items:center;padding:var(--space-6)}.public-poker-name{display:grid;width:min(100%,380px);gap:var(--space-4);padding:var(--space-6);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-card)}.public-poker-name>svg{color:#186c4f}.public-poker-name h1{margin:0;color:var(--text-strong);font-size:var(--text-xl);letter-spacing:0}.public-poker-name label{display:grid;gap:var(--space-2);color:var(--text-muted);font-size:var(--text-sm)}.public-poker-name .input{min-height:48px;font-size:var(--text-lg)}.public-poker-lobby,.public-poker-waiting{align-content:start;padding-top:clamp(var(--space-5),5vw,var(--space-7))}.public-poker-lobby-head,.public-poker-room-head,.public-poker-open>header,.public-poker-host-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.public-poker-lobby-head>div,.public-poker-room-head>div:first-child{display:flex;flex-direction:column;gap:var(--space-1)}.public-poker-lobby-head span,.public-poker-room-head span{color:var(--text-faint);font-size:var(--text-sm)}.public-poker-lobby-head b,.public-poker-room-head strong{color:var(--text-strong);font-size:var(--text-xl);font-variant-numeric:tabular-nums}.public-poker-code{display:flex;width:min(100%,420px);gap:var(--space-2)}.public-poker-code .input{min-width:0;min-height:44px}.public-poker-open{padding-top:var(--space-5);border-top:1px solid var(--border)}.public-poker-open h2{margin:0;color:var(--text-strong);font-size:var(--text-lg);letter-spacing:0}.public-poker-room-list,.public-poker-seats{display:grid;gap:var(--space-2);margin:var(--space-4) 0 0;padding:0;list-style:none}.public-poker-room-list li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:var(--space-4);min-height:62px;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.public-poker-room-list li>div{display:flex;align-items:baseline;gap:var(--space-3);min-width:0}.public-poker-room-list li>div span{overflow:hidden;color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap}.public-poker-count{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--text-muted);font-variant-numeric:tabular-nums}.public-poker-empty{margin:var(--space-6) 0;color:var(--text-faint)}.public-poker-seats{grid-template-columns:repeat(2,minmax(0,1fr))}.public-poker-seats li{display:grid;grid-template-columns:30px minmax(0,1fr) auto auto;align-items:center;gap:var(--space-3);min-height:58px;padding:var(--space-3);border-bottom:1px solid var(--border)}.public-poker-seats li.empty{min-height:58px;opacity:.55}.public-poker-seat-no{display:grid;width:28px;height:28px;place-items:center;border:1px solid var(--border);border-radius:50%;color:var(--text-muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.public-poker-host-actions{justify-content:flex-end;padding-top:var(--space-4);border-top:1px solid var(--border)}@media(max-width:640px){.public-poker-nav{min-height:52px}.public-poker-lobby,.public-poker-waiting{padding:var(--space-4)}.public-poker-room-list li{grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2)}.public-poker-count{display:none}.public-poker-seats{grid-template-columns:1fr}.public-poker-room-head{align-items:flex-start}.public-poker-app.compact .page-body{padding:var(--space-3)}}@media(max-width:900px){.pseat-face{width:28px;height:28px}.pcard{--card-w: 40px}.pcard.lg{--card-w: 60px}}@media(max-width:640px){.poker-bet-custom,.poker-bet-entry{width:100%}.poker-bet-input{width:auto;min-width:0;flex:1}.poker-bet-custom>.btn{min-height:48px;flex:1}}.pcard{--card-w: 52px;position:relative;width:var(--card-w);height:calc(var(--card-w) * 1.4);border-radius:calc(var(--card-w) * .09);flex:none;background:linear-gradient(160deg,#fffdf7,#f6efe2);color:#2a2320;box-shadow:0 1px 2px #00000059,0 6px 14px #00000038,inset 0 0 0 1px #ffffffb3;-webkit-user-select:none;user-select:none}.pcard.lg{--card-w: 66px}.pcard.red{color:#a8443a}.pcard-corner{position:absolute;top:6%;left:8%;display:flex;flex-direction:column;align-items:center;line-height:.95;font-weight:700}.pcard-corner b{font-size:calc(var(--card-w) * .3);font-variant-numeric:lining-nums tabular-nums}.pcard-corner i{font-style:normal;font-size:calc(var(--card-w) * .24)}.pcard-corner.bottom{inset:auto 8% 6% auto;transform:rotate(180deg)}.pcard-pip{position:absolute;inset:0;display:grid;place-items:center;font-size:calc(var(--card-w) * .62);opacity:.1}.pcard.back{background-size:cover;background-position:center;box-shadow:0 1px 2px #0006,0 6px 14px #00000040}.pcard.slot{background:#ffffff08;border:1px solid rgb(255 255 255 / 7%);box-shadow:none}.switch-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;cursor:pointer}.switch-row input{accent-color:var(--accent);width:16px;height:16px}.switch-row small{display:block;font-size:var(--text-sm);color:var(--text-muted)}.im{display:flex;flex:1;min-height:0;width:100vw;margin-inline:calc((100% - 100vw)/2);overflow:hidden}.im-main{flex:1;min-width:0;display:flex;flex-direction:column}.im-column{width:100%;max-width:860px;margin:0 auto}.im-aside{flex:none;width:300px;display:flex;flex-direction:column;border-right:1px solid var(--border);overflow-y:auto;scrollbar-width:thin}.im-aside-art{flex:none;width:100%;height:clamp(260px,46vh,520px);object-fit:cover;object-position:center bottom;filter:var(--art-filter);-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 72%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,#000 72%,transparent 100%)}.im-aside-body{display:flex;flex-direction:column;gap:var(--space-5);padding:0 var(--space-4) var(--space-5);margin-top:calc(-1 * var(--space-4))}.im-side h3,.im-aside-body h3{margin:0 0 var(--space-2);color:var(--text-muted);font-size:var(--text-sm);font-weight:600}.im-side-none{margin:0;color:var(--text-faint);font-size:var(--text-sm)}.im-side-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.im-side-list li{display:flex;gap:var(--space-3);align-items:baseline;font-size:var(--text-md)}.im-side-time{flex:none;width:3.2em;color:var(--text-faint);font-size:var(--text-sm)}.im-side-main{flex:1;min-width:0;display:flex;flex-direction:column}.im-side-main em{color:var(--text-faint);font-size:var(--text-sm);font-style:normal}.im-side-photos{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}@media(max-width:1099px){.im-aside{display:none}}.im-bar{flex:none;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--border)}.im-side-photos img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-sm);display:block}.im-avatar{flex:none;width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:var(--surface-3);color:var(--text-muted);font-size:var(--text-md);font-weight:600;-webkit-user-select:none;user-select:none}.im-avatar.mine{background:color-mix(in srgb,var(--accent) 30%,var(--surface-2));color:var(--text-strong)}.im-list{flex:1;overflow-y:auto;padding:var(--space-4) var(--space-5) var(--space-2);background:var(--bg);scrollbar-width:thin}.im-empty{width:min(100%,660px);margin:var(--space-4) auto;text-align:center}.im-empty>img{display:block;width:100%;aspect-ratio:3 / 2;max-height:340px;object-fit:cover;border:1px solid var(--border);border-radius:var(--radius-sm)}.im-day{width:fit-content;margin:var(--space-5) auto var(--space-4);padding:2px 12px;border-radius:var(--radius-full);background:var(--surface-2);color:var(--text-faint);font-size:var(--text-xs)}.im-row{display:flex;gap:var(--space-3);align-items:flex-start;margin-top:var(--space-4);padding:2px var(--space-2);margin-left:calc(var(--space-2) * -1);margin-right:calc(var(--space-2) * -1);border-radius:var(--radius-md);transition:background .14s ease}.im-row:hover{background:color-mix(in srgb,var(--surface) 60%,transparent)}.im-row.grouped{margin-top:2px}.im-row.mine{flex-direction:row-reverse}.im-avatar-slot{flex:none;width:34px}.im-main{min-width:0;max-width:78%;display:flex;flex-direction:column}.im-row.mine .im-main{align-items:flex-end}.im-sender{display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:4px;font-size:var(--text-xs);color:var(--text-faint)}.im-row.mine .im-sender{flex-direction:row-reverse}.im-sender time{font-variant-numeric:tabular-nums}.im-line{display:flex;align-items:center;gap:var(--space-2);max-width:100%}.im-row.mine .im-line{flex-direction:row-reverse}.im-bubble{position:relative;padding:9px 13px;border-radius:10px;background:var(--surface);border:1px solid var(--border);line-height:1.65;word-break:break-word;animation:im-in .18s ease-out}@keyframes im-in{0%{opacity:0;transform:translateY(4px)}}@media(prefers-reduced-motion:reduce){.im-bubble{animation:none}}.im-row.mine .im-bubble{background:color-mix(in srgb,var(--accent) 20%,var(--surface));border-color:color-mix(in srgb,var(--accent) 30%,var(--border))}.im-bubble p{margin:0}.im-bubble.image{padding:0;border:none;background:transparent;overflow:hidden}.im-bubble.sticker{padding:0;border:none;background:transparent}.im-row.mine .im-bubble.sticker{border:none;background:transparent}.im-bubble img{display:block;max-width:260px;max-height:300px;border-radius:8px}.im-bubble .im-sticker{width:118px;height:118px;object-fit:contain;border-radius:0}.im-missing{padding:var(--space-4);color:var(--text-faint);font-size:var(--text-sm)}.im-row.sending .im-bubble{opacity:.55}.im-row.failed .im-bubble{opacity:.7;border:1px solid var(--status-bad)}.im-retry{align-self:flex-end;margin-top:var(--space-1);padding:0;border:0;background:none;color:var(--status-bad);font-size:var(--text-sm);cursor:pointer}.im-retry:hover{text-decoration:underline}.im-tools{position:relative;flex:none;opacity:0;transition:opacity .14s ease}.im-row:hover .im-tools,.im-tools:focus-within{opacity:1}.im-tool{width:26px;height:26px;display:grid;place-items:center;border:1px solid var(--border);border-radius:50%;background:var(--surface);color:var(--text-muted);font-size:var(--text-md);font-family:inherit;cursor:pointer}.im-tool:hover{border-color:var(--accent);color:var(--text)}.im-picker{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);display:flex;gap:2px;padding:3px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);box-shadow:var(--shadow-pop);z-index:2}.im-picker button{border:none;background:transparent;border-radius:var(--radius-full);padding:3px 6px;font-size:var(--text-md);line-height:1;cursor:pointer}.im-picker button:hover{background:var(--surface-2)}.im-reactions{display:flex;gap:4px;margin-top:5px}.im-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);color:var(--text-muted);font-size:var(--text-xs);font-family:inherit;cursor:pointer;transition:border-color .14s ease}.im-chip:hover{border-color:var(--accent)}.im-chip.mine{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--surface))}.im-chip b{font-weight:600;font-variant-numeric:tabular-nums}.im-composer{border-top:1px solid var(--border);background:var(--surface);padding:var(--space-3) var(--space-5) var(--space-4)}.im-compose-box{padding:var(--space-2) var(--space-3) var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);transition:border-color .14s ease}.im-compose-box:focus-within{border-color:color-mix(in srgb,var(--accent) 55%,var(--border))}.im-compose-bar{display:flex;align-items:center;gap:4px}.im-attach{display:grid;place-items:center;width:32px;height:28px;padding:0;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer}.im-attach svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.im-attach circle{fill:currentColor;stroke:none}.im-attach:hover:not(:disabled){border-color:var(--border);background:var(--surface-2);color:var(--text)}.im-attach:disabled{opacity:.4;cursor:default}.im-sticker-menu{position:relative}.im-sticker-toggle{display:grid;place-items:center;width:32px;height:28px;padding:0;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;cursor:pointer}.im-sticker-toggle:hover:not(:disabled),.im-sticker-toggle.active{border-color:var(--border);background:var(--surface-2)}.im-sticker-toggle:disabled{opacity:.4;cursor:default}.im-sticker-toggle img{width:30px;height:30px;object-fit:contain}.im-sticker-tray{position:absolute;left:0;bottom:calc(100% + var(--space-2));z-index:3;width:260px;max-width:calc(100vw - 32px);padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-pop)}.im-sticker-tabs{display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:2px;margin-bottom:var(--space-2);border-radius:var(--radius-sm);background:var(--surface-2)}.im-sticker-tab{height:28px;border:none;border-radius:4px;background:transparent;color:var(--text-faint);font-size:var(--text-xs);cursor:pointer}.im-sticker-tab.active{background:var(--surface);color:var(--text-strong);box-shadow:var(--shadow-card)}.im-sticker-grid{display:grid;grid-template-columns:repeat(3,76px);gap:var(--space-2)}.im-sticker-grid button{width:76px;height:76px;padding:4px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;cursor:pointer;transition:border-color var(--duration) ease,background var(--duration) ease}.im-sticker-grid button:hover:not(:disabled),.im-sticker-grid button:focus-visible{border-color:var(--accent);background:var(--surface-2)}.im-sticker-grid button:disabled{opacity:.45;cursor:default}.im-sticker-grid img{display:block;width:100%;height:100%;object-fit:contain}.im-input{display:block;width:100%;resize:none;border:none;outline:none;background:transparent;color:var(--text);font:inherit;line-height:1.6;padding:2px 0 var(--space-2);max-height:160px}.im-input::placeholder{color:var(--text-faint)}@media(max-width:720px){.im-hint{display:none}.im-send{margin-left:auto}}.im-send{margin-left:auto;padding:6px 18px;border:none;border-radius:var(--radius-md);background:var(--accent);color:var(--accent-ink);font-size:var(--text-sm);font-family:inherit;font-weight:600;cursor:pointer;transition:opacity .14s ease}.im-send:disabled{opacity:.4;cursor:default}.im-error{margin:var(--space-3) 0 0;color:var(--status-bad);font-size:var(--text-sm)}@media(max-width:640px){.im{height:calc(100vh - 108px)}.im-list,.im-composer{padding-left:var(--space-3);padding-right:var(--space-3)}.im-main{max-width:calc(100% - 46px)}.im-bubble .im-sticker{width:128px;height:128px}}.chat{display:flex;flex-direction:column;gap:var(--space-1);height:min(58vh,520px);overflow-y:auto;padding:var(--space-2) var(--space-1);scrollbar-width:thin}.chat-day{align-self:center;margin:var(--space-4) 0 var(--space-2);padding:2px 10px;border-radius:var(--radius-full);background:var(--surface-2);color:var(--text-faint);font-size:var(--text-xs);width:fit-content}.chat-row{position:relative;display:flex;flex-direction:column;max-width:68%;margin-top:var(--space-3)}.chat-row.grouped{margin-top:2px}.chat-row.mine{align-self:flex-end;align-items:flex-end}.chat-row.theirs{align-self:flex-start;align-items:flex-start}.chat-bubble{position:relative;padding:var(--space-3) var(--space-4);border-radius:16px;line-height:1.6;word-break:break-word;padding-right:56px}.chat-row.theirs .chat-bubble{background:var(--surface-2);border-bottom-left-radius:5px}.chat-row.mine .chat-bubble{background:color-mix(in srgb,var(--accent) 18%,var(--surface));border-bottom-right-radius:5px}.chat-bubble p{margin:0}.chat-bubble img{display:block;max-width:100%;max-height:320px;border-radius:10px;margin:calc(var(--space-1) * -1) 0 var(--space-1)}.chat-missing{padding:var(--space-3);border:1px dashed var(--border);border-radius:10px;color:var(--text-faint);font-size:var(--text-sm)}.chat-time{position:absolute;right:var(--space-3);bottom:6px;font-size:var(--text-xs);color:var(--text-faint);font-variant-numeric:tabular-nums}.chat-reactions{display:flex;gap:4px;margin-top:-6px;padding:0 var(--space-2)}.chat-chip{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);color:var(--text-muted);font-size:var(--text-xs);font-family:inherit;cursor:pointer;box-shadow:var(--shadow-card)}.chat-chip.mine{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--surface))}.chat-quick{position:absolute;top:-10px;display:flex;gap:2px;padding:2px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);box-shadow:var(--shadow-pop);opacity:0;pointer-events:none;transition:opacity .14s ease}.chat-row.mine .chat-quick{right:var(--space-3)}.chat-row.theirs .chat-quick{left:var(--space-3)}.chat-row:hover .chat-quick,.chat-quick:focus-within{opacity:1;pointer-events:auto}.chat-quick button{border:none;background:transparent;border-radius:var(--radius-full);padding:2px 5px;font-size:var(--text-md);line-height:1;cursor:pointer}.chat-quick button:hover{background:var(--surface-2)}@media(hover:none){.chat-quick{position:static;opacity:1;pointer-events:auto;box-shadow:none;margin-top:4px}}.chat-composer{display:flex;gap:var(--space-3);align-items:center;margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border)}.chat-composer .input{flex:1;min-width:0}.voice-engines{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--space-2);margin:var(--space-3) 0}.voice-engine{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);cursor:pointer;transition:border-color .14s ease}.voice-engine.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface-2))}.voice-engine.locked{cursor:default}.voice-engine input{margin-top:3px;accent-color:var(--accent)}.voice-engine div{display:flex;flex-direction:column;gap:3px}.voice-engine span{font-size:var(--text-sm);color:var(--text-muted);line-height:1.5}.voice-engine button{align-self:flex-start;margin-top:var(--space-2)}.img-loading{width:100%;aspect-ratio:1;border-radius:var(--radius-md);background:var(--surface-2)}.img-missing{display:grid;place-items:center;min-height:120px;padding:var(--space-4);border:1px dashed var(--border);border-radius:var(--radius-md);color:var(--text-faint);font-size:var(--text-sm)}.login-wrap{display:grid;place-items:center;min-height:70vh}.login-wrap .card{width:min(100%,380px)}.assistant{flex:1;min-height:0;grid-template-rows:1fr auto;gap:0;width:100vw;margin-inline:calc((100% - 100vw)/2);overflow:hidden}.assistant-list{overflow-y:auto;padding:var(--space-5) max(var(--space-4),calc((100% - 800px)/2));scrollbar-width:thin;display:flex;flex-direction:column;gap:var(--space-4)}.assistant-list.is-empty{justify-content:center}.assistant-turn{display:flex;gap:var(--space-3);align-items:flex-start;max-width:760px;width:100%}.assistant-turn.mine{align-self:flex-end;justify-content:flex-end}.assistant-body{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);min-width:0}.assistant-bubble{padding:var(--space-3) var(--space-4);background:var(--surface-2);border-radius:16px 16px 16px 5px;line-height:1.7;white-space:pre-wrap;word-break:break-word}.assistant-turn.mine .assistant-bubble{background:color-mix(in srgb,var(--accent) 18%,var(--surface));border-radius:16px 16px 5px;max-width:80%}.assistant-activity{display:flex;align-items:center;gap:var(--space-2);color:var(--text-faint);font-size:var(--text-sm)}.assistant-dots{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:assistant-pulse 1.1s ease-in-out infinite}@keyframes assistant-pulse{0%,to{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){.assistant-dots{animation:none;opacity:.7}}.assistant-cards{display:flex;flex-wrap:wrap;gap:var(--space-2)}.assistant-card{display:block;min-width:160px;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:inherit;text-decoration:none}a.assistant-card:hover{border-color:var(--accent)}.assistant-card-title{color:var(--text-muted);font-size:var(--text-sm)}.assistant-card-value{font-size:var(--text-xl);color:var(--text-strong);margin-top:2px}.assistant-card-row{display:flex;justify-content:space-between;gap:var(--space-4);margin-top:var(--space-1);font-size:var(--text-sm)}.assistant-card-note{margin-top:var(--space-2);color:var(--text-faint);font-size:var(--text-xs)}.assistant-undo{align-self:flex-start;padding:var(--space-1) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--duration) ease,color var(--duration) ease}.assistant-undo.ready:hover{border-color:var(--accent);color:var(--text)}.assistant-undo.done{border-style:dashed;color:var(--text-faint);cursor:default}.assistant-undo.failed{border-color:var(--status-bad);color:var(--status-bad)}.assistant-earlier{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);padding:var(--space-2) 0;border-top:1px solid var(--border)}.assistant-earlier-label{color:var(--text-faint);font-size:var(--text-sm)}.assistant-failed{color:var(--status-bad);font-size:var(--text-sm)}.assistant-suggest{display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:center;max-width:760px;align-self:center}.assistant-chip{padding:var(--space-2) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--duration) ease}.assistant-chip:hover{border-color:var(--accent);color:var(--text)}.assistant-compose{display:flex;gap:var(--space-3);align-items:flex-end;width:100%;padding:var(--space-4) max(var(--space-4),calc((100% - 800px)/2));border-top:1px solid var(--border);background:var(--surface)}.assistant-input{flex:1;min-width:0;resize:none;line-height:1.6}.assistant-send{flex:none;padding:var(--space-3) var(--space-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text);cursor:pointer}.assistant-send.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.assistant-send:disabled{opacity:.45;cursor:default}.dock{flex:none;z-index:3;display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4) var(--space-6) var(--space-5);border-top:1px solid var(--border);background:var(--surface)}.dock-row{display:flex;gap:var(--space-3);align-items:flex-end}.dock-input{flex:1;min-width:0;resize:none;line-height:1.6}.dock-reply{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-2)}.dock-avatar{flex:none;display:flex;padding-top:2px}.dock-reply-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-2);align-items:flex-start}.dock-reply-text{margin:0;line-height:1.7;white-space:pre-wrap}.dock-dismiss{flex:none;border:0;background:none;color:var(--text-faint);font-size:var(--text-lg);line-height:1;padding:var(--space-1);cursor:pointer}.dock-dismiss:hover{color:var(--text)}.meal-capture{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-3);min-height:64px;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-card);transition:border-color var(--duration) ease}.meal-capture:focus-within,.meal-capture.is-listening{border-color:var(--accent)}.meal-icon-btn,.meal-send-btn,.meal-week-nav button{display:inline-grid;place-items:center;width:36px;height:36px;flex:none;padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text-muted);cursor:pointer}.meal-capture.is-listening .meal-icon-btn{border-color:var(--status-bad);color:var(--status-bad)}.meal-icon-btn:disabled,.meal-send-btn:disabled{opacity:.4;cursor:default}.meal-send-btn:not(:disabled){border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.meal-capture-main{display:grid;min-width:0}.meal-capture textarea{width:100%;min-height:48px;max-height:120px;padding:0;resize:vertical;border:0;outline:0;background:transparent;color:var(--text);font:inherit;line-height:1.6}.meal-capture textarea::placeholder{color:var(--text-faint)}.meal-capture-state{min-height:14px;color:var(--text-faint);font-size:var(--text-xs)}.meal-viewbar{display:flex;align-items:center;justify-content:space-between}.meal-viewbar .btn{border-radius:var(--radius-sm)}.meal-week{min-width:0;border-block:1px solid var(--border);background:var(--surface)}.meal-week-nav{display:flex;align-items:center;gap:var(--space-1)}.meal-week-nav .meal-week-today{width:auto;padding-inline:var(--space-3);color:var(--text);font-size:var(--text-sm)}.meal-week-scroll{overflow-x:auto;scrollbar-width:thin}.meal-week-grid{display:grid;grid-template-columns:repeat(7,minmax(132px,1fr));min-width:100%}.meal-day{min-width:0;border-left:1px solid var(--border)}.meal-day:first-child{border-left:0}.meal-day.is-today{background:color-mix(in srgb,var(--accent) 6%,var(--surface))}.meal-day>header{display:flex;align-items:baseline;justify-content:space-between;min-height:48px;padding:var(--space-3);border-bottom:1px solid var(--surface-2)}.meal-day>header span{color:var(--text-faint);font-size:var(--text-xs)}.meal-day>header strong{color:var(--text-strong);font-family:var(--font-mono);font-size:var(--text-lg)}.meal-day-slots{display:grid}.meal-slot{display:flex;flex-direction:column;gap:var(--space-1);min-height:104px;padding:var(--space-3);border-bottom:1px solid var(--surface-2);overflow-wrap:anywhere}.meal-slot:last-child{border-bottom:0}.meal-slot.is-empty{color:var(--text-faint);background:color-mix(in srgb,var(--surface-2) 30%,transparent)}.meal-slot.is-skipped{opacity:.5;text-decoration:line-through}.meal-slot-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.meal-slot-type,.meal-slot-note,.meal-slot-who,.meal-slot-empty{font-size:var(--text-xs)}.meal-slot-type,.meal-slot-note,.meal-slot-empty{color:var(--text-faint)}.meal-slot strong{color:var(--text-strong);font-size:var(--text-sm);line-height:1.5}.meal-mode-icon{display:inline-flex;color:var(--text-faint)}.mode-cook .meal-mode-icon{color:var(--status-good)}.mode-takeout .meal-mode-icon{color:var(--series-4)}.mode-eat_out .meal-mode-icon{color:var(--series-1)}.meal-slot-who{display:inline-flex;align-items:center;gap:var(--space-1);margin-top:auto;color:var(--text-muted)}.recipe-library{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(0,1.5fr);min-height:520px;border-block:1px solid var(--border);background:var(--surface)}.recipe-index{padding:var(--space-4);border-right:1px solid var(--border)}.recipe-search{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-faint);background:var(--bg)}.recipe-search:focus-within{border-color:var(--accent)}.recipe-search input{min-width:0;width:100%;border:0;outline:0;background:transparent;color:var(--text);font:inherit}.recipe-list{display:grid;gap:var(--space-2);margin-top:var(--space-3)}.recipe-list button{display:grid;gap:var(--space-1);width:100%;padding:var(--space-3);border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text);text-align:left;cursor:pointer}.recipe-list button:hover,.recipe-list button.is-selected{border-color:var(--border);background:var(--surface-2)}.recipe-list button.is-selected{border-left-color:var(--accent)}.recipe-list button span,.recipe-list button small,.recipe-none{color:var(--text-faint);font-size:var(--text-xs);line-height:1.6}.recipe-detail{padding:var(--space-5);min-width:0}.recipe-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--surface-2)}.recipe-detail-head h2,.recipe-detail-head p,.recipe-eyebrow{margin:0}.recipe-detail-head h2{margin-top:var(--space-1);color:var(--text-strong);font-size:var(--text-xl)}.recipe-detail-head p:not(.recipe-eyebrow){margin-top:var(--space-2);color:var(--text-muted);line-height:1.6}.recipe-eyebrow{color:var(--text-faint);font-size:var(--text-xs)}.recipe-tags{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}.recipe-tags span{padding:var(--space-1) var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font-size:var(--text-xs)}.recipe-section{margin-top:var(--space-5)}.recipe-section h3{margin:0 0 var(--space-3);color:var(--text-strong);font-size:var(--text-md)}.recipe-ingredients,.recipe-steps,.recipe-tips,.cooking-history ol{margin:0;padding:0;list-style:none}.recipe-ingredients{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-2) var(--space-5)}.recipe-ingredients li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-1) var(--space-3);padding-block:var(--space-2);border-bottom:1px solid var(--surface-2)}.recipe-ingredients strong{font-size:var(--text-sm);font-weight:500}.recipe-ingredients small,.recipe-steps small,.cooking-history small{grid-column:1 / -1;color:var(--text-faint);font-size:var(--text-xs);line-height:1.6}.recipe-steps{counter-reset:recipe-step}.recipe-steps li{counter-increment:recipe-step;display:grid;grid-template-columns:28px minmax(0,1fr);gap:var(--space-2);padding-block:var(--space-2);line-height:1.7}.recipe-steps li:before{content:counter(recipe-step);display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--border);border-radius:50%;color:var(--text-faint);font-family:var(--font-mono);font-size:var(--text-xs)}.recipe-steps small{grid-column:2}.recipe-tips{display:grid;gap:var(--space-2);padding-left:var(--space-4);list-style:disc;color:var(--text-muted)}.recipe-source{margin:var(--space-5) 0 0;padding:var(--space-3) var(--space-4);border-left:2px solid var(--accent);color:var(--text-muted);background:var(--surface-2);line-height:1.7}.food-studio{display:grid;gap:var(--space-6)}.food-eyebrow{color:var(--text-faint);font-size:var(--text-xs)}.food-photo-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2)}.food-note-field{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--space-3);margin-top:var(--space-4);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg)}.food-note-field>span{color:var(--text-muted);font-size:var(--text-sm)}.food-note-field input{min-width:0;border:0;outline:0;background:transparent;color:var(--text);font:inherit}.food-analysis-loading{grid-auto-flow:column;justify-content:center;min-height:84px}.food-review{display:grid;grid-template-columns:minmax(180px,.55fr) minmax(0,1.45fr);gap:var(--space-5);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--surface-2)}.food-preview-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2);align-content:start}.food-preview-strip img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:var(--radius-sm);background:var(--surface-2)}.food-preview-strip img:first-child:last-child{grid-column:1 / -1;aspect-ratio:16 / 10}.food-review-body{display:grid;align-content:start;gap:var(--space-3);min-width:0}.food-review-title{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);color:var(--text-strong);font-weight:600}.food-confidence{padding:2px var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font-size:var(--text-xs);font-weight:400}.food-confidence.is-high{color:var(--status-good)}.food-confidence.is-medium,.food-confidence.is-low{color:var(--status-warn)}.food-review textarea,.cooking-request textarea{width:100%;resize:vertical;border:1px solid var(--border);border-radius:var(--radius-sm);outline:0;background:var(--bg);color:var(--text);font:inherit;line-height:1.6}.food-review textarea{padding:var(--space-3)}.food-review textarea:focus,.cooking-request textarea:focus{border-color:var(--accent)}.food-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.food-chip{display:inline-flex;align-items:center;gap:var(--space-1);max-width:100%;padding:var(--space-1) var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);background:var(--surface-2);font-size:var(--text-xs);overflow-wrap:anywhere}.food-chip.is-low{border-color:color-mix(in srgb,var(--status-warn) 55%,var(--border))}.food-chip button{display:inline-grid;place-items:center;width:18px;height:18px;padding:0;border:0;background:transparent;color:var(--text-faint);cursor:pointer}.food-uncertain{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-2);padding:var(--space-2) var(--space-3);border-left:2px solid var(--status-warn);color:var(--text-muted);background:color-mix(in srgb,var(--status-warn) 7%,transparent);font-size:var(--text-sm);line-height:1.6}.food-review-actions{display:flex;justify-content:flex-end;gap:var(--space-2)}.cooking-context-count{display:flex;gap:var(--space-2);color:var(--text-faint);font-size:var(--text-xs)}.cooking-context-count span{padding:var(--space-1) var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.cooking-request{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:var(--space-3);margin-top:var(--space-4)}.cooking-request textarea{min-height:76px;padding:var(--space-3)}.cooking-request .btn{min-height:42px}.cooking-workbench{display:grid;grid-template-columns:minmax(190px,.55fr) minmax(0,1.75fr);min-height:560px;margin-top:var(--space-5);border-top:1px solid var(--border)}.cooking-plan-index{padding:var(--space-4);border-right:1px solid var(--border)}.cooking-index-title{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);color:var(--text-muted);font-size:var(--text-sm)}.cooking-plan-index>p{color:var(--text-faint);font-size:var(--text-sm)}.cooking-plan-index>button{display:grid;gap:var(--space-1);width:100%;padding:var(--space-3);border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text);text-align:left;cursor:pointer}.cooking-plan-index>button:hover,.cooking-plan-index>button.is-active{border-color:var(--border);background:var(--surface-2)}.cooking-plan-index>button.is-active{border-left-color:var(--series-2)}.cooking-plan-index>button span{color:var(--text-faint);font-size:var(--text-xs)}.cooking-plan-detail{min-width:0;padding:var(--space-5)}.cooking-plan-detail>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--surface-2)}.cooking-plan-detail h3,.cooking-plan-detail header p{margin:0}.cooking-plan-detail h3{margin-top:var(--space-1);color:var(--text-strong);font-size:var(--text-xl)}.cooking-plan-detail header p{margin-top:var(--space-2);color:var(--text-muted);line-height:1.6}.cooking-plan-meta{display:flex;flex-wrap:wrap;gap:var(--space-4);padding-block:var(--space-3);color:var(--text-muted);font-size:var(--text-sm)}.cooking-plan-meta span,.food-snapshot-meta span{display:inline-flex;align-items:center;gap:var(--space-1)}.cooking-ingredients{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5);margin-top:var(--space-3)}.cooking-ingredients>div{min-width:0;padding:var(--space-4);border-top:2px solid var(--status-good);background:var(--surface-2)}.cooking-ingredients>div.has-missing{border-top-color:var(--status-warn)}.cooking-ingredients h4,.cooking-ingredients p,.cooking-ingredients ul{margin:0}.cooking-ingredients h4{margin-bottom:var(--space-2);color:var(--text-strong);font-size:var(--text-sm)}.cooking-ingredients p{color:var(--text-faint);font-size:var(--text-sm)}.cooking-ingredients ul{padding:0;list-style:none}.cooking-ingredients li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-3);padding-block:var(--space-2);border-bottom:1px solid var(--border);font-size:var(--text-sm)}.cooking-ingredients li strong{color:var(--text-muted);font-weight:500}.cooking-steps{display:grid;gap:var(--space-2);margin:var(--space-5) 0 0;padding:0;list-style:none}.cooking-steps li{display:grid;grid-template-columns:30px minmax(0,1fr);gap:var(--space-3);padding-block:var(--space-2)}.cooking-steps li>.num{display:grid;place-items:center;width:28px;height:28px;border:1px solid var(--border);border-radius:50%;color:var(--series-2)}.cooking-steps strong{color:var(--text-strong)}.cooking-steps p{margin:var(--space-1) 0 0;color:var(--text-muted);line-height:1.7}.cooking-notes{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);border-left:2px solid var(--series-1);background:color-mix(in srgb,var(--series-1) 6%,transparent)}.cooking-notes p{margin:var(--space-1) 0;color:var(--text-muted);line-height:1.6}.food-count{color:var(--text-faint)}.food-snapshot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--space-3);margin-top:var(--space-4)}.food-snapshot{position:relative;display:grid;grid-template-columns:112px minmax(0,1fr);min-height:112px;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:var(--bg)}.food-snapshot.is-stale{opacity:.68}.food-snapshot>img,.food-photo-placeholder{width:112px;height:100%;min-height:112px;object-fit:cover;background:var(--surface-2)}.food-photo-placeholder{display:grid;place-items:center;color:var(--text-faint)}.food-snapshot-body{display:grid;align-content:start;gap:var(--space-2);min-width:0;padding:var(--space-3) var(--space-5) var(--space-3) var(--space-3)}.food-snapshot-meta{display:flex;flex-wrap:wrap;gap:var(--space-2);color:var(--text-faint);font-size:var(--text-xs)}.food-snapshot-meta .is-warning{color:var(--status-warn)}.food-snapshot-body strong{color:var(--text-strong);line-height:1.45;overflow-wrap:anywhere}.food-snapshot-body p,.food-snapshot-body small{margin:0;color:var(--text-muted);font-size:var(--text-xs);line-height:1.6;overflow-wrap:anywhere}.food-snapshot-body small{color:var(--status-warn)}.food-delete{position:absolute;top:var(--space-2);right:var(--space-2);display:grid;place-items:center;width:28px;height:28px;padding:0;border:1px solid transparent;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--surface) 85%,transparent);color:var(--text-faint);cursor:pointer}.food-delete:hover{border-color:var(--status-bad);color:var(--status-bad)}@media(max-width:760px){.food-section-head{align-items:flex-start}.food-photo-actions{display:grid;width:100%}.food-note-field,.food-review,.cooking-request,.cooking-workbench,.cooking-ingredients{grid-template-columns:1fr}.food-note-field{align-items:start}.cooking-request .btn{width:100%}.cooking-plan-index{border-right:0;border-bottom:1px solid var(--border)}.cooking-plan-detail>header{display:grid}.food-snapshot-grid{grid-template-columns:1fr}}.cooking-history>ol{display:grid;gap:var(--space-3)}.cooking-history>ol>li{padding-top:var(--space-3);border-top:1px solid var(--surface-2)}.cooking-log-meta{display:flex;gap:var(--space-4);color:var(--text-faint);font-size:var(--text-xs)}.cooking-log-meta span{display:inline-flex;align-items:center;gap:var(--space-1)}.cooking-history p{margin:var(--space-2) 0;line-height:1.7}.recipe-pick{display:grid;place-items:center;align-content:center;gap:var(--space-2);color:var(--text-faint)}@media(max-width:760px){.meal-week-head{align-items:flex-start}.recipe-library{grid-template-columns:1fr}.recipe-index{border-right:0;border-bottom:1px solid var(--border)}.recipe-list{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}}.ctl{display:grid;gap:var(--space-3);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border)}.ctl-head{display:flex;align-items:baseline;justify-content:space-between}.ctl-head h4{margin:0;color:var(--text-strong);font-size:var(--text-md)}.ctl-total{color:var(--text-muted);font-size:var(--text-sm)}.ctl-legend{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin:0;padding:0;color:var(--text-muted);font-size:var(--text-sm);list-style:none}.ctl-legend li{display:flex;align-items:center;gap:var(--space-2)}.ctl-swatch{width:10px;height:10px;border-radius:3px}.ctl-scroll{overflow-x:auto}.ctl-grid{display:grid;grid-template-columns:72px minmax(320px,1fr);align-items:center;gap:var(--space-2) var(--space-3)}.ctl-row{display:contents}.ctl-lane-name{color:var(--text-muted);font-size:var(--text-xs);text-align:right;white-space:nowrap}.ctl-ruler{position:relative;height:14px}.ctl-tick{position:absolute;transform:translate(-50%);color:var(--text-faint);font-size:var(--text-xs)}.ctl-track{position:relative;height:30px;border-radius:var(--radius-sm);background:var(--surface-2)}.ctl-block{position:absolute;top:3px;bottom:3px;display:flex;align-items:center;min-width:3px;padding:0 6px;overflow:hidden;border-radius:4px;background:var(--series-1);color:#fff;font-size:var(--text-xs);white-space:nowrap}.ctl-block span{overflow:hidden;text-overflow:ellipsis}.ctl-block.is-waiting{border:1px dashed currentColor;background:transparent;color:var(--text-muted)}.ctl-dish-1{background:var(--series-1)}.ctl-dish-2{background:var(--series-2)}.ctl-dish-3{background:var(--series-3)}.ctl-dish-4{background:var(--series-4)}.ctl-dish-5{background:var(--series-5)}.ctl-block.is-waiting.ctl-dish-1{color:var(--series-1)}.ctl-block.is-waiting.ctl-dish-2{color:var(--series-2)}.ctl-block.is-waiting.ctl-dish-3{color:var(--series-3)}.ctl-block.is-waiting.ctl-dish-4{color:var(--series-4)}.ctl-block.is-waiting.ctl-dish-5{color:var(--series-5)}.ctl-list{display:grid;gap:var(--space-3);margin:var(--space-2) 0 0;padding:0;list-style:none}.ctl-list li{display:grid;grid-template-columns:44px minmax(0,1fr);gap:var(--space-3)}.ctl-at{color:var(--text-faint);font-size:var(--text-sm);text-align:right}.ctl-list strong{display:block;color:var(--text-strong);font-size:var(--text-md);font-weight:600}.ctl-list em{margin-right:var(--space-2);color:var(--text-muted);font-size:var(--text-sm);font-style:normal}.ctl-list p{margin:2px 0 0;color:var(--text-muted);line-height:1.6}.ctl-meta{display:block;margin-top:2px;color:var(--text-faint);font-size:var(--text-xs)}.ctl-list li.is-waiting .ctl-at{opacity:.6}.shop-group+.shop-group{margin-top:var(--space-4)}.shop-where{margin:0 0 var(--space-2);color:var(--text-faint);font-size:var(--text-xs)}.shop-list{display:grid;gap:var(--space-2);margin:0;padding:0;list-style:none}.shop-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--border)}.shop-list b{color:var(--text-strong);font-weight:600}.shop-amount{color:var(--text-muted);font-size:var(--text-sm)}.shop-pick{grid-column:1 / -1;margin:2px 0 0;color:var(--text-muted);font-size:var(--text-sm);line-height:1.6}.meal-art{margin:var(--space-2) 0 0}.meal-art img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-sm)}.meal-art-btn{display:inline-flex;align-items:center;gap:4px;margin-top:var(--space-2);padding:2px 6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-faint);font:inherit;font-size:var(--text-xs);cursor:pointer;opacity:0;transition:opacity var(--duration) ease,color var(--duration) ease}.meal-slot:hover .meal-art-btn,.meal-art-btn:focus-visible,.meal-art-btn:disabled{opacity:1}.meal-art-btn:hover:not(:disabled){color:var(--accent);border-color:var(--accent)}@media(hover:none){.meal-art-btn{opacity:1}}.meal-art-error{display:block;margin-top:var(--space-1);color:var(--status-bad);font-size:var(--text-xs)}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.meal-eaten{display:inline-flex;align-items:center;gap:3px;margin-top:var(--space-2);margin-right:var(--space-2);padding:2px 6px;border:1px solid var(--border);border-radius:var(--radius-full);background:transparent;color:var(--text-faint);font:inherit;font-size:var(--text-xs);cursor:pointer;transition:color var(--duration) ease,border-color var(--duration) ease}.meal-eaten:hover{color:var(--accent);border-color:var(--accent)}.meal-eaten.is-on{border-color:var(--status-good);color:var(--status-good)}.page-hero-dense:not(.page-hero-strip){min-height:clamp(170px,16vw,250px)}.page-hero-dense:not(.page-hero-strip) .page-hero-art{object-position:center 38%}.page-hero-dense:not(.page-hero-strip) .page-hero-art{mask-image:linear-gradient(to bottom,#000 0%,#000 84%,transparent 100%),linear-gradient(to right,transparent 0%,#000 22%);-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 84%,transparent 100%),linear-gradient(to right,transparent 0%,#000 22%)}.page-hero-dense .page-hero-title{font-size:var(--text-lg)}.assistant-avatar{display:block;flex:none;margin-top:2px;line-height:0}.deemo-mark{display:block;border-radius:50%}.pseat-bet em{margin-left:3px;color:var(--accent);font-size:var(--text-xs);font-style:normal}.poker-equity-advice{display:flex;flex-direction:column;gap:1px}.poker-equity-advice b{color:var(--accent)}.poker-equity-sizes{color:var(--text-faint);font-variant-numeric:tabular-nums}.life-viewbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3)}.cal-cell-marks{display:flex;align-items:baseline;gap:var(--space-2);margin-top:auto;color:var(--text-faint);font-size:var(--text-xs)}.cal-week-head .cal-cell-marks{justify-content:center}.life-day-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4)}.life-day-head h3{margin:0;font-size:var(--text-lg);font-weight:600}.life-day-dow{margin-left:var(--space-3);color:var(--text-faint);font-size:var(--text-sm);font-weight:400}.life-day-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--space-5)}.life-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-2)}.life-section-head h4{margin:0;color:var(--text-muted);font-size:var(--text-sm);font-weight:600}.life-empty{margin:0;color:var(--text-faint);font-size:var(--text-sm)}.life-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.life-item{display:grid;grid-template-columns:44px 1fr auto;gap:var(--space-2);align-items:baseline;width:100%;padding:var(--space-2) var(--space-3);border:none;border-left:3px solid var(--cat-color, var(--border));border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);text-align:left;cursor:pointer;transition:background var(--duration) ease}.life-item:hover{background:var(--surface-3)}.life-item-blank{background:transparent;border-left-color:transparent;border:1px dashed var(--border)}.life-item-time{color:var(--text-muted);font-size:var(--text-sm)}.life-item-main{display:flex;flex-direction:column;gap:2px;min-width:0}.life-item-title{overflow:hidden;text-overflow:ellipsis}.life-item-desc{color:var(--text-muted);font-size:var(--text-xs)}.life-item-meta{color:var(--text-faint);font-size:var(--text-xs);text-align:right;white-space:nowrap}.life-unknown{color:var(--text-faint)}.life-energy{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-5);margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--border);color:var(--text-muted);font-size:var(--text-sm)}.life-energy-cell b{margin-right:2px;color:var(--text-strong);font-size:var(--text-lg)}.life-energy-cell.over b{color:var(--status-warn)}.life-energy-cell em,.life-energy-hint{margin-left:var(--space-2);color:var(--text-faint);font-size:var(--text-xs);font-style:normal}.life-body-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)}.life-body-big{color:var(--text-strong);font-size:var(--text-hero);line-height:1}.life-body-unit{color:var(--text-muted)}.life-body-delta{margin-left:var(--space-2);color:var(--status-warn);font-size:var(--text-sm)}.life-body-delta.down{color:var(--status-good)}.life-body-latest{margin-left:auto;color:var(--text-faint);font-size:var(--text-xs)}.life-target{margin:0 0 var(--space-3);color:var(--text-muted);font-size:var(--text-sm);line-height:1.6}.life-target b{color:var(--text-strong);font-size:var(--text-lg)}.life-target.missing{color:var(--text-faint)}.life-metric-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-sm)}.life-metric-list li{display:grid;grid-template-columns:96px 1fr auto;gap:var(--space-3);align-items:baseline;padding:var(--space-1) 0;border-bottom:1px solid var(--border)}.life-metric-del{border:none;background:none;color:var(--text-faint);font-size:var(--text-xs);cursor:pointer}.life-metric-del:hover{color:var(--status-bad)}.life-plan-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.life-plan-list li{padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2)}.life-plan-list li.is-off{opacity:.6}.life-plan-head{display:flex;align-items:baseline;gap:var(--space-3)}.life-plan-day{color:var(--accent);font-size:var(--text-sm)}.life-plan-kind,.life-plan-off{color:var(--text-faint);font-size:var(--text-xs)}.life-plan-edit{margin-left:auto;border:none;background:none;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer}.life-plan-edit:hover{color:var(--accent)}.life-plan-items,.life-plan-note{margin:var(--space-2) 0 0;color:var(--text-muted);font-size:var(--text-sm)}.life-plan-note{color:var(--text-faint);font-size:var(--text-xs)}.life-plan-items-edit{display:flex;flex-direction:column;gap:var(--space-2)}@keyframes hero-settle{0%{min-height:clamp(260px,36vw,560px)}}@keyframes content-rise{0%{transform:translateY(40px);opacity:0}}.page-hero{animation:hero-settle 1.1s cubic-bezier(.16,.84,.24,1) both}.page-hero-dense{animation-name:hero-settle-dense}.page-hero-strip{animation:none}@keyframes hero-settle-dense{0%{min-height:clamp(240px,26vw,400px)}}.page-col>*:not(.page-hero){animation:content-rise .82s .22s cubic-bezier(.16,.84,.24,1) both}@media(prefers-reduced-motion:reduce){.page-hero,.page-col>*:not(.page-hero){animation:none}}.training-week{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.training-week li{display:flex;align-items:stretch;gap:var(--space-3)}.training-week li.is-done .training-title{color:var(--text-muted);text-decoration:line-through}.training-check{flex:none;width:30px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);color:transparent;font-size:var(--text-sm);cursor:pointer}.training-check:hover{border-color:var(--accent);color:var(--text-faint)}.training-check.is-on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.training-item{flex:1;min-width:0;display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);color:inherit;text-align:left;cursor:pointer}.training-item:hover{border-color:var(--accent)}.training-day{flex:none;width:3em;color:var(--text-muted);font-size:var(--text-sm)}.training-main{flex:1;min-width:0;display:flex;align-items:baseline;gap:var(--space-2)}.training-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.training-kind,.training-meta{flex:none;color:var(--text-faint);font-size:var(--text-sm)}.training-stats{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-bottom:var(--space-3);color:var(--text-muted);font-size:var(--text-sm)}.training-stats b{color:var(--text);font-size:var(--text-lg)}.training-pick{width:auto;min-width:8em}.diary{display:flex;flex-direction:column;gap:var(--space-5)}.diary-day{padding-left:var(--space-4);border-left:2px solid var(--border)}.diary-day.is-today{border-left-color:var(--accent)}.diary-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-2)}.diary-head h4{margin:0;font-size:var(--text-md)}.diary-dow{margin-left:var(--space-2);color:var(--text-faint);font-size:var(--text-sm);font-weight:400}.diary-kcal{color:var(--text-muted);font-size:var(--text-sm)}.diary-kcal em{margin-left:var(--space-1);color:var(--text-faint);font-style:normal}.diary-meals{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.diary-meals li{display:flex;align-items:baseline;gap:var(--space-3)}.diary-type{flex:none;width:3em;color:var(--text-muted);font-size:var(--text-sm)}.diary-main{flex:1;min-width:0;display:flex;align-items:baseline;gap:var(--space-2)}.diary-note{color:var(--text-faint);font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.diary-meta{flex:none;color:var(--text-muted);font-size:var(--text-sm)}.diary-art{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-3)}.diary-art figure{margin:0;width:180px}.diary-art img{width:100%;border-radius:var(--radius-md);display:block}.diary-art figcaption{margin-top:var(--space-1);color:var(--text-faint);font-size:var(--text-sm)}.diary-draw{margin-top:var(--space-3)}.im-assist{width:100%;max-width:860px;margin:0 auto;padding:0 var(--space-5);display:flex;flex-direction:column;gap:var(--space-2)}.im-assist-bar{display:flex;gap:var(--space-2)}.im-assist-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-full);background:transparent;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer}.im-assist-btn:hover:not(:disabled){border-color:var(--accent);color:var(--text)}.im-assist-btn:disabled{opacity:.45;cursor:default}.im-assist-replies{display:flex;flex-wrap:wrap;gap:var(--space-2)}.im-assist-reply{padding:var(--space-2) var(--space-3);border:1px dashed var(--border);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text);font-size:var(--text-md);text-align:left;cursor:pointer}.im-assist-reply:hover{border-style:solid;border-color:var(--accent)}.im-assist-error{margin:0;color:var(--status-bad);font-size:var(--text-sm)}.im-assist-reply-card{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-2)}.im-unread{margin:var(--space-3) 0 var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-2);overflow:hidden}.im-unread-head{width:100%;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:0;background:none;color:var(--text);font-size:var(--text-md);text-align:left;cursor:pointer}.im-unread-head b{flex:1;min-width:0;font-weight:600}.im-unread-count,.im-unread-head>span[aria-hidden]{flex:none;color:var(--text-faint);font-size:var(--text-sm)}.im-unread-points{margin:0;padding:0 var(--space-4) var(--space-4) calc(var(--space-4) + 1.2em);color:var(--text-muted);font-size:var(--text-md);display:flex;flex-direction:column;gap:var(--space-2)}.hand-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.hand-row{width:100%;display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-3) var(--space-2);border:0;border-bottom:1px solid var(--border);background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.hand-row:hover{background:var(--surface-2)}.hand-time{flex:1;color:var(--text-muted)}.hand-net{font-variant-numeric:tabular-nums;font-weight:600}.hand-net.win{color:var(--status-good)}.hand-net.lose{color:var(--status-bad)}.hand-kind,.hand-reviewed{color:var(--text-faint);font-size:var(--text-sm)}.poker-replay{display:flex;flex-direction:column;gap:var(--space-3);width:100%}.poker-replay-nav{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.poker-replay-slider{flex:1;min-width:120px}.poker-replay-count,.poker-replay-line,.poker-replay-leaks,.poker-replay-broken{margin:0;color:var(--text-muted);font-variant-numeric:tabular-nums}.poker-replay-line em{margin-left:var(--space-2);color:var(--text-faint);font-style:normal}.poker-point{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);border-left:3px solid var(--border);background:var(--surface-2)}.poker-point.sev-warn{border-left-color:var(--accent)}.poker-point.sev-bad{border-left-color:var(--status-bad)}.poker-point-head{display:flex;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.poker-point-head span{color:var(--text-muted);font-variant-numeric:tabular-nums}.poker-point-body{display:flex;flex-direction:column;gap:2px}.poker-point-body p{margin:0}.poker-point-body small{margin-left:var(--space-2);color:var(--text-faint)}.poker-point-ev{margin:0;color:var(--text-muted)}.poker-point-ev b{font-variant-numeric:tabular-nums}.poker-verdict{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--border)}.poker-verdict p{margin:0}.poker-verdict-here{color:var(--text)}.poker-verdict-text,.poker-verdict-drill{color:var(--text-muted)}.poker-verdict-error{color:var(--status-bad)}.btn:active:not(:disabled),.tab:active,.cell-edit:active,.page-hero-toggle:active,.training-check:active{scale:.97}.btn-primary:active:not(:disabled){filter:brightness(.94)}.hand-row:active{background:var(--surface-3)}.btn:focus-visible,.tab:focus-visible,.cell-edit:focus-visible,.page-hero-toggle:focus-visible,.training-check:focus-visible,.hand-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.input:focus-visible{box-shadow:var(--ring)}@media(prefers-reduced-motion:reduce){.btn:active:not(:disabled),.tab:active,.cell-edit:active,.page-hero-toggle:active,.training-check:active{scale:none}}.skel{position:relative;overflow:hidden;background:var(--surface-2);border-radius:var(--radius-sm)}.skel:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--text) 7%,transparent),transparent);animation:skel-sweep 1.4s ease infinite}@keyframes skel-sweep{to{transform:translate(100%)}}.page-skel{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5) 0}.skel-hero{height:64px;border-radius:var(--radius-lg)}.skel-stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.skel-stat{height:84px;border-radius:var(--radius-md)}.skel-card{height:180px;border-radius:var(--radius-md)}.skel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.skel-photo{aspect-ratio:1;border-radius:var(--radius-md)}.skel-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-1)}.skel-cell{height:72px;border-radius:var(--radius-sm)}.skel-chat{display:flex;flex-direction:column;gap:var(--space-3);width:100%;max-width:720px;margin:0 auto}.skel-bubble{height:40px;width:46%;border-radius:var(--radius-lg)}.skel-bubble.right{align-self:flex-end}.loading-bar{display:block;width:160px;height:4px;margin:var(--space-3) auto 0;border-radius:var(--radius-full)}@media(prefers-reduced-motion:reduce){.skel:after{animation:none}}.topbar-left{display:flex;align-items:center;gap:var(--space-6);min-width:0}.topbar-right{display:flex;align-items:center;gap:var(--space-3)}.topbar-user{color:var(--text-faint);font-size:var(--text-sm)}.brand{display:inline-flex;align-items:center;gap:var(--space-2)}.tabs{align-items:center;flex-wrap:wrap}.tab{position:relative;display:inline-flex;align-items:center;gap:var(--space-2);white-space:nowrap}.tab svg{flex:none;opacity:.75}.tab.active svg,.tab:hover svg{opacity:1}.tab:after{content:"";position:absolute;left:var(--space-3);right:var(--space-3);bottom:2px;height:2px;border-radius:var(--radius-full);background:var(--accent);opacity:0;transition:opacity var(--duration) ease}.tab.active:after{opacity:1}.tab-icon{padding:var(--space-2)}.tab-icon:after{content:none}.tab-sep{width:1px;height:16px;background:var(--border);margin:0 var(--space-2);flex:none}.boot{height:100%;display:grid;place-items:center}.boot .deemo-mark{animation:boot-pulse 1.6s ease-in-out infinite}@keyframes boot-pulse{50%{opacity:.55;transform:scale(.96)}}@media(prefers-reduced-motion:reduce){.boot .deemo-mark{animation:none}}@keyframes page-enter{0%{transform:translateY(8px);opacity:0}}html[data-booted] .page-hero{animation:none}html[data-booted] .page-col>*:not(.page-hero){animation:page-enter var(--duration-slow) var(--ease-out) both}@media(prefers-reduced-motion:reduce){html[data-booted] .page-col>*:not(.page-hero){animation:none}}.page-hero-toggle{display:inline-flex;align-items:center;justify-content:center}.chart-strip{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-1);font-size:var(--text-xs);color:var(--text-faint)}.chart-strip-sub{margin-top:var(--space-4)}.chart-strip b{font-size:var(--text-sm);font-weight:600;color:var(--text-muted)}.chart-facts{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-6);margin:var(--space-4) 0 0;padding:var(--space-3) 0 0;border-top:1px solid var(--grid)}.chart-facts>div{display:flex;flex-direction:column;gap:2px}.chart-facts dt{font-size:var(--text-xs);color:var(--text-faint)}.chart-facts dd{margin:0;font-size:var(--text-md);color:var(--text)}.chart-facts dd span{font-size:var(--text-xs);color:var(--text-faint)}.page-hero-strip .page-hero-art{opacity:.55;filter:var(--art-filter) blur(36px) saturate(1.5) brightness(1.12);scale:1.25;mask-image:linear-gradient(to right,transparent 0%,#000 42%),linear-gradient(to bottom,#000 35%,transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0%,#000 42%),linear-gradient(to bottom,#000 35%,transparent 100%);mask-composite:intersect;-webkit-mask-composite:source-in}.tiles{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.persona-item b{flex:none;white-space:nowrap}.persona-item span{min-width:0}.btn-primary:not(:disabled){background-image:linear-gradient(180deg,#ffffff29,#fff0 65%);box-shadow:inset 0 1px #ffffff2e,0 1px 2px #0000002e}.btn-primary:hover:not(:disabled){filter:brightness(1.06)}.seg .btn-primary{background-image:none;box-shadow:var(--shadow-card);filter:none}.card{box-shadow:inset 0 1px 0 light-dark(rgb(255 255 255 / 0%),rgb(255 255 255 / 5%)),var(--shadow-card)}@media(max-width:640px){.app{grid-template-rows:minmax(0,1fr) auto;height:100dvh}.page{grid-row:1;padding-top:env(safe-area-inset-top)}.topbar{display:grid;grid-row:2;grid-template-columns:minmax(0,1fr) 44px;align-items:stretch;min-height:58px;padding:var(--space-1) var(--space-2) calc(var(--space-1) + env(safe-area-inset-bottom));overflow:hidden;border-top:1px solid var(--border);border-bottom:none;background:var(--surface)}.topbar-left{display:block;min-width:0;overflow:hidden}.brand,.topbar-user{display:none}.tabs{display:flex;width:100%;height:100%;align-items:stretch;gap:0;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;flex-wrap:nowrap}.tabs::-webkit-scrollbar{display:none}.tab-sep{display:none}.tab{flex:0 0 56px;flex-direction:column;justify-content:center;gap:2px;padding:var(--space-1) 2px;font-size:var(--text-xs);white-space:nowrap}.tab svg{width:18px;height:18px}.topbar-right{display:block;min-width:0}.topbar-right .tab-icon{width:44px;min-width:44px;height:100%;padding:var(--space-1)}.page-body{padding:var(--space-3)}}
