:root{--bg:#f5f5f7;--panel:rgba(255,255,255,.86);--line:#e5e5ea;--text:#1d1d1f;--muted:#86868b;--blue:#007aff;--red:#ff3b30;--radius:18px;--shadow:0 14px 40px rgba(0,0,0,.08)}
*{box-sizing:border-box}body{margin:0;background:linear-gradient(140deg,#f8f8fa,#eff3f8);color:var(--text);font:14px/1.45 -apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC",sans-serif;min-height:100vh}.app-shell{display:grid;grid-template-columns:228px 1fr;min-height:100vh}.sidebar{display:flex;flex-direction:column;padding:24px 16px;border-right:1px solid rgba(0,0,0,.06);background:rgba(247,247,249,.76);backdrop-filter:blur(26px);position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:11px;padding:0 10px 28px}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#1d1d1f;color:white;font:600 21px serif}.brand b,.brand small,.sidebar-foot b,.sidebar-foot small{display:block}.brand small,.sidebar-foot small{font-size:11px;color:var(--muted)}nav{display:grid;gap:5px}.nav-item{border:0;background:transparent;padding:11px 12px;border-radius:11px;text-align:left;color:#4a4a4e;font:inherit;cursor:pointer;display:flex;gap:11px;align-items:center}.nav-item span{font-size:18px;width:20px;text-align:center}.nav-item:hover{background:rgba(0,0,0,.04)}.nav-item.active{background:#e8f2ff;color:#0066cc;font-weight:600}.sidebar-foot{display:flex;align-items:center;gap:9px;margin-top:auto;padding:13px 8px}.admin-avatar,.avatar{display:grid;place-items:center;border-radius:50%;background:#e5e5ea;color:#4d4d51;font-weight:600}.admin-avatar{width:34px;height:34px}.avatar{width:32px;height:32px;flex:0 0 auto}main{min-width:0}.topbar{height:84px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid rgba(0,0,0,.06);background:rgba(255,255,255,.55);backdrop-filter:blur(24px);position:sticky;top:0;z-index:10}.date-nav,.actions{display:flex;align-items:center;gap:9px}.topbar h1{font-size:23px;margin:0 0 0 10px;letter-spacing:-.4px}.icon-button,.text-button,.primary-button{border:0;border-radius:10px;height:36px;padding:0 13px;font:inherit;cursor:pointer}.icon-button{font-size:27px;width:36px;padding:0;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08)}.text-button{background:#fff;color:#343437;border:1px solid var(--line)}.primary-button{background:var(--blue);color:#fff;font-weight:600;box-shadow:0 4px 14px rgba(0,122,255,.22)}#view{padding:24px 28px 40px}.calendar-layout{display:grid;grid-template-columns:minmax(720px,1fr) 288px;gap:20px}.calendar-card,.side-card,.metric,.content-card{background:var(--panel);border:1px solid rgba(255,255,255,.85);box-shadow:var(--shadow);border-radius:var(--radius)}.calendar-card{overflow:hidden}.weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.weekdays{border-bottom:1px solid var(--line);color:var(--muted);font-size:11px;font-weight:600;text-align:center;padding:10px 0}.day{min-height:112px;padding:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:rgba(255,255,255,.55);cursor:pointer;overflow:hidden}.day:nth-child(7n){border-right:0}.day.outside{background:rgba(246,246,248,.58);color:#b5b5b9}.day:hover{background:#f5faff}.day-number{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;font-size:12px;margin-bottom:4px}.day.today .day-number{background:var(--blue);color:#fff;font-weight:700}.event{display:flex;align-items:center;gap:5px;padding:4px 6px;margin-top:3px;border-radius:6px;color:#2f3034;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:color-mix(in srgb,var(--event-color) 13%,white);border-left:3px solid var(--event-color)}.event .dot{width:5px;height:5px;border-radius:50%;background:var(--event-color);flex:0 0 auto}.side-stack{display:grid;gap:16px;align-content:start}.side-card{padding:17px}.side-card h3,.content-card h2{margin:0 0 13px;font-size:15px}.legend{display:grid;grid-template-columns:1fr 1fr;gap:8px}.legend-item{display:flex;align-items:center;gap:7px;color:#5d5d62;font-size:12px}.legend-dot{width:8px;height:8px;border-radius:50%}.upcoming-item{display:grid;grid-template-columns:38px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid #efeff1}.upcoming-item:last-child{border:0}.date-tile{text-align:center;background:#f2f2f7;border-radius:10px;padding:5px 2px}.date-tile b,.date-tile small{display:block}.date-tile b{font-size:16px}.date-tile small{font-size:9px;color:var(--muted)}.upcoming-item p{margin:0;font-size:12px}.upcoming-item small{color:var(--muted)}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.metric{padding:19px}.metric small{color:var(--muted)}.metric strong{display:block;font-size:27px;margin-top:7px;letter-spacing:-1px}.metric em{font-style:normal;font-size:11px;color:#30a14e}.content-card{padding:20px;margin-bottom:18px}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:11px 10px;border-bottom:1px solid #eeeeef;font-size:12px}.table th{color:var(--muted);font-weight:500}.status-pill{display:inline-flex;align-items:center;gap:5px;border-radius:99px;padding:4px 8px;font-size:11px;background:#f2f2f7}.money{font-variant-numeric:tabular-nums}.toolbar-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.filter-row{display:flex;gap:8px}.empty{padding:50px;text-align:center;color:var(--muted)}dialog{border:0;border-radius:22px;padding:0;box-shadow:0 30px 90px rgba(0,0,0,.24);width:min(760px,calc(100vw - 32px));max-height:88vh;color:var(--text)}dialog::backdrop{background:rgba(20,20,24,.38);backdrop-filter:blur(5px)}dialog>form,#detailContent,#shareContent{padding:24px;overflow:auto;max-height:88vh}.dialog-head{display:flex;justify-content:space-between;align-items:start;margin-bottom:20px}.dialog-head h2{margin:3px 0 0;font-size:23px}.dialog-head small{color:var(--muted)}.close{border:0;background:#ededf0;border-radius:50%;width:28px;height:28px;font-size:19px;color:#777;cursor:pointer}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .wide{grid-column:1/-1}label span,legend{display:block;font-size:11px;color:var(--muted);margin-bottom:6px;font-weight:600}input,select,textarea{width:100%;border:1px solid #d9d9dd;background:#fff;border-radius:10px;padding:10px 11px;font:inherit;color:var(--text);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,122,255,.12)}fieldset{border:0;padding:0;margin:18px 0}.choice-row{display:flex;gap:8px;flex-wrap:wrap}.choice{position:relative}.choice input{position:absolute;opacity:0}.choice span{margin:0;background:#f2f2f7;padding:8px 12px;border-radius:9px;color:#4e4e52;cursor:pointer;font-weight:500}.choice input:checked+span{background:#e6f1ff;color:#0066cc;box-shadow:inset 0 0 0 1px #a9d1ff}.charge-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.block{display:block}.dialog-actions{display:grid;grid-template-columns:auto 1fr auto auto;gap:9px;align-items:center;margin-top:20px}.danger-link{border:0;background:transparent;color:var(--red);cursor:pointer}.notice{background:#fff4e5;border:1px solid #ffcb82;color:#8a4a00;padding:10px 12px;border-radius:10px;margin-top:12px}.hidden{display:none!important}.detail-hero{padding:17px;border-radius:14px;background:#f5f5f7;margin-bottom:18px}.detail-hero h2{margin:3px 0}.detail-section{padding:15px 0;border-top:1px solid var(--line)}.detail-section h3{margin:0 0 10px;font-size:13px}.keyvals{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.keyval small,.keyval b{display:block}.keyval small{color:var(--muted);font-size:10px}.keyval b{margin-top:3px}.timeline{display:grid;gap:8px}.timeline-item{display:flex;gap:10px;font-size:12px}.timeline-item time{color:var(--muted);width:128px;flex:0 0 auto}.share-preview{background:#f5f5f7;border-radius:16px;padding:18px;margin:16px 0}.share-preview .mini-days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.mini-day{padding:8px 3px;text-align:center;background:white;border-radius:8px;font-size:11px}.mini-day.busy{background:#ececee;color:#999}.toast-show{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);background:#1d1d1f;color:white;padding:10px 16px;border-radius:10px;z-index:100;box-shadow:var(--shadow)}@media(max-width:1320px){.calendar-layout{grid-template-columns:1fr}.side-stack{grid-template-columns:1fr 1fr}.metrics{grid-template-columns:1fr 1fr}}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.topbar{padding:0 14px;height:auto;min-height:72px;flex-wrap:wrap}.topbar h1{font-size:18px}.actions{padding-bottom:10px}#view{padding:14px}.calendar-layout{display:block}.side-stack{margin-top:14px;grid-template-columns:1fr}.day{min-height:86px;padding:4px}.event{font-size:9px}.metrics{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.charge-grid{grid-template-columns:1fr 1fr}.keyvals{grid-template-columns:1fr 1fr}}
#transactionDialog{width:min(520px,calc(100vw - 32px))}.transaction-context{background:#f5f5f7;border-radius:13px;padding:12px 14px;margin:-4px 0 18px;color:#4f4f54}.transaction-context b,.transaction-context small{display:block}.transaction-context small,#refundableHint{color:var(--muted);margin-top:3px}#paymentSourceField small{font-size:11px}
.field-hint,.empty-inline{font-size:11px;color:var(--muted);margin:0 0 10px}.empty-inline{padding:10px 12px;background:#f5f5f7;border-radius:10px}.member-fee-field{min-width:0}
@media print{.sidebar,.topbar,.no-print{display:none!important}.app-shell{display:block}#view{padding:0}.content-card,.metric{box-shadow:none;border:1px solid #ddd}}
