:root{color-scheme:light;--color-bg: #faf7f2;--color-bg-sunk: #f4efe7;--color-surface: #ffffff;--color-surface-2: #f2ece3;--color-text: #2a2621;--color-text-soft: rgba(42, 38, 33, .75);--color-text-faint: rgba(42, 38, 33, .55);--color-divider: rgba(42, 38, 33, .13);--color-divider-strong: rgba(42, 38, 33, .24);--color-accent-100: #fbf6ea;--color-accent-200: #f5e9ce;--color-accent-300: #ebd9ac;--color-accent-400: #dcc488;--color-accent-500: #cdb16f;--color-accent-600: #c4a25e;--color-accent-700: #8a6e33;--color-accent-800: #6b5427;--color-accent-900: #473818;--color-accent: var(--color-accent-600);--color-on-accent: #2a2621;--color-accent-solid: var(--color-accent-600);--color-sage-100: #eaf0ec;--color-sage-200: #d3e0d8;--color-sage-300: #aec7b8;--color-sage-400: #86a793;--color-sage-500: #5b7a64;--color-sage-600: #4a6653;--color-sage-700: #3a5142;--color-sage-800: #2c3e33;--color-sage-900: #1f2b24;--color-sage: var(--color-sage-500);--color-on-sage: #ffffff;--color-sage-solid: var(--color-sage-500);--color-clay-100: #faeee9;--color-clay-200: #f0d5c9;--color-clay-300: #e3bcae;--color-clay-500: #b5735a;--color-clay-600: #9a5c45;--color-clay-700: #7f4a37;--color-neutral-100: #f7f4ee;--color-neutral-200: #ebe6dd;--color-neutral-300: #d9d2c6;--color-neutral-400: #bcb4a6;--color-neutral-500: #9a9285;--color-neutral-600: #7a7265;--color-neutral-700: #5c5449;--color-neutral-800: #423c34;--color-neutral-900: #2a2621;--font-heading: Inter, "Helvetica Neue", system-ui, sans-serif;--font-body: Inter, "Helvetica Neue", system-ui, sans-serif;--font-ui: Inter, "Helvetica Neue", system-ui, sans-serif;--font-num: Inter, "Helvetica Neue", system-ui, sans-serif;--text-xs: 13px;--text-sm: 14.5px;--text-base: 17px;--text-md: 17px;--text-lg: 20px;--text-xl: 24px;--text-2xl: 30px;--text-3xl: 38px;--text-4xl: 46px;--leading-tight: 1.15;--leading-normal: 1.55;--leading-airy: 1.7;--tracking-kicker: .09em;--tracking-label: 0;--tracking-wide: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--radius-sm: 8px;--sidebar-w: 246px;--radius-md: 12px;--radius-lg: 16px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(42, 38, 33, .07);--shadow-md: 0 2px 8px rgba(42, 38, 33, .07), 0 10px 28px rgba(42, 38, 33, .06);--shadow-lg: 0 6px 18px rgba(42, 38, 33, .1), 0 26px 64px rgba(42, 38, 33, .12);--ring: 0 0 0 3px var(--color-accent-300);--layout-max: 1240px;--nav-h: 66px;--tabbar-h: 66px;--ease: cubic-bezier(.22, .61, .36, 1)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--color-bg: #221f1a;--color-bg-sunk: #1a1814;--color-surface: #2c2822;--color-surface-2: #38322a;--color-text: #f5efe4;--color-text-soft: rgba(245, 239, 228, .78);--color-text-faint: rgba(245, 239, 228, .58);--color-divider: rgba(245, 239, 228, .16);--color-divider-strong: rgba(245, 239, 228, .28);--color-accent: var(--color-accent-400);--color-sage: var(--color-sage-400);--color-accent-100: #38301d;--color-accent-200: #4a4028;--color-sage-100: #23302a;--color-sage-200: #2e4038;--color-clay-100: #3a251c;--color-clay-200: #4d3327;--color-accent-700: var(--color-accent-300);--color-sage-700: var(--color-sage-300);--color-clay-700: var(--color-clay-300);--color-accent-solid: var(--color-accent-500);--color-on-accent: #221f1a;--color-sage-solid: var(--color-sage-600);--color-on-sage: #ffffff;--shadow-sm: 0 1px 2px rgb(0 0 0 / .34);--shadow-md: 0 2px 8px rgb(0 0 0 / .38), 0 10px 28px rgb(0 0 0 / .32);--shadow-lg: 0 6px 18px rgb(0 0 0 / .42), 0 26px 64px rgb(0 0 0 / .46)}}:root[data-theme=dark]{color-scheme:dark;--color-bg: #221f1a;--color-bg-sunk: #1a1814;--color-surface: #2c2822;--color-surface-2: #38322a;--color-text: #f5efe4;--color-text-soft: rgba(245, 239, 228, .78);--color-text-faint: rgba(245, 239, 228, .58);--color-divider: rgba(245, 239, 228, .16);--color-divider-strong: rgba(245, 239, 228, .28);--color-accent: var(--color-accent-400);--color-sage: var(--color-sage-400);--color-accent-100: #38301d;--color-accent-200: #4a4028;--color-sage-100: #23302a;--color-sage-200: #2e4038;--color-clay-100: #3a251c;--color-clay-200: #4d3327;--color-accent-700: var(--color-accent-300);--color-sage-700: var(--color-sage-300);--color-clay-700: var(--color-clay-300);--color-accent-solid: var(--color-accent-500);--color-on-accent: #221f1a;--color-sage-solid: var(--color-sage-600);--color-on-sage: #ffffff}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100dvh;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"kern" 1,"liga" 1;overflow-wrap:break-word}#root{position:relative;z-index:1;min-height:100dvh}h1,h2,h3,h4,h5{font-family:var(--font-heading);font-weight:700;line-height:var(--leading-tight);letter-spacing:-.015em}img,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--color-accent-700);text-decoration-thickness:1px;text-underline-offset:3px}a:hover{color:var(--color-accent-800)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}::selection{background:var(--color-accent-200);color:var(--color-accent-900)}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}*{scrollbar-width:thin;scrollbar-color:var(--color-neutral-300) transparent}*::-webkit-scrollbar{width:9px;height:9px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:var(--color-neutral-300);border-radius:var(--radius-pill);border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background-color:var(--color-neutral-400);background-clip:content-box}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.kicker{display:block;font-family:var(--font-heading);font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--color-accent-700);margin-bottom:var(--space-2)}.section-title{font-family:var(--font-heading);font-weight:700;letter-spacing:-.015em;margin:0}.display{font-family:var(--font-heading);font-weight:800;font-size:var(--text-3xl);line-height:var(--leading-tight);letter-spacing:-.025em}.label{font-family:var(--font-heading);font-size:var(--text-sm);font-weight:600;color:var(--color-text-soft)}.muted{color:var(--color-text-soft);font-size:var(--text-sm)}.faint{color:var(--color-text-faint)}.hr{height:1px;border:0;background:var(--color-divider);margin:var(--space-4) 0}.rule-accent{height:3px;border:0;border-radius:3px;background:linear-gradient(to right,var(--color-accent) 0 22%,var(--color-divider) 22%);margin:var(--space-2) 0 var(--space-5)}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-5)}.hero-wrap{position:relative;margin-bottom:var(--space-5)}.hero-wrap>.hero{margin-bottom:0}.hero{position:relative;border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-5);background:var(--color-surface-2)}.hero-tall{height:250px}.hero-slim{height:132px}.hero img{width:100%;height:100%;object-fit:cover;object-position:center 34%}.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--color-bg) 0 34%,color-mix(in srgb,var(--color-bg) 55%,transparent) 62%,transparent)}.hero-body{position:absolute;z-index:2;left:var(--space-6);top:50%;transform:translateY(-50%);max-width:500px;padding-right:var(--space-4)}@media(max-width:700px){.hero-tall{height:200px}.hero-body{left:var(--space-4)}.hero:after{background:linear-gradient(90deg,var(--color-bg) 0 58%,color-mix(in srgb,var(--color-bg) 70%,transparent) 85%,transparent)}}.card{background:var(--color-surface);border:1px solid var(--color-divider);border-radius:var(--radius-md);padding:var(--space-5);transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}.card-title{font-family:var(--font-heading);font-weight:700;font-size:var(--text-lg);margin:0 0 var(--space-1)}.card-body{font-size:var(--text-base);color:var(--color-text-soft);margin:0}.card-meta{font-size:var(--text-sm);color:var(--color-text-soft);margin:0}.elev-sm{box-shadow:var(--shadow-sm)}.elev-md{box-shadow:var(--shadow-md)}.elev-lg{box-shadow:var(--shadow-lg)}.card-accent{border:2px solid var(--color-accent);background:var(--color-accent-100)}.card-interactive{cursor:pointer}.card-interactive:hover{border-color:var(--color-accent-400);box-shadow:var(--shadow-md)}.btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-heading);font-size:var(--text-base);font-weight:600;line-height:1.2;padding:12px var(--space-5);border-radius:var(--radius-sm);border:2px solid var(--color-divider-strong);background:transparent;color:var(--color-text);cursor:pointer;white-space:nowrap;transition:background .16s var(--ease),border-color .16s var(--ease),color .16s var(--ease),transform .1s var(--ease)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-accent-solid);border-color:var(--color-accent-solid);color:var(--color-on-accent)}.btn-primary:hover:not(:disabled){background:var(--color-accent-600);border-color:var(--color-accent-600);filter:brightness(.94)}.btn-secondary:hover:not(:disabled){border-color:var(--color-accent);background:var(--color-accent-100)}.btn-ghost{border-color:transparent;padding-inline:var(--space-3);color:var(--color-accent-700);font-size:var(--text-sm)}.btn-ghost:hover:not(:disabled){background:var(--color-accent-100)}.btn-sage{background:var(--color-sage-solid);border-color:var(--color-sage-solid);color:var(--color-on-sage)}.btn-sage:hover:not(:disabled){filter:brightness(.92)}.btn-danger{border-color:var(--color-clay-300);color:var(--color-clay-700)}.btn-danger:hover:not(:disabled){background:var(--color-clay-100)}.btn-sm{font-size:var(--text-sm);padding:8px var(--space-3)}.btn-xs{font-size:var(--text-xs);padding:6px var(--space-3)}.btn-block{width:100%}.btn-icon{width:42px;height:42px;padding:0}.chip{font-family:var(--font-heading);font-size:var(--text-sm);font-weight:600;padding:9px var(--space-4);border:2px solid var(--color-divider-strong);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-soft);cursor:pointer;white-space:nowrap;transition:all .16s var(--ease)}.chip:hover{border-color:var(--color-accent-400);color:var(--color-accent-700)}.chip[aria-current=true],.chip[aria-current=page]{border-color:var(--color-accent);color:var(--color-accent-700);background:var(--color-accent-100)}.chip-row{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}.chip-row-scroll{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.chip-row-scroll::-webkit-scrollbar{display:none}.tag{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-heading);font-size:var(--text-xs);font-weight:600;padding:4px var(--space-3);border-radius:var(--radius-sm);border:1.5px solid var(--color-divider-strong);color:var(--color-text-soft);white-space:nowrap;max-width:100%}.tag-wrap{white-space:normal;overflow-wrap:anywhere}.tag-accent{border-color:var(--color-accent-300);background:var(--color-accent-100);color:var(--color-accent-700)}.tag-sage{border-color:var(--color-sage-300);background:var(--color-sage-100);color:var(--color-sage-700)}.tag-clay{border-color:var(--color-clay-300);background:var(--color-clay-100);color:var(--color-clay-700)}.tag-neutral{border-color:var(--color-divider-strong);background:var(--color-bg-sunk)}.tag-outline{border-color:var(--color-divider-strong);background:transparent}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>span:first-child,.field>label{font-family:var(--font-heading);font-size:var(--text-sm);font-weight:600;color:var(--color-text)}.input{width:100%;min-width:0;font-family:var(--font-body);font-size:var(--text-base);padding:12px var(--space-4);border:2px solid var(--color-divider-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);transition:border-color .16s var(--ease),box-shadow .16s var(--ease)}.input::placeholder{color:var(--color-text-faint)}.input:hover{border-color:var(--color-accent-400)}.input:focus{outline:none;border-color:var(--color-accent);box-shadow:var(--ring)}textarea.input{resize:vertical;line-height:var(--leading-normal)}select.input{appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:right 18px center,right 12px center;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:var(--space-7)}.input-sm{font-size:var(--text-sm);padding:8px var(--space-3)}.input-xs{font-size:var(--text-xs);padding:6px var(--space-2)}.input-pill{border-radius:var(--radius-sm)}.check{display:inline-flex;align-items:center;gap:9px;font-size:var(--text-base);cursor:pointer;-webkit-user-select:none;user-select:none}.check input[type=checkbox]{appearance:none;width:22px;height:22px;flex-shrink:0;border:2px solid var(--color-divider-strong);border-radius:6px;background:var(--color-surface);cursor:pointer;display:grid;place-content:center;transition:all .14s var(--ease)}.check input[type=checkbox]:after{content:"";width:11px;height:6px;border-left:2.5px solid #fff;border-bottom:2.5px solid #fff;transform:rotate(-45deg) translate(1px,-1.5px);opacity:0}.check input[type=checkbox]:checked{background:var(--color-accent-solid);border-color:var(--color-accent-solid)}.check input[type=checkbox]:checked:after{opacity:1;border-color:var(--color-on-accent)}.form-error{font-size:var(--text-base);font-weight:500;color:var(--color-clay-700);margin:var(--space-2) 0 0}.table-wrap{overflow-x:auto;border:1px solid var(--color-divider);border-radius:var(--radius-md);background:var(--color-surface)}.table{width:100%;border-collapse:collapse;font-size:var(--text-base)}.table th{text-align:left;font-family:var(--font-heading);font-weight:700;font-size:var(--text-sm);color:var(--color-text);padding:var(--space-4);background:var(--color-surface-2);border-bottom:2px solid var(--color-divider-strong);white-space:nowrap}.table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.table th.sortable:hover{color:var(--color-accent-700)}.table td{padding:var(--space-4);border-bottom:1px solid var(--color-divider);vertical-align:middle}.table tbody tr:last-child td{border-bottom:0}.table tbody tr:hover{background:var(--color-accent-100)}.table .cell-strong{font-weight:700}.table .cell-actions{display:flex;gap:var(--space-2);white-space:nowrap}.empty{padding:var(--space-7) var(--space-4);text-align:center;color:var(--color-text-soft);font-size:var(--text-lg);font-weight:500}.dialog-backdrop{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:var(--space-4);background:#221f1a80;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade-in .18s var(--ease)}.dialog{width:100%;max-width:600px;max-height:min(90dvh,940px);display:flex;flex-direction:column;background:var(--color-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:rise .22s var(--ease);overflow:hidden}.dialog-title{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-5);font-family:var(--font-heading);font-size:var(--text-xl);font-weight:700;letter-spacing:-.015em;border-bottom:1px solid var(--color-divider);background:var(--color-surface)}.dialog-body{padding:var(--space-5);overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-4)}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-divider);background:var(--color-surface);flex-wrap:wrap}.close{background:none;border:0;cursor:pointer;font-size:var(--text-2xl);line-height:1;color:var(--color-text-soft);padding:2px 8px;border-radius:var(--radius-sm)}.close:hover{color:var(--color-text);background:var(--color-bg-sunk)}@keyframes fade-in{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(10px) scale(.99)}}.line-item{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--color-divider)}.line-item:last-child{border-bottom:0}.line-item-main{display:flex;flex-direction:column;gap:3px;min-width:0}.line-item-title{font-weight:700;font-size:var(--text-base)}.line-item-sub{font-size:var(--text-sm);color:var(--color-text-soft)}.scroll-y{overflow-y:auto}.grid{display:grid;gap:var(--space-4)}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-auto{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}@media(max-width:980px){.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.grid-2,.grid-3,.grid-4{grid-template-columns:minmax(0,1fr)}}.row{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap}.row-tight{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.spacer{flex:1}.avatar{width:30px;height:30px;flex-shrink:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-heading);font-size:var(--text-xs);font-weight:700;background:var(--color-accent-solid);color:var(--color-on-accent)}.avatar-lg{width:48px;height:48px;font-size:var(--text-base)}.meter{height:10px;border-radius:var(--radius-pill);background:var(--color-bg-sunk);overflow:hidden;border:1px solid var(--color-divider)}.meter-fill{height:100%;border-radius:var(--radius-pill);transition:width .5s var(--ease)}.plate{border:6px solid var(--color-surface);outline:1px solid var(--color-divider);background:var(--color-surface-2);border-radius:var(--radius-md)}.money{font-variant-numeric:tabular-nums;font-weight:700}.money-sage{color:var(--color-sage-700)}.text-right{text-align:right}.nowrap{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-2{margin-bottom:var(--space-2)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.hero-actions{position:absolute;z-index:2;right:var(--space-5);top:var(--space-4);display:flex;gap:var(--space-2);flex-wrap:wrap;justify-content:flex-end}@media(max-width:700px){.hero-actions{position:static;padding:var(--space-3) 0 0;justify-content:flex-start}}.link-cell{background:none;border:0;padding:0;font:inherit;font-weight:700;color:var(--color-accent-700);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1.5px;cursor:pointer;text-align:left}.link-cell:hover{color:var(--color-accent-800);text-decoration-thickness:2.5px}.chart-tick{font-size:var(--text-xs);color:var(--color-text-soft);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden}.segmented{display:inline-flex;background:var(--color-surface-2);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:3px;gap:3px;flex-wrap:wrap}.segmented>button{appearance:none;border:0;background:transparent;color:var(--color-text-soft);font:inherit;font-size:var(--text-sm);font-weight:600;padding:7px 12px;border-radius:calc(var(--radius-md) - 3px);cursor:pointer;white-space:nowrap;transition:background .12s ease,color .12s ease;min-height:36px}.segmented>button:hover{color:var(--color-text)}.segmented>button.is-on{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}.segmented>button:focus-visible{outline:2px solid var(--color-accent-solid);outline-offset:1px}.shift-cell{width:100%;min-width:46px;min-height:38px;border:1px solid var(--color-line);border-left-width:4px;border-left-color:transparent;border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-faint);font:inherit;font-size:var(--text-sm);font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer;padding:4px 6px;transition:background .12s ease,border-color .12s ease,color .12s ease}.shift-cell:hover{border-color:var(--color-accent-400);color:var(--color-text)}.shift-cell.is-set{background:var(--color-surface-2);color:var(--color-text)}.shift-cell.is-off{color:var(--color-text-soft);background:transparent;border-style:dashed}.shift-cell:focus-visible{outline:2px solid var(--color-accent-solid);outline-offset:1px}.schedule-grid th,.schedule-grid td{vertical-align:middle}.pick-row{display:flex;align-items:center;gap:var(--space-2);width:100%;text-align:left;padding:11px var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:var(--text-md);cursor:pointer;min-height:46px}.pick-row:hover{border-color:var(--color-accent-400);background:var(--color-surface-2)}.pick-row.is-on{border-color:var(--color-accent-solid);background:var(--color-accent-100)}.pick-row:focus-visible{outline:2px solid var(--color-accent-solid);outline-offset:1px}.cal-head,.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.cal-head span{text-align:center;font-size:var(--text-xs);font-weight:700;color:var(--color-text-soft);padding-bottom:4px}.cal-day{aspect-ratio:1;min-height:34px;display:grid;place-items:center;border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-soft);font:inherit;font-size:var(--text-sm);font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer;transition:border-color .12s ease,background .12s ease}.cal-day:hover:not(:disabled){border-color:var(--color-accent-400)}.cal-day.is-today{border-color:var(--color-accent-solid);border-width:2px}.cal-day:disabled{opacity:.4;cursor:default}.cal-day:focus-visible{outline:2px solid var(--color-accent-solid);outline-offset:1px}.pay-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2);padding:var(--space-3);background:var(--color-surface-2);border-radius:var(--radius-sm)}.loan-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:9px var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-sm);font-size:var(--text-sm)}.nav-slot{display:inline-flex;align-items:center;gap:6px}.nav-divider{width:1px;height:22px;background:var(--color-line);margin:0 4px;flex-shrink:0}.expiry-list{display:grid;gap:6px}.expiry-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto auto auto;gap:var(--space-3);align-items:center;font-size:var(--text-sm);padding:7px var(--space-3);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-sm)}.expiry-dot{width:10px;height:10px;border-radius:50%;background:var(--color-line)}.band-expired .expiry-dot,.band-week .expiry-dot{background:var(--color-clay-500)}.band-month .expiry-dot{background:var(--color-accent-500)}.band-quarter .expiry-dot{background:var(--color-sage-500)}.band-expired{border-color:var(--color-clay-300)}@media(max-width:700px){.expiry-row{grid-template-columns:10px minmax(0,1fr);row-gap:2px}.expiry-row>:nth-child(n+3){grid-column:2}}.brand-logo,.logo-preview{width:32px;height:32px;flex-shrink:0;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:var(--color-surface-2)}.brand-logo img,.logo-preview img{width:100%;height:100%;object-fit:cover}.logo-preview{width:56px;height:56px}.dash-split{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:var(--space-4)}@media(max-width:900px){.dash-split{grid-template-columns:minmax(0,1fr)}}.month-day{min-height:54px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-soft);font:inherit;cursor:pointer;padding:4px;transition:border-color .12s ease,background .12s ease}.month-day:hover{border-color:var(--color-accent-400);background:var(--color-surface-2)}.month-day.is-today{border-color:var(--color-accent-solid);border-width:2px}.month-day.has-bookings{background:var(--color-sage-100);border-color:var(--color-sage-300)}.month-day:focus-visible{outline:2px solid var(--color-accent-solid);outline-offset:1px}.month-day-num{font-size:var(--text-sm);font-weight:600;font-variant-numeric:tabular-nums}.month-day-count{font-size:var(--text-xs);font-weight:700;color:var(--color-sage-700);line-height:1}.reminder-list{display:grid;gap:6px}.reminder-row{display:grid;grid-template-columns:30px minmax(0,1fr) 16px;align-items:center;gap:var(--space-3);width:100%;text-align:left;padding:10px var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;cursor:pointer;min-height:54px;transition:border-color .12s ease,background .12s ease}.reminder-row:hover{border-color:var(--color-accent-400);background:var(--color-surface-2)}.reminder-row:focus-visible{outline:2px solid var(--color-accent-solid);outline-offset:1px}.reminder-row>svg{opacity:.5}.reminder-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:50%}.reminder-icon.tone-clay{background:var(--color-clay-100);color:var(--color-clay-700)}.reminder-icon.tone-accent{background:var(--color-accent-100);color:var(--color-accent-700)}.reminder-icon.tone-sage{background:var(--color-sage-100);color:var(--color-sage-700)}.reminder-title{display:block;font-weight:700;font-size:var(--text-sm)}.reminder-detail{display:block;font-size:var(--text-sm);color:var(--color-text-soft)}.kpi-value{font-family:var(--font-heading);font-size:clamp(var(--text-md),1.75vw,var(--text-2xl));font-weight:400;line-height:1.15;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.01em}.month-day.is-holiday.holiday-regular{background:var(--color-clay-100);border-color:var(--color-clay-300)}.month-day.is-holiday.holiday-special{background:var(--color-accent-100);border-color:var(--color-accent-300)}.month-day-dot{position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;background:var(--color-clay-500)}.month-day.holiday-special .month-day-dot{background:var(--color-accent-600)}.holiday-list{display:flex;flex-wrap:wrap;gap:5px}.holiday-chip{font-size:var(--text-xs);padding:3px 8px;border-radius:999px;border:1px solid var(--color-line);white-space:nowrap}.holiday-chip.holiday-regular{border-color:var(--color-clay-300);background:var(--color-clay-100);color:var(--color-clay-700)}.holiday-chip.holiday-special{border-color:var(--color-accent-300);background:var(--color-accent-100);color:var(--color-accent-700)}.shell{min-height:100dvh;display:flex;flex-direction:column}.masthead{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--color-bg) 88%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--color-divider);padding-top:env(safe-area-inset-top)}.masthead-inner{max-width:var(--layout-max);margin:0 auto;padding:var(--space-3) var(--space-5);display:flex;align-items:center;gap:var(--space-4)}.brand{display:flex;align-items:center;gap:var(--space-2);text-decoration:none;color:inherit;flex-shrink:0}.brand-mark{width:32px;height:32px;flex-shrink:0;border-radius:50%;border:1px solid var(--color-accent-400);display:grid;place-items:center;font-family:var(--font-heading);font-size:var(--text-lg);font-weight:800;line-height:1;color:var(--color-accent-700)}.brand-name{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:700;letter-spacing:-.015em;white-space:nowrap;line-height:1.1}.brand-sub{display:block;font-family:var(--font-heading);font-size:12.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-faint)}.nav-tabs{max-width:var(--layout-max);margin:0 auto;padding:0 var(--space-5) var(--space-3);display:flex;flex-wrap:wrap;gap:6px}.nav-tab{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-heading);font-size:var(--text-sm);font-weight:600;padding:8px 13px;min-height:38px;border:1px solid var(--color-line);background:var(--color-surface);color:var(--color-text-soft);cursor:pointer;text-decoration:none;white-space:nowrap;border-radius:999px;transition:color .18s var(--ease),background .18s var(--ease),border-color .18s var(--ease)}.nav-tab svg{opacity:.7}.nav-tab:hover{color:var(--color-accent-700);border-color:var(--color-accent-400)}.nav-tab.active{background:var(--color-accent-solid);border-color:var(--color-accent-solid);color:var(--color-on-accent)}.nav-tab.active svg{opacity:1}.nav-tab:focus-visible{outline:2px solid var(--color-accent-solid);outline-offset:2px}.masthead-actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.datestamp{max-width:var(--layout-max);margin:0 auto;padding:var(--space-3) var(--space-5) 0;font-family:var(--font-heading);font-size:var(--text-sm);font-weight:500;color:var(--color-text-soft);display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.main{flex:1;width:100%;max-width:var(--layout-max);margin:0 auto;padding:var(--space-5);padding-bottom:var(--space-8)}.tabbar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:40;background:color-mix(in srgb,var(--color-bg) 94%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px);border-top:1px solid var(--color-divider);padding-bottom:env(safe-area-inset-bottom)}.tabbar-inner{display:grid;grid-template-columns:repeat(5,1fr);align-items:stretch}.tabbar-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 2px 9px;border:0;background:none;cursor:pointer;text-decoration:none;color:var(--color-text-faint);font-family:var(--font-heading);font-size:12.5px;font-weight:600;transition:color .16s var(--ease)}.tabbar-item.active{color:var(--color-accent-700)}.tabbar-item.active .tabbar-icon{border-color:var(--color-accent);background:var(--color-accent-100)}.tabbar-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:var(--radius-pill);border:1px solid transparent;transition:all .16s var(--ease)}.tabbar-icon svg{width:20px;height:20px}.sheet-backdrop{position:fixed;inset:0;z-index:50;background:color-mix(in srgb,#221f1a 40%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fade-in .16s var(--ease)}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:51;background:var(--color-bg);border-top:1px solid var(--color-divider-strong);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:var(--shadow-lg);padding:var(--space-3) var(--space-4) calc(var(--space-5) + env(safe-area-inset-bottom));animation:sheet-up .24s var(--ease);max-height:80dvh;overflow-y:auto}.sheet-grip{width:36px;height:3px;border-radius:var(--radius-pill);background:var(--color-divider-strong);margin:0 auto var(--space-4)}.sheet-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2)}.sheet-link{display:flex;flex-direction:column;align-items:center;gap:7px;padding:var(--space-4) var(--space-2);border:1px solid var(--color-divider);border-radius:var(--radius-md);background:var(--color-surface);text-decoration:none;color:var(--color-text);font-family:var(--font-heading);font-size:var(--text-sm);text-align:center}.sheet-link.active{border-color:var(--color-accent);background:var(--color-accent-100);color:var(--color-accent-700)}.sheet-link svg{width:19px;height:19px;color:var(--color-accent-700)}@keyframes sheet-up{0%{transform:translateY(100%)}}@media(max-width:860px){.nav-tabs{display:none}.tabbar{display:block}.main{padding:var(--space-4) var(--space-3);padding-bottom:calc(var(--tabbar-h) + var(--space-7))}.masthead-inner{padding:var(--space-2) var(--space-3)}.datestamp{padding:var(--space-2) var(--space-3) 0}.brand-name{font-size:var(--text-lg)}.display{font-size:var(--text-2xl)}.dialog-backdrop{padding:0;place-items:end stretch}.dialog{max-width:none;max-height:92dvh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation:sheet-up .24s var(--ease)}.dialog-body{padding:var(--space-4)}.dialog-actions{padding:var(--space-3) var(--space-4) calc(var(--space-4) + env(safe-area-inset-bottom))}.dialog-actions .btn{flex:1}.page-head{gap:var(--space-3);margin-bottom:var(--space-4)}}@media(max-width:640px){.table-stack thead{display:none}.table-stack,.table-stack tbody,.table-stack tr,.table-stack td{display:block;width:100%}.table-stack tr{border:1px solid var(--color-divider);border-radius:var(--radius-md);background:var(--color-surface);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-2)}.table-stack tr:hover{background:var(--color-surface)}.table-stack td{border:0;padding:4px 0;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.table-stack td:before{content:attr(data-label);font-family:var(--font-heading);font-size:var(--text-sm);font-weight:600;color:var(--color-text-soft);flex-shrink:0}.table-stack td:empty{display:none}.table-wrap.is-stacked{border:0;background:transparent}}.sidebar{display:none}.shell-main{min-width:0}@media(min-width:1100px){.shell{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);align-items:start}.sidebar{display:flex;flex-direction:column;gap:var(--space-4);position:sticky;top:0;height:100dvh;overflow-y:auto;padding:var(--space-4) var(--space-3);border-right:1px solid var(--color-divider);background:var(--color-surface-2)}.nav-tabs,.masthead .brand{display:none}.masthead-inner{justify-content:flex-end;padding-bottom:0}.masthead{position:sticky;top:0}}.sidebar-brand{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);text-decoration:none;color:inherit;border-radius:var(--radius-sm)}.sidebar-brand:hover{background:var(--color-surface)}.sidebar-brand .brand-name{font-size:var(--text-md);display:block}.sidebar-nav{display:flex;flex-direction:column;gap:var(--space-5)}.sidebar-group{display:flex;flex-direction:column;gap:2px}.sidebar-group-label{font-size:var(--text-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-faint);padding:0 var(--space-2) var(--space-2)}.sidebar-link{display:flex;align-items:center;gap:var(--space-2);padding:10px var(--space-2);min-height:42px;border-radius:var(--radius-sm);text-decoration:none;color:var(--color-text-soft);font-family:var(--font-heading);font-size:var(--text-sm);font-weight:600;transition:background .12s ease,color .12s ease}.sidebar-link svg{flex-shrink:0;opacity:.75}.sidebar-link:hover{background:var(--color-surface);color:var(--color-text)}.sidebar-link.active{background:var(--color-accent-solid);color:var(--color-on-accent)}.sidebar-link.active svg{opacity:1}.sidebar-link:focus-visible{outline:2px solid var(--color-accent-solid);outline-offset:2px}.sidebar-sub{display:flex;flex-direction:column;gap:1px;margin:3px 0 var(--space-2) 19px;padding-left:var(--space-3);border-left:2px solid var(--color-line)}.sidebar-sublink{padding:7px var(--space-2);min-height:34px;display:flex;align-items:center;border-radius:var(--radius-sm);text-decoration:none;color:var(--color-text-soft);font-size:var(--text-sm);transition:background .12s ease,color .12s ease}.sidebar-sublink:hover{background:var(--color-surface);color:var(--color-text)}.sidebar-sublink.active{color:var(--color-accent-700);font-weight:700}.sidebar-sublink:focus-visible{outline:2px solid var(--color-accent-solid);outline-offset:1px}.sidebar-link.is-locked{opacity:.45;cursor:not-allowed;justify-content:space-between}.sidebar-link.is-locked:hover{background:transparent;color:var(--color-text-soft)}
