@import"https://fonts.googleapis.com/css2?family=Onest:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap";:root{--brand-forest-900: #0B3B27;--brand-forest-700: #155A39;--brand-forest-600: #1F7A4A;--brand-forest-500: #2E9560;--brand-forest-200: #BFE4CE;--brand-forest-100: #E0F1E6;--brand-forest-50: #F0F8F3;--accent-coral-700: #B85838;--accent-coral-600: #D97757;--accent-coral-200: #F5D4C5;--accent-coral-100: #FBE9DF;--surface-cream: #F7F4EC;--surface-paper: #FCFAF4;--surface-white: #FFFFFF;--surface-sunken: #EFEBE0;--ink-900: #15201B;--ink-700: #353D38;--ink-500: #6B7166;--ink-400: #8B9088;--ink-300: #B6BAB2;--border-strong: #D6D0BE;--border-default: #E6E1D4;--border-subtle: #ECE7DA;--border-focus: #1F7A4A;--success: #1F7A4A;--success-bg: #E0F1E6;--warning: #C7891A;--warning-bg: #FBEED1;--danger: #B23A3A;--danger-bg: #F5DCDC;--info: #2A6FDB;--info-bg: #DCE7F8;--status-planned-fg: #155A39;--status-planned-bg: #E0F1E6;--status-completed-fg: #5E5435;--status-completed-bg: #EFE6CB;--status-cancelled-fg: #6B7166;--status-cancelled-bg: #E6E1D4;--status-attended-fg: #155A39;--status-attended-bg: #BFE4CE;--status-missed-fg: #8E2F2F;--status-missed-bg: #F5DCDC;--font-display: "Onest", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-body: "Onest", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--fs-display: 56px;--lh-display: 1.04;--ls-display: -.025em;--fs-h1: 36px;--lh-h1: 1.12;--ls-h1: -.022em;--fs-h2: 28px;--lh-h2: 1.18;--ls-h2: -.018em;--fs-h3: 22px;--lh-h3: 1.25;--ls-h3: -.012em;--fs-h4: 17px;--lh-h4: 1.35;--ls-h4: -.005em;--fs-body: 15px;--lh-body: 1.5;--ls-body: 0;--fs-small: 13px;--lh-small: 1.45;--ls-small: 0;--fs-micro: 11px;--lh-micro: 1.3;--ls-micro: .04em;--fs-mono: 14px;--lh-mono: 1.4;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-7: 32px;--s-8: 40px;--s-9: 56px;--s-10: 72px;--r-xs: 4px;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-xl: 20px;--r-pill: 999px;--shadow-card: 0 1px 0 rgba(20, 30, 24, .04), 0 1px 2px rgba(20, 30, 24, .04);--shadow-raised: 0 1px 0 rgba(20, 30, 24, .04), 0 4px 12px rgba(20, 30, 24, .06);--shadow-popover: 0 8px 28px rgba(20, 30, 24, .12), 0 2px 4px rgba(20, 30, 24, .06);--shadow-focus: 0 0 0 3px rgba(31, 122, 74, .18);--ease-out: cubic-bezier(.2, .7, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--dur-fast: .12s;--dur-base: .18s;--dur-slow: .26s}html,body{font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-900);background:var(--surface-cream);font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.t-display,h1.display{font-family:var(--font-display);font-weight:700;font-size:var(--fs-display);line-height:var(--lh-display);letter-spacing:var(--ls-display);color:var(--ink-900)}h1,.t-h1{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h1);line-height:var(--lh-h1);letter-spacing:var(--ls-h1)}h2,.t-h2{font-family:var(--font-display);font-weight:600;font-size:var(--fs-h2);line-height:var(--lh-h2);letter-spacing:var(--ls-h2)}h3,.t-h3{font-family:var(--font-display);font-weight:600;font-size:var(--fs-h3);line-height:var(--lh-h3);letter-spacing:var(--ls-h3)}h4,.t-h4{font-family:var(--font-body);font-weight:600;font-size:var(--fs-h4);line-height:var(--lh-h4)}p,.t-body{font-size:var(--fs-body);line-height:var(--lh-body)}.t-small{font-size:var(--fs-small);line-height:var(--lh-small);color:var(--ink-700)}.t-muted{color:var(--ink-500)}.t-meta{font-size:var(--fs-micro);line-height:var(--lh-micro);letter-spacing:var(--ls-micro);text-transform:uppercase;font-weight:600;color:var(--ink-500)}.t-mono,.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum","zero"}.money--positive{color:var(--success)}.money--negative{color:var(--danger)}:focus-visible{outline:none;box-shadow:var(--shadow-focus)}*{box-sizing:border-box}body{margin:0;min-height:100vh}.app{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.main{display:flex;flex-direction:column;min-width:0}.sidebar{background:var(--surface-paper);border-right:1px solid var(--border-default);padding:18px 16px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}.sidebar__brand{display:flex;align-items:center;gap:10px;padding:4px 6px 16px;border-bottom:1px solid var(--border-subtle);margin-bottom:12px}.sidebar__brand img{width:32px;height:32px}.sidebar__brand-name{font-family:var(--font-display);font-weight:700;font-size:19px;letter-spacing:-.018em}.nav{display:flex;flex-direction:column;gap:2px}.nav__item{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:8px;color:var(--ink-700);font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;transition:background var(--dur-fast) var(--ease-out)}.nav__item:hover{background:var(--surface-sunken);color:var(--ink-900)}.nav__item.is-active{background:var(--brand-forest-100);color:var(--brand-forest-900);font-weight:600}.nav__item.is-active svg{color:var(--brand-forest-600)}.nav__item svg{width:18px;height:18px;stroke-width:1.75;color:var(--ink-500);flex-shrink:0}.nav__count{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--ink-500);background:var(--surface-sunken);padding:2px 6px;border-radius:999px}.nav__item.is-active .nav__count{background:var(--brand-forest-200);color:var(--brand-forest-900)}.nav__section{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-500);padding:16px 10px 6px}.sidebar__bottom{margin-top:auto;padding-top:12px;border-top:1px solid var(--border-subtle)}.user-chip{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:8px;cursor:pointer}.user-chip:hover{background:var(--surface-sunken)}.user-chip__name{font-size:13px;font-weight:600;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-chip__plan{font-size:11px;color:var(--ink-500);line-height:1.2;margin-top:2px;white-space:nowrap}.user-chip>div{min-width:0;overflow:hidden}.avatar{width:32px;height:32px;border-radius:999px;background:var(--brand-forest-200);color:var(--brand-forest-900);display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;flex-shrink:0;font-family:var(--font-body)}.avatar.sm{width:24px;height:24px;font-size:11px}.avatar.lg{width:40px;height:40px;font-size:15px}.avatar.xl{width:56px;height:56px;font-size:19px}.avatar--coral{background:var(--accent-coral-200);color:var(--accent-coral-700)}.avatar--sand{background:#efe6cb;color:#5e5435}.avatar--sky{background:#dce7f8;color:#2a6fdb}.avatar-stack{display:inline-flex}.avatar-stack .avatar{border:2px solid var(--surface-paper);margin-left:-8px}.avatar-stack .avatar:first-child{margin-left:0}.topbar{position:sticky;top:0;z-index:10;background:#f7f4ecc7;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border-default);height:64px;display:flex;align-items:center;padding:0 32px;gap:16px}.topbar__title{font-size:18px;font-weight:600;margin:0;letter-spacing:-.012em}.topbar__spacer{flex:1}.search-input{display:flex;align-items:center;gap:8px;background:var(--surface-paper);border:1px solid var(--border-default);border-radius:8px;padding:7px 12px;width:280px}.search-input input{border:none;background:transparent;outline:none;font-family:var(--font-body);font-size:14px;color:var(--ink-900);width:100%}.search-input input::placeholder{color:var(--ink-400)}.search-input svg{color:var(--ink-500);width:16px;height:16px;stroke-width:1.75}.icon-btn{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--border-default);background:var(--surface-paper);cursor:pointer;color:var(--ink-700);transition:background var(--dur-fast) var(--ease-out);position:relative}.icon-btn:hover{background:var(--surface-sunken)}.icon-btn svg{width:18px;height:18px;stroke-width:1.75}.icon-btn__dot{position:absolute;top:7px;right:8px;width:7px;height:7px;border-radius:999px;background:var(--accent-coral-600);border:2px solid var(--surface-paper)}.page{padding:28px 32px 48px;max-width:1280px}.page__header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:24px;gap:16px}.page__title{margin:0}.page__subtitle{color:var(--ink-500);margin-top:6px;font-size:14px;white-space:nowrap}.btn{font-family:var(--font-body);font-size:14px;font-weight:600;padding:9px 14px;border-radius:8px;border:1px solid transparent;cursor:pointer;display:inline-flex;align-items:center;gap:8px;line-height:1;white-space:nowrap;transition:background var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out)}.btn svg{width:16px;height:16px;stroke-width:1.85}.btn-primary{background:var(--brand-forest-600);color:#fcfaf4}.btn-primary:hover{background:var(--brand-forest-500)}.btn-primary:active{background:var(--brand-forest-700)}.btn-secondary{background:var(--surface-paper);color:var(--ink-900);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--surface-sunken)}.btn-ghost{background:transparent;color:var(--ink-700)}.btn-ghost:hover{background:var(--surface-sunken);color:var(--ink-900)}.btn-danger{background:var(--surface-white);color:var(--danger);border-color:#e8c9c9}.btn-danger:hover{background:var(--danger-bg)}.btn-sm{padding:6px 10px;font-size:13px;border-radius:6px}.btn-lg{padding:12px 18px;font-size:15px;border-radius:10px}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.3;font-family:var(--font-mono);white-space:nowrap}.chip--planned{background:var(--status-planned-bg);color:var(--status-planned-fg)}.chip--completed{background:var(--status-completed-bg);color:var(--status-completed-fg)}.chip--cancelled{background:var(--status-cancelled-bg);color:var(--status-cancelled-fg)}.chip--active{background:var(--status-attended-bg);color:var(--status-attended-fg)}.chip--expired{background:var(--accent-coral-100);color:var(--accent-coral-700)}.chip--draft{background:var(--surface-sunken);color:var(--ink-500)}.chip--attended{background:var(--status-attended-bg);color:var(--status-attended-fg)}.chip--missed{background:var(--status-missed-bg);color:var(--status-missed-fg)}.chip--warning{background:var(--warning-bg);color:var(--warning)}.card{background:var(--surface-paper);border:1px solid var(--border-default);border-radius:10px;padding:20px;box-shadow:var(--shadow-card)}.card--lg{border-radius:14px;padding:24px}.card--emphasized{border-color:var(--border-strong);box-shadow:var(--shadow-raised)}.card--attention{border-color:var(--accent-coral-200);background:linear-gradient(0deg,var(--accent-coral-100),var(--accent-coral-100)) padding-box,var(--surface-paper)}.card--sunken{background:var(--surface-sunken);border:none}.card__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:12px}.card__title{font-family:var(--font-display);font-weight:600;font-size:17px;margin:0;letter-spacing:-.005em}.card__action{color:var(--brand-forest-600);font-size:13px;font-weight:600;cursor:pointer}.money{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:-.01em}.money--pos{color:var(--success)}.money--neg{color:var(--danger)}.money--xl{font-size:36px;font-weight:600;letter-spacing:-.015em}.money--lg{font-size:24px;font-weight:600}.money__cur{color:var(--ink-500);font-weight:500}.list{display:flex;flex-direction:column}.list__row{display:grid;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border-subtle)}.list__row:last-child{border-bottom:none}.list__row--hover:hover{background:#efebe099;border-radius:8px;padding-left:8px;padding-right:8px;margin:0 -8px}.stat__label{font-size:12px;font-weight:600;color:var(--ink-500);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}.stat__value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:32px;font-weight:600;letter-spacing:-.015em;line-height:1}.stat__delta{font-size:13px;font-weight:500;margin-top:8px;display:inline-flex;align-items:center;gap:4px}.stat__delta--pos{color:var(--success)}.stat__delta--neg{color:var(--danger)}.cal{display:grid;grid-template-columns:56px repeat(7,1fr);background:var(--surface-paper);border:1px solid var(--border-default);border-radius:10px;overflow:hidden}.cal__corner{background:var(--surface-paper);border-right:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle)}.cal__dayhead{padding:10px 12px;border-bottom:1px solid var(--border-subtle);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:2px}.cal__dayhead:last-child{border-right:none}.cal__dayhead--today{background:var(--brand-forest-50)}.cal__dayname{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-500)}.cal__dayhead--today .cal__dayname{color:var(--brand-forest-600)}.cal__daynum{font-family:var(--font-display);font-weight:600;font-size:19px}.cal__timecol{border-right:1px solid var(--border-subtle);background:var(--surface-paper)}.cal__timecell{height:56px;padding:4px 8px;font-family:var(--font-mono);font-size:11px;color:var(--ink-500);border-bottom:1px solid var(--border-subtle);text-align:right}.cal__col{border-right:1px solid var(--border-subtle);position:relative}.cal__col:last-child{border-right:none}.cal__col--today{background:#1f7a4a06}.cal__cell{height:56px;border-bottom:1px solid var(--border-subtle)}.cal__event{position:absolute;left:6px;right:6px;background:var(--brand-forest-100);border-left:3px solid var(--brand-forest-600);border-radius:6px;padding:6px 8px;font-size:12px;overflow:hidden;cursor:pointer}.cal__event--completed{background:var(--status-completed-bg);border-left-color:#8e7a3b;opacity:.85}.cal__event--cancelled{background:var(--status-cancelled-bg);border-left-color:var(--ink-400);opacity:.65;text-decoration:line-through}.cal__event--attention{background:var(--accent-coral-100);border-left-color:var(--accent-coral-600)}.cal__event-title{font-weight:600;color:var(--ink-900)}.cal__event-meta{font-family:var(--font-mono);font-size:10px;color:var(--ink-500);margin-top:2px}.hr{border:none;border-top:1px solid var(--border-subtle);margin:0}.kbd{font-family:var(--font-mono);font-size:11px;background:var(--surface-sunken);border:1px solid var(--border-default);border-radius:4px;padding:1px 5px}.meta{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-500)}.tab-bar{display:flex;gap:0;border-bottom:1px solid var(--border-default)}.tab{padding:10px 16px;font-size:14px;font-weight:500;color:var(--ink-500);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.tab.is-active{color:var(--ink-900);border-bottom-color:var(--brand-forest-600);font-weight:600}.tab:hover:not(.is-active){color:var(--ink-700)}.divider-v{width:1px;background:var(--border-subtle);align-self:stretch}.progress{height:6px;background:var(--surface-sunken);border-radius:999px;overflow:hidden}.progress__bar{height:100%;background:var(--brand-forest-600);border-radius:999px}.progress__bar--low{background:var(--accent-coral-600)}.progress__bar--warn{background:var(--warning)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#141e1852;display:flex;align-items:center;justify-content:center;padding:32px 16px;animation:fadeIn .14s var(--ease-out)}.modal{background:var(--surface-white);border-radius:20px;box-shadow:var(--shadow-popover);max-width:96vw;max-height:calc(100vh - 64px);display:flex;flex-direction:column;overflow:hidden;animation:modalIn .18s var(--ease-out)}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;gap:12px}.modal__title{font-family:var(--font-display);font-weight:600;font-size:19px;letter-spacing:-.012em}.modal__body{padding:0 24px 20px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.modal__footer{display:flex;justify-content:flex-end;gap:8px;padding:16px 24px 20px;border-top:1px solid var(--border-subtle);background:var(--surface-cream)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:13px;font-weight:600;color:var(--ink-900)}.field .hint{font-size:12px;color:var(--ink-500)}.field .hint--error{color:var(--danger)}.input{font-family:var(--font-body);font-size:15px;padding:10px 12px;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface-white);color:var(--ink-900);outline:none;width:100%}.input::placeholder{color:var(--ink-400)}.input:focus{border-color:var(--brand-forest-600);box-shadow:var(--shadow-focus)}.input--error{border-color:var(--danger)}.input--error:focus{box-shadow:0 0 0 3px #b23a3a2e}.input--mono{font-family:var(--font-mono)}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:32px;background-image:linear-gradient(45deg,transparent 50%,var(--ink-500) 50%),linear-gradient(135deg,var(--ink-500) 50%,transparent 50%);background-position:calc(100% - 16px) center,calc(100% - 11px) center;background-size:5px 5px,5px 5px;background-repeat:no-repeat}textarea.input{resize:vertical;min-height:80px;font-family:var(--font-body)}.auth{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px 16px;background:var(--surface-cream)}.auth__card{background:var(--surface-white);border:1px solid var(--border-default);border-radius:14px;padding:32px;width:100%;max-width:400px;box-shadow:var(--shadow-raised)}.auth__brand{display:flex;align-items:center;gap:12px;margin-bottom:24px}.auth__brand img{width:40px;height:40px}.auth__brand-name{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:-.018em}.auth__title{font-family:var(--font-display);font-weight:600;font-size:24px;margin:0 0 4px;letter-spacing:-.012em}.auth__subtitle{color:var(--ink-500);margin:0 0 24px;font-size:14px}.auth__form{display:flex;flex-direction:column;gap:16px}.auth__submit{width:100%;justify-content:center;padding:12px;font-size:15px}.auth__footer{margin-top:20px;padding-top:20px;border-top:1px solid var(--border-subtle);font-size:13px;color:var(--ink-500);text-align:center}.auth__footer a{color:var(--ink-900);font-weight:600;text-decoration:none}.auth__error{background:var(--danger-bg);color:var(--danger);padding:10px 12px;border-radius:8px;font-size:13px}.auth__success{background:var(--success-bg);color:var(--success);padding:10px 12px;border-radius:8px;font-size:13px}.empty{padding:56px 24px;text-align:center;color:var(--ink-500)}.empty__icon{width:48px;height:48px;border-radius:12px;background:var(--surface-paper);display:inline-flex;align-items:center;justify-content:center;margin-bottom:16px}.empty__icon svg{color:var(--ink-500)}.empty__title{font-family:var(--font-display);font-weight:600;font-size:17px;color:var(--ink-900);margin:0 0 6px}.empty__body{font-size:14px;max-width:360px;margin:0 auto 16px}.seg{display:inline-flex;background:var(--surface-paper);border:1px solid var(--border-default);border-radius:8px;padding:3px;gap:2px;width:fit-content}.seg__btn{font-family:var(--font-body);font-size:13px;font-weight:500;color:var(--ink-500);padding:6px 12px;border-radius:6px;border:none;background:transparent;cursor:pointer;white-space:nowrap;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.seg__btn:hover:not(:disabled){color:var(--ink-900)}.seg__btn.is-active{background:var(--surface-white);color:var(--ink-900);font-weight:600;box-shadow:var(--shadow-card)}.seg__btn:disabled{opacity:.45;cursor:not-allowed}.price-row{display:flex;align-items:center;gap:12px;width:100%;padding:14px;background:var(--surface-paper);border:1px solid var(--border-default);border-radius:10px;cursor:pointer;text-align:left;font-family:var(--font-body);transition:border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.price-row:hover{border-color:var(--border-strong)}.price-row[data-selected=true]{border-color:var(--brand-forest-600);background:var(--brand-forest-50)}.price-row__dot{width:18px;height:18px;border-radius:999px;border:1.5px solid var(--border-strong);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.price-row[data-selected=true] .price-row__dot{border-color:var(--brand-forest-600)}.price-row__dot-fill{width:9px;height:9px;border-radius:999px;background:var(--brand-forest-600)}
