:root{--ink:#4b1479;--ink-800:#5f1e93;--ink-700:#382c4b;--ink-500:#6f6680;--ink-400:#a69cb4;--creek:#5f74d8;--creek-700:#4657b8;--creek-050:#eef1fc;--accent:var(--creek);--accent-700:var(--creek-700);--accent-050:var(--creek-050);--paper:#f5f3fa;--card:#fff;--card-2:#faf9fe;--line:#e8e4f1;--line-2:#d8d2e6;--danger:#dc3545;--danger-bg:#fceced;--danger-line:#f4ccd1;--ok:#12876f;--ok-bg:#e4f5f0;--ok-line:#c4e8df;--on-ink:#f2ecf9;--on-ink-dim:#c3b0dd;--r-xs:9px;--r-sm:11px;--r:15px;--r-lg:22px;--pill:999px;--sh-1:0 1px 2px #14233b0d, 0 2px 6px -2px #14233b14;--sh-2:0 10px 28px -14px #14233b47;--sh-3:0 30px 70px -30px #14233b6b;--font-display:"Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;--font-sans:"Inter", ui-sans-serif, system-ui, sans-serif;--font-mono:"Space Mono", ui-monospace, "SFMono-Regular", monospace;--side-w:256px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);background:var(--paper);color:var(--ink-700);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.5}h1,h2,h3,h4{font-family:var(--font-display);color:var(--ink);letter-spacing:-.015em;margin:0;font-weight:650;line-height:1.08}a{color:var(--creek-700);text-decoration:none}button{font-family:inherit}:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px;border-radius:5px}.eyebrow{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--accent-700);font-size:.72rem;font-weight:700}.mono{font-family:var(--font-mono)}.app-shell{grid-template-columns:var(--side-w) 1fr;min-height:100vh;display:grid}.sidebar{background:linear-gradient(176deg, #6a28a5 0%, var(--ink) 55%, #2c0b4c 100%);height:100vh;color:var(--on-ink);border-right:1px solid #00000040;flex-direction:column;gap:4px;padding:22px 16px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;padding:4px 8px 20px;display:flex}.brand-name{flex-direction:column;line-height:1.06;display:flex}.brand-name b{font-family:var(--font-display);color:#fff;letter-spacing:-.01em;font-size:1.02rem;font-weight:700}.brand-name span{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--on-ink-dim);margin-top:2px;font-size:.6rem}.nav{flex-direction:column;gap:2px;display:flex}.nav-label{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--on-ink-dim);padding:16px 10px 6px;font-size:.58rem}.nav-link{border-radius:var(--r-sm);color:var(--on-ink-dim);align-items:center;gap:11px;padding:9px 11px;font-size:.91rem;font-weight:550;transition:background .15s,color .15s;display:flex}.nav-link:hover{color:#fff;background:#ffffff0f}.nav-link.active{color:#fff;background:#ffffff1c}.nav-link .ico{color:currentColor;opacity:.85;flex:none;width:18px;height:18px}.nav-link.active .ico{color:var(--accent);opacity:1}.side-foot{border-top:1px solid #ffffff1a;margin-top:auto;padding-top:14px}.userbox{align-items:center;gap:10px;padding:6px 4px;display:flex}.avatar{border-radius:var(--pill);background:linear-gradient(135deg, var(--creek), var(--ink));color:#fff;width:36px;height:36px;font-size:.8rem;font-weight:700;font-family:var(--font-display);flex:none;place-items:center;display:grid}.userbox .who{flex-direction:column;min-width:0;display:flex}.userbox .who b{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:600;overflow:hidden}.userbox .who span{color:var(--on-ink-dim);font-size:.68rem;font-family:var(--font-mono);letter-spacing:.03em}.logout{color:var(--on-ink-dim);border-radius:var(--r-xs);cursor:pointer;background:0 0;border:1px solid #ffffff2e;flex:none;margin-left:auto;padding:7px 9px;font-size:.74rem;font-weight:600;transition:color .15s,border-color .15s}.logout:hover{color:#fff;border-color:#ffffff73}.main{flex-direction:column;min-width:0;display:flex}.page{width:100%;max-width:1200px;margin:0 auto;padding:36px 36px 64px}.page.wide{max-width:1360px}.page-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:26px;padding-bottom:20px;display:flex}.page-head h1{margin-top:8px;font-size:2rem}.page-head .sub{color:var(--ink-500);max-width:54ch;margin-top:8px;font-size:.96rem}.head-actions{flex:none;gap:10px;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-1)}.card-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:16px 20px;display:flex}.card-head h3{font-size:1.06rem}.card-head .count{font-family:var(--font-mono);color:var(--ink-400);font-size:.78rem}.card-pad{padding:20px}.split{grid-template-columns:350px minmax(0,1fr);align-items:start;gap:24px;display:grid}@media (width<=1120px){.split{grid-template-columns:1fr}}.form{flex-direction:column;gap:15px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field>label,.label{color:var(--ink-700);font-size:.78rem;font-weight:600}.input,.select,.textarea{width:100%;font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-xs);padding:10px 12px;font-size:.92rem;transition:border-color .15s,box-shadow .15s}.input::placeholder{color:var(--ink-400)}.input:focus,.select:focus,.textarea:focus{border-color:var(--creek);outline:none;box-shadow:0 0 0 3px #5f74d833}.select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'><path d='M1 1.5 6 6.5 11 1.5' stroke='%238593a6' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-position:right 12px center;background-repeat:no-repeat;padding-right:34px}.row2{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=600px){.row2{grid-template-columns:1fr}}.time-range{align-items:center;gap:10px;display:flex}.time-range .sep{color:var(--ink-400);font-weight:600}.colorpicker{flex-direction:column;gap:9px;display:flex}.swatch-grid{grid-template-columns:repeat(auto-fit,minmax(32px,1fr));gap:7px;max-width:470px;display:grid}.preset-swatch{aspect-ratio:1;border-radius:var(--r-xs);cursor:pointer;color:#fff;border:1px solid #00000024;place-items:center;padding:0;transition:transform 80ms,box-shadow .12s;display:grid;box-shadow:inset 0 1px 2px #ffffff40}.preset-swatch:hover{transform:scale(1.09)}.preset-swatch.selected{box-shadow:0 0 0 2px var(--card), 0 0 0 4px var(--ink)}.swatch-current{color:var(--ink-400);font-size:.78rem}input[type=date].input,input[type=time].input,input[type=number].input{font-family:var(--font-mono)}.btn{font:inherit;border-radius:var(--r-xs);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:11px 16px;font-size:.9rem;font-weight:600;line-height:1;transition:background .15s,border-color .15s,box-shadow .15s,transform 50ms;display:inline-flex}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--ink);color:#fff}.btn-primary:hover{background:var(--ink-800);box-shadow:var(--sh-2)}.btn-accent{background:var(--accent);color:#fff}.btn-accent:hover{background:var(--accent-700);color:#fff}.btn-ghost{background:var(--card);color:var(--ink-700);border-color:var(--line-2)}.btn-ghost:hover{border-color:var(--ink-400);background:var(--card-2)}.btn-danger{color:var(--danger);background:0 0}.btn-danger:hover{background:var(--danger-bg)}.btn-sm{border-radius:8px;padding:6px 11px;font-size:.8rem}.btn-block{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.swatch{border-radius:4px;flex:none;width:13px;height:13px;box-shadow:inset 0 0 0 1px #00000024}.swatch-lg{border-radius:9px;width:30px;height:30px}.badge{border-radius:var(--pill);text-transform:capitalize;background:var(--paper);color:var(--ink-700);border:1px solid var(--line-2);align-items:center;gap:6px;padding:3px 10px;font-size:.72rem;font-weight:650;display:inline-flex}.badge-club{background:var(--creek-050);color:var(--creek-700);border-color:#dfe4fb}.badge-organization{color:#6b21a8;background:#f3ebfb;border-color:#e6d8f7}.badge-external{color:#475569;background:#eef1f5;border-color:#dbe1ea}.role{font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;border-radius:6px;padding:3px 8px;font-size:.66rem;font-weight:700}.role-admin{background:var(--ink);color:#fff}.role-viewer{background:var(--paper);color:var(--ink-500);border:1px solid var(--line-2)}.pill{border-radius:var(--pill);align-items:center;gap:6px;padding:3px 10px;font-size:.73rem;font-weight:600;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.pill-on{background:var(--ok-bg);color:var(--ok)}.pill-off{background:var(--paper);color:var(--ink-400)}.list{flex-direction:column;display:flex}.list .row{border-top:1px solid var(--line);align-items:center;gap:13px;padding:14px 20px;display:flex}.list .row:first-child{border-top:none}.row .rmain{flex-direction:column;gap:3px;min-width:0;display:flex}.row .rmain b{color:var(--ink);font-size:.95rem;font-weight:600}.row .rmeta{color:var(--ink-500);font-size:.78rem;font-family:var(--font-mono);flex-wrap:wrap;gap:10px;display:flex}.row .ractions{flex:none;gap:6px;margin-left:auto;display:flex}.empty{text-align:center;color:var(--ink-400);padding:46px 20px;font-size:.92rem}.alert{border-radius:var(--r-xs);align-items:flex-start;gap:9px;padding:11px 14px;font-size:.88rem;font-weight:500;display:flex}.alert-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line)}.alert-ok{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-line)}.segmented{background:var(--paper);border:1px solid var(--line-2);border-radius:var(--r-xs);gap:3px;padding:3px;display:inline-flex}.segmented label{cursor:pointer;position:relative}.segmented input{opacity:0;cursor:pointer;position:absolute;inset:0}.segmented span{color:var(--ink-500);border-radius:8px;padding:7px 16px;font-size:.85rem;font-weight:600;transition:background .15s,color .15s;display:block}.segmented input:checked+span{background:var(--card);color:var(--ink);box-shadow:var(--sh-1)}.daychips{flex-wrap:wrap;gap:6px;display:flex}.daychip{cursor:pointer;position:relative}.daychip input{opacity:0;cursor:pointer;position:absolute;inset:0}.daychip span{border-radius:var(--r-xs);border:1px solid var(--line-2);background:var(--card);min-width:46px;color:var(--ink-500);font-size:.76rem;font-weight:700;font-family:var(--font-mono);place-items:center;padding:9px 0;transition:background .15s,color .15s,border-color .15s;display:grid}.daychip input:checked+span{background:var(--ink);color:#fff;border-color:var(--ink)}.legend{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-1);flex-wrap:wrap;gap:8px 18px;margin-bottom:18px;padding:14px 18px;display:flex}.legend-title{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-400);align-self:center;font-size:.64rem}.legend-item{color:var(--ink-700);align-items:center;gap:8px;font-size:.84rem;font-weight:500;display:inline-flex}.calendar-shell{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-1);padding:8px;overflow:hidden}.calendar-shell .ec{--ec-accent-color:var(--accent);--ec-border-color:var(--line);--ec-text-color:var(--ink-700);--ec-bg-color:var(--card);--ec-today-bg-color:#5f74d81a;--ec-hover-bg-color:var(--card-2);--ec-button-text-color:var(--ink-700);--ec-button-bg-color:var(--card);--ec-button-border-color:var(--line-2);--ec-button-active-bg-color:var(--ink);--ec-button-active-text-color:#fff;--ec-button-active-border-color:var(--ink);font-family:var(--font-sans)}.calendar-shell .ec-toolbar{flex-wrap:wrap;gap:8px;padding:6px 6px 12px}.calendar-shell .ec-title{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;font-size:1.15rem;font-weight:650}.calendar-shell .ec-button{border-radius:9px;font-size:.85rem;font-weight:600}.calendar-shell .ec-time,.calendar-shell .ec-day-head,.calendar-shell .ec-resource-title{font-family:var(--font-mono);letter-spacing:.02em;font-size:.74rem}.calendar-shell .ec-event{cursor:pointer;border-radius:8px;padding:3px 6px;font-size:.78rem;font-weight:600;box-shadow:0 1px 2px #14233b47;border:1.5px solid color-mix(in srgb, currentColor 60%, transparent)!important}.calendar-shell .ec-event .ec-event-time{font-family:var(--font-mono);opacity:.85}.login{grid-template-columns:1.08fr .92fr;min-height:100vh;display:grid}.login-brand{color:var(--on-ink);background:linear-gradient(158deg, #6c29a8 0%, var(--ink) 58%, #290a45 100%);flex-direction:column;justify-content:space-between;padding:52px;display:flex;position:relative;overflow:hidden}.login-brand>*{z-index:2;position:relative}.lb-top{align-items:center;gap:14px;display:flex}.lb-top b{font-family:var(--font-display);color:#fff;font-size:1.05rem}.lb-top span{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--on-ink-dim);margin-top:2px;font-size:.62rem;display:block}.lb-hero{margin-top:auto}.lb-hero .kicker{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--accent);font-size:.72rem;font-weight:700}.lb-hero h1{color:#fff;letter-spacing:-.02em;max-width:13ch;margin-top:16px;font-size:3rem;line-height:1.02}.lb-hero p{color:var(--on-ink-dim);max-width:36ch;margin-top:18px;font-size:1.05rem}.lb-foot{border-top:1px solid #ffffff1f;gap:22px;margin-top:40px;padding-top:22px;display:flex}.lb-stat b{font-family:var(--font-display);color:#fff;font-size:1.35rem;display:block}.lb-stat span{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--on-ink-dim);font-size:.64rem}.creek-lines{z-index:1;opacity:.55;pointer-events:none;width:140%;height:100%;position:absolute;inset:0}.creek-lines path{animation:22s ease-in-out infinite alternate drift}.creek-lines path:nth-child(2){animation-duration:30s}.creek-lines path:nth-child(3){animation-duration:26s;animation-direction:alternate-reverse}@keyframes drift{0%{transform:translate(0)}to{transform:translate(-9%)}}.login-form-wrap{background:var(--paper);place-items:center;padding:40px;display:grid}.login-card{width:100%;max-width:384px}.login-card .eyebrow{margin-bottom:12px;display:block}.login-card h2{margin-bottom:8px;font-size:1.7rem}.login-card .lead{color:var(--ink-500);margin-bottom:26px;font-size:.96rem}.login-card .form{gap:16px}.login-card .btn{margin-top:4px}@media (width<=820px){.login{grid-template-columns:1fr}.login-brand{min-height:42vh;padding:34px}.lb-hero h1{font-size:2.15rem}.lb-foot{display:none}}@media (width<=900px){.app-shell{grid-template-columns:1fr}.sidebar{flex-direction:row;align-items:center;gap:14px;width:100%;height:auto;padding:10px 16px;position:sticky;top:0;overflow-x:auto}.brand{flex:none;padding:0}.brand-name,.nav-label{display:none}.nav{flex-direction:row;flex:none;gap:4px}.nav-link{white-space:nowrap;padding:8px 11px}.side-foot{border:none;flex:none;margin:0 0 0 auto;padding:0}.userbox .who{display:none}.page{padding:24px 18px 52px}.page-head{flex-direction:column;align-items:flex-start}}.res-grid{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:24px;display:grid}@media (width<=1120px){.res-grid{grid-template-columns:1fr}.summary{position:static}}.select-add{align-items:stretch;gap:8px;display:flex}.select-add .select{flex:auto;min-width:0}.icon-btn{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-xs);width:40px;color:var(--accent-700);cursor:pointer;flex:none;place-items:center;padding:0;transition:background .15s,border-color .15s;display:grid}.icon-btn:hover{background:var(--accent-050);border-color:var(--accent)}.dayrows{flex-direction:column;gap:8px;display:flex}.dayrow{background:var(--card-2);border:1px solid var(--line);border-radius:var(--r-xs);grid-template-columns:46px minmax(0,1fr);align-items:center;gap:12px;padding:10px 12px;display:grid}.dayrow .dow{font-family:var(--font-mono);color:var(--ink);font-size:.78rem;font-weight:700}.dayrow .dayrow-fields{grid-template-columns:1.4fr 1fr auto 1fr;align-items:center;gap:8px;display:grid}.dayrow .input{padding:8px 10px;font-size:.84rem}.dayrow .sep{color:var(--ink-400);text-align:center;font-weight:600}@media (width<=560px){.dayrow .dayrow-fields{grid-template-columns:1fr}.dayrow .sep{display:none}}.dayrow-empty{text-align:center;color:var(--ink-400);background:var(--card-2);border:1px dashed var(--line-2);border-radius:var(--r-xs);padding:16px;font-size:.86rem}.summary{position:sticky;top:24px}.sum-body{flex-direction:column;gap:14px;padding:18px 20px;display:flex}.sum-line{align-items:baseline;gap:10px;font-size:.9rem;display:flex}.sum-line .k{color:var(--ink-500);flex:none;min-width:84px;font-size:.78rem;font-weight:600}.sum-line .v{color:var(--ink);align-items:center;gap:8px;min-width:0;font-weight:600;display:flex}.occ-head{justify-content:space-between;align-items:center;display:flex}.occ-head .count{font-family:var(--font-mono);color:var(--ink-400);font-size:.78rem}.occ-list{flex-direction:column;gap:6px;max-height:320px;margin:0;padding:0;display:flex;overflow:auto}.occ{background:var(--card-2);border:1px solid var(--line);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:8px 11px;font-size:.82rem;display:flex}.occ .occ-when{font-family:var(--font-mono);color:var(--ink-700)}.occ.conflict{background:var(--danger-bg);border-color:var(--danger-line)}.occ .occ-flag{color:var(--danger);align-items:center;gap:5px;font-size:.72rem;font-weight:700;display:inline-flex}.sum-empty{color:var(--ink-400);font-size:.9rem}dialog.modal{border-radius:var(--r);color:var(--ink-700);width:min(440px,100vw - 32px);box-shadow:var(--sh-3);border:none;padding:0}dialog.modal::backdrop{background:#1a0c306b}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.modal-head h3{font-size:1.05rem}.modal-close{color:var(--ink-400);cursor:pointer;background:0 0;border:none;border-radius:6px;place-items:center;padding:4px;display:grid}.modal-close:hover{background:var(--paper);color:var(--ink)}.modal-body{padding:20px}.modal-foot{border-top:1px solid var(--line);background:var(--card-2);border-radius:0 0 var(--r) var(--r);justify-content:flex-end;gap:10px;padding:14px 20px;display:flex}.backlink{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-500);align-items:center;gap:6px;margin-bottom:10px;font-size:.7rem;display:inline-flex}.backlink:hover{color:var(--accent-700)}.stat-strip{flex:none;gap:10px;display:flex}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--sh-1);text-align:center;min-width:78px;padding:10px 18px}.stat b{font-family:var(--font-display);color:var(--ink);font-size:1.5rem;line-height:1.1;display:block}.stat span{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-400);font-size:.58rem}.filterbar{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:18px;display:flex}.filterbar .field{gap:5px}.filterbar .field.grow{flex:200px;min-width:160px}.filterbar>.btn{flex:none}.search-field{align-items:center;display:flex;position:relative}.search-field .search-ico{color:var(--ink-400);pointer-events:none;position:absolute;left:11px}.search-field .input{padding-left:34px}.list .row .when{font-family:var(--font-mono);color:var(--ink-500);white-space:nowrap;margin-left:auto;font-size:.78rem}.badge-confirmed{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-line)}.badge-cancelled{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-line)}.pager{border-top:1px solid var(--line);justify-content:center;align-items:center;gap:14px;padding:14px 20px;display:flex}.pager-info{color:var(--ink-500);font-size:.78rem}.detail-body{flex-direction:column;gap:11px;display:flex}.detail-when{color:var(--ink-500);margin:0 0 12px;font-size:.82rem}.detail-list .row{padding-left:0;padding-right:0}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
