:root{--midnight:#111827;--ledger:#f5f1e8;--blood:#8f2435;--brass:#b88746;--paid:#287a5b;--danger:#c44a3d;--surface:#fffdf8;--text:#172033;--muted:#6f7580;--focus:#2563eb;--radius:14px;--shadow:0 12px 30px #1118271a}*{box-sizing:border-box}html{background:var(--ledger)}body{min-width:320px;min-height:100vh;color:var(--text);background:var(--ledger);margin:0;font-family:Inter,Noto Sans SC,Microsoft YaHei,system-ui,sans-serif}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.app-shell{min-height:100vh}.sidebar{width:252px;color:var(--ledger);background:var(--midnight);flex-direction:column;padding:28px 18px;display:flex;position:fixed;inset:0 auto 0 0}.brand{align-items:center;gap:12px;padding:4px 8px 28px;display:flex}.brand strong,.brand small{display:block}.brand strong{color:var(--surface);letter-spacing:.04em;font-family:Georgia,serif;font-size:19px}.brand small{color:#c6c8ce;letter-spacing:.08em;text-transform:uppercase;margin-top:3px;font-size:11px}.brand-mark{border:1px solid var(--brass);width:36px;height:36px;color:var(--brass);border-radius:50%;place-items:center;font-family:Georgia,serif;font-weight:700;display:grid}.app-navigation{gap:5px;display:grid}.nav-link{color:#c6c8ce;border-radius:9px;align-items:center;gap:12px;min-height:46px;padding:0 12px;font-size:14px;transition:color .16s,background-color .16s;display:flex}.nav-link:hover{color:var(--surface);background:#ffffff14}.nav-link--active{color:var(--surface);background:var(--blood);box-shadow:inset 3px 0 var(--brass)}.sidebar-note{color:#9aa0aa;margin:auto 8px 0;font-size:12px}.main-content{min-height:100vh;margin-left:252px;padding:48px clamp(28px,6vw,88px)}.page{max-width:680px;padding-top:8vh}.eyebrow{color:var(--blood);letter-spacing:.12em;margin:0 0 12px;font-size:13px;font-weight:700}.page h1{color:var(--midnight);letter-spacing:-.035em;margin:0;font-family:Georgia,Noto Serif SC,serif;font-size:clamp(32px,5vw,54px);font-weight:500;line-height:1.08}.page-description{max-width:450px;color:var(--muted);margin:20px 0 0;font-size:16px;line-height:1.7}.page-heading{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.button-secondary,.players-page button,.player-form button,.pricing-form button{border:1px solid var(--brass);min-height:40px;color:var(--midnight);background:var(--surface);font:inherit;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:0 14px;display:inline-flex}.player-form{border-radius:var(--radius);background:var(--surface);max-width:520px;box-shadow:var(--shadow);gap:14px;margin:24px 0;padding:20px;display:grid}.form-field{color:var(--text);gap:6px;font-size:14px;font-weight:600;display:grid}.form-field input,.search-field input{width:100%;min-height:42px;color:var(--text);font:inherit;background:#fff;border:1px solid #cdc7bb;border-radius:8px;padding:9px 11px}.form-field__error{color:var(--danger);font-weight:500}.checkbox-field{align-items:center;gap:8px;display:flex}.search-field{background:var(--surface);border:1px solid #cdc7bb;border-radius:8px;align-items:center;gap:8px;max-width:520px;margin:28px 0 16px;padding:0 11px;display:flex}.search-field input{background:0 0;border:0}.player-list,.attendance-history{gap:10px;max-width:720px;padding:0;list-style:none;display:grid}.player-card,.attendance-history li{background:var(--surface);border-radius:10px;justify-content:space-between;align-items:center;gap:16px;padding:16px;display:flex;box-shadow:0 3px 12px #11182712}.player-card__metadata{color:var(--muted);flex-wrap:wrap;align-items:center;gap:7px;margin-top:7px;font-size:14px;display:flex}.player-card__name{color:var(--midnight);font-size:18px;font-weight:700}.player-card__actions{align-items:center;gap:10px;display:flex}.status-badge{white-space:nowrap;border-radius:999px;width:fit-content;padding:4px 8px;font-size:12px;font-weight:700;display:inline-flex}.status-badge--success{color:#14513c;background:#dcefe7}.status-badge--muted{color:#555d69;background:#e7e7e5}.status-badge--warning{color:#813a15;background:#f6e5cb}.empty-state{border-radius:var(--radius);max-width:520px;color:var(--muted);border:1px dashed #c9c1b2;margin:20px 0;padding:24px}.empty-state h2{color:var(--midnight);margin:0;font-size:18px}.empty-state p{margin:8px 0 0;line-height:1.6}.player-detail h1{margin:6px 0 12px;font-family:Georgia,Noto Serif SC,serif;font-size:clamp(32px,5vw,48px)}.player-detail h2{margin-top:36px}.back-link{color:var(--blood);margin-bottom:26px;font-weight:700;display:inline-block}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.session-editor{gap:24px;max-width:1180px;padding-bottom:40px;display:grid}.session-editor h1,.session-editor h2,.session-editor h3{color:var(--midnight);font-family:Georgia,Noto Serif SC,serif}.session-editor h1{margin:0;font-size:clamp(32px,5vw,48px);font-weight:500}.session-editor h2{margin:0;font-size:24px;font-weight:500}.session-editor h3{margin:0;font-size:20px}.session-editor__save{border:1px solid var(--blood);min-height:44px;color:var(--surface);background:var(--blood);font:inherit;cursor:pointer;border-radius:8px;padding:0 18px;font-weight:700}.session-editor__save:disabled{cursor:wait;opacity:.65}.session-editor__error{border-left:3px solid var(--danger);color:#7c281f;background:#f9e7e3;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.session-editor__notice{border-left:3px solid var(--brass);color:var(--midnight);background:#fff7df;justify-content:space-between;align-items:center;gap:12px;margin:14px 0;padding:12px 14px;display:flex}.session-editor__notice button{color:var(--blood);font:inherit;cursor:pointer;background:0 0;border:0;font-weight:800}.session-editor__error button,.charge-rail button,.session-summary button{color:var(--blood);font:inherit;cursor:pointer;background:0 0;border:0;font-weight:700}.session-editor__section{border-radius:var(--radius);background:var(--surface);border:1px solid #ded8cb;padding:24px;box-shadow:0 3px 12px #1118270d}.session-editor__collapsible>summary{cursor:pointer;list-style:none}.session-editor__collapsible>summary::-webkit-details-marker{display:none}.session-editor__collapsible>summary:after{color:var(--blood);content:"＋";margin-left:auto;font:700 20px/1 system-ui,sans-serif}.session-editor__collapsible[open]>summary:after{content:"－"}.session-editor__section-heading{align-items:baseline;gap:12px;margin-bottom:20px;display:flex}.session-editor__collapsible>summary{margin-bottom:0}.session-editor__collapsible[open]>summary{margin-bottom:20px}.session-editor__section-heading p{color:var(--brass);margin:0;font:700 13px/1 ui-monospace,SFMono-Regular,Menlo,monospace}.session-details-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.session-details-grid input,.session-details-grid select,.attendee-picker__anonymous input,.session-summary input{width:100%;min-height:42px;color:var(--text);font:inherit;background:#fff;border:1px solid #cdc7bb;border-radius:8px;padding:9px 11px}.attendee-picker{gap:16px;display:grid}.attendee-picker__players{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.attendee-picker__player{cursor:pointer;border:1px solid #ded8cb;border-radius:8px;grid-template-columns:auto 1fr;align-items:center;gap:3px 8px;padding:12px;display:grid}.attendee-picker__player small{color:var(--muted);grid-column:2}.attendee-picker__anonymous{max-width:180px;color:var(--text);gap:6px;font-size:14px;font-weight:600;display:grid}.settlement-list{gap:14px;display:grid}.settlement-list__empty{color:var(--muted);margin:0}.settlement-row{background:#fffefa;border:1px solid #ded8cb;border-radius:10px;padding:18px}.settlement-row__header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.settlement-row__header p{color:var(--muted);margin:4px 0 0;font-size:13px}.payment-toggle,.settlement-row__controls>label{color:var(--text);align-items:center;gap:7px;font-size:14px;display:inline-flex}.settlement-row__controls{flex-wrap:wrap;gap:12px 18px;margin:18px 0;display:flex}.hour-slider{gap:4px;display:grid!important}.hour-slider input{accent-color:var(--blood)}.charge-rail{border-top:1px solid #ded8cb;grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.charge-rail__item{border-right:1px solid #ded8cb;gap:7px;min-height:126px;padding:16px 14px 10px;display:grid;position:relative}.charge-rail__item:last-child{border-right:0}.charge-rail__item:before{background:var(--brass);content:"";border-radius:50%;width:9px;height:9px;position:absolute;top:-5px;left:14px}.charge-rail__label{color:var(--muted);font-size:13px}.charge-rail__item strong{color:var(--midnight);font-size:18px}.charge-rail__override{gap:6px;display:grid}.charge-rail__override .form-field{font-size:12px}.charge-rail__override input{min-height:34px;font:inherit;border:1px solid #cdc7bb;border-radius:6px;padding:6px 8px}.session-summary{color:#f1eadc;background:var(--midnight);box-shadow:var(--shadow);border:1px solid #2a2430;border-radius:10px;grid-template-columns:minmax(180px,1fr) 180px auto 1fr repeat(3,auto);align-items:end;gap:14px;padding:18px;display:grid;position:sticky;bottom:16px}.session-summary h2{color:var(--surface);font-size:20px}.session-summary .eyebrow{color:var(--brass);margin-bottom:5px}.session-summary .form-field{color:#e7dfd0}.session-summary button{color:var(--brass);white-space:nowrap}.session-summary dl{display:contents}.session-summary dl div{gap:4px;display:grid}.session-summary dt{color:#aeb1b7;font-size:12px}.session-summary dd{color:var(--surface);white-space:nowrap;margin:0;font-size:17px;font-weight:700}.dashboard-page,.session-detail{max-width:1120px}.button-link{border:1px solid var(--blood);min-height:42px;color:var(--surface);background:var(--blood);border-radius:8px;justify-content:center;align-items:center;padding:0 15px;font-weight:700;display:inline-flex}.month-picker{flex-wrap:wrap;align-items:end;gap:10px;margin:24px 0 18px;display:flex}.month-picker label,.filter-grid label{color:var(--text);gap:6px;font-size:14px;font-weight:700;display:grid}.month-picker input,.filter-grid input{min-height:40px;font:inherit;background:#fff;border:1px solid #cdc7bb;border-radius:8px;padding:8px 10px}.month-picker button,.detail-actions button{border:1px solid var(--brass);min-height:40px;color:var(--midnight);background:var(--surface);font:inherit;cursor:pointer;border-radius:8px;padding:0 13px;font-weight:700}.filter-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 20px;display:grid}.dashboard-ledger{gap:12px;display:grid}.dashboard-row{background:var(--surface);border:1px solid #ded8cb;border-radius:12px;grid-template-columns:1fr auto auto;align-items:center;gap:16px;padding:18px;display:grid;box-shadow:0 3px 12px #1118270d}.dashboard-row h2{color:var(--midnight);margin:0;font-family:Georgia,Noto Serif SC,serif;font-size:22px}.dashboard-row p{color:var(--muted);margin:6px 0 0}.dashboard-row strong{color:var(--midnight);font-size:20px}.dashboard-row a{color:var(--blood);font-weight:700}.success-message{color:#14513c;background:#dcefe7;border-left:3px solid #2f7b55;padding:12px 14px}.detail-summary{color:#f1eadc;background:var(--midnight);border:1px solid #2a2430;border-radius:12px;gap:12px;margin:24px 0;padding:20px;display:grid}.detail-summary p{color:var(--brass);margin:0}.detail-summary div{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.detail-summary span{color:#aeb1b7}.detail-summary strong{color:var(--surface)}.detail-attendees{gap:14px;display:grid}.detail-attendee{background:var(--surface);border:1px solid #ded8cb;border-radius:12px;padding:18px}.detail-attendee header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.detail-attendee h2{color:var(--midnight);margin:0;font-family:Georgia,Noto Serif SC,serif}.amount-line{border-top:1px solid #eee7dc;grid-template-columns:120px 1fr 1fr auto;gap:10px;padding:9px 0;display:grid}.amount-line span:first-child{color:var(--muted);font-weight:700}.dm-stats-page{max-width:1120px}.dm-summary-grid{gap:16px;display:grid}.dm-summary-card{background:var(--surface);border:1px solid #ded8cb;border-radius:12px;padding:20px;box-shadow:0 3px 12px #1118270d}.dm-summary-card header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.dm-summary-card h2{color:var(--midnight);margin:0;font-family:Georgia,Noto Serif SC,serif;font-size:26px}.dm-summary-card header strong{color:var(--blood);font-size:20px}.dm-summary-card dl{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0;display:grid}.dm-summary-card dl div{background:#fffefa;border-radius:9px;padding:12px}.dm-summary-card dt{color:var(--muted);font-size:12px}.dm-summary-card dd{color:var(--midnight);margin:4px 0 0;font-weight:800}.dm-summary-card details{border-top:1px solid #eee7dc;padding-top:12px}.dm-summary-card summary{color:var(--blood);cursor:pointer;font-weight:800}.dm-summary-card ul{gap:8px;margin:12px 0 0;padding:0;list-style:none;display:grid}.dm-summary-card li{color:var(--muted);grid-template-columns:minmax(220px,1fr) repeat(3,auto);align-items:center;gap:10px;display:grid}.dm-summary-card li a{color:var(--midnight);font-weight:800}.dm-page,.dm-detail-page{max-width:1120px}.dm-form{border-radius:var(--radius);background:var(--surface);max-width:520px;box-shadow:var(--shadow);border:1px solid #ded8cb;align-items:end;gap:12px;margin:24px 0;padding:18px;display:flex}.dm-form .form-field{flex:1}.dm-form button{border:1px solid var(--blood);min-height:42px;color:var(--surface);background:var(--blood);font:inherit;cursor:pointer;border-radius:8px;padding:0 14px;font-weight:800}.dm-page__month{margin-top:8px}.dm-profile-list{gap:12px;max-width:760px;display:grid}.dm-profile-card{background:var(--surface);border:1px solid #ded8cb;border-radius:12px;justify-content:space-between;align-items:center;gap:18px;padding:18px 20px;display:flex;box-shadow:0 3px 12px #1118270d}.dm-profile-card h2{color:var(--midnight);margin:0;font-family:Georgia,Noto Serif SC,serif;font-size:24px}.dm-profile-card .eyebrow{margin-bottom:5px}.dm-profile-card__meta{justify-items:end;gap:8px;display:grid}.dm-profile-card__meta strong{color:var(--blood)}.dm-profile-card__meta a{color:var(--midnight);font-weight:800}.dm-record-summary{color:#f1eadc;background:var(--midnight);border:1px solid #2a2430;border-radius:12px;gap:18px;margin:24px 0;padding:20px;display:grid}.dm-record-summary header{justify-content:space-between;gap:12px;display:flex}.dm-record-summary header span{color:var(--brass)}.dm-record-summary header strong{font-size:22px}.dm-record-summary dl{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0;display:grid}.dm-record-summary dl div{background:#ffffff14;border-radius:9px;padding:12px}.dm-record-summary dt{color:#aeb1b7;font-size:12px}.dm-record-summary dd{color:var(--surface);margin:4px 0 0;font-weight:800}.dm-record-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.dm-record-list li{background:var(--surface);border:1px solid #ded8cb;border-radius:10px;grid-template-columns:minmax(220px,1fr) repeat(3,auto);align-items:center;gap:12px;padding:15px 17px;display:grid}.dm-record-list a{color:var(--midnight);font-weight:800}.dm-record-list span{color:var(--muted)}.dm-record-list strong{color:var(--blood)}.pricing-settings-page{max-width:1120px}.pricing-settings-layout{grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:22px;margin-top:24px;display:grid}.pricing-form,.pricing-history-section{border-radius:var(--radius);background:var(--surface);border:1px solid #ded8cb;padding:22px;box-shadow:0 3px 12px #1118270d}.pricing-form h2,.pricing-history-section h2{color:var(--midnight);margin:0 0 16px;font-family:Georgia,Noto Serif SC,serif;font-size:24px;font-weight:500}.pricing-form__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.pricing-form__grid input{width:100%;min-height:42px;color:var(--text);font:inherit;background:#fff;border:1px solid #cdc7bb;border-radius:8px;padding:9px 11px}.pricing-preview{border-left:4px solid var(--brass);color:#f1eadc;background:var(--midnight);gap:4px;margin:20px 0;padding:16px;display:grid}.pricing-preview span{color:var(--surface);font-weight:800}.pricing-preview small{color:#c6c8ce}.pricing-form__save{border-color:var(--blood)!important;color:var(--surface)!important;background:var(--blood)!important;font-weight:800!important}.pricing-form__save:disabled{cursor:wait;opacity:.65}.pricing-history{gap:12px;margin:0;padding:0;list-style:none;display:grid}.pricing-history li{background:#fffefa;border:1px solid #eee7dc;border-radius:10px;padding:16px}.pricing-history header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.pricing-history header p{color:var(--muted);word-break:break-word;margin:0;font:700 12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.pricing-history header h2{margin:5px 0 0;font-size:22px}.pricing-history dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0 0;display:grid}.pricing-history dt{color:var(--muted);font-size:12px}.pricing-history dd{color:var(--midnight);word-break:break-word;margin:3px 0 0;font-weight:800}@media (width<=759px){.sidebar{z-index:10;width:auto;padding:8px 8px calc(8px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid #ded8cb;display:block;position:fixed;inset:auto 0 0;box-shadow:0 -8px 22px #11182714}.brand,.sidebar-note{display:none}.main-content{margin-left:0;padding:32px 24px 100px}.page{padding-top:4vh}.page-heading{flex-direction:column;align-items:stretch}.button-secondary{width:100%}.player-card,.attendance-history li{flex-direction:column;align-items:flex-start}.session-editor{gap:16px;padding-bottom:120px}.session-editor__section{padding:18px}.session-details-grid,.attendee-picker__players{grid-template-columns:1fr}.charge-rail{grid-template-columns:1fr 1fr}.charge-rail__item:nth-child(2){border-right:0}.charge-rail__item:nth-child(-n+2){border-bottom:1px solid #ded8cb}.session-summary{z-index:8;border:0;border-radius:0;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px 16px;position:fixed;bottom:70px;left:0;right:0}.session-summary>div:first-child,.session-summary .form-field,.session-summary>.status-badge,.session-summary>button{display:none}.session-summary dl div{text-align:center}.session-summary dd{font-size:14px}.filter-grid,.dashboard-row,.amount-line,.dm-summary-card dl,.dm-summary-card li,.pricing-settings-layout,.pricing-form__grid,.pricing-history dl{grid-template-columns:1fr}.dm-form,.dm-profile-card{flex-direction:column;align-items:stretch}.dm-profile-card__meta{justify-items:start}.dm-record-summary dl,.dm-record-list li{grid-template-columns:1fr}.month-picker{flex-direction:column;align-items:stretch}.dashboard-row{align-items:start}.app-navigation{grid-template-columns:repeat(5,minmax(0,1fr));gap:2px}.nav-link{min-height:54px;color:var(--muted);border-radius:8px;flex-direction:column;justify-content:center;gap:3px;padding:4px 2px;font-size:11px}.nav-link--active{color:var(--blood);box-shadow:none;background:#f7e9e9}}
