:root{--brand-blue: #3d7ea6;--brand-green: #6aae8b;--color-bg: #f8faf9;--color-surface: #ffffff;--color-border: #dde5e2;--color-border-strong: #c5d2cd;--color-primary: #336b58;--color-primary-hover: #2a5a4a;--color-primary-light: #eef5f2;--color-text: #172420;--color-text-muted: #62756d;--color-text-faint: #a4b3ac;--color-success: #3e8a68;--color-success-bg: #eef7f2;--color-warning: #c1853b;--color-warning-bg: #fdf6ec;--color-error: #c25b5b;--color-error-bg: #faecec;--color-info-bg: #ebf2f7;--radius: 12px;--radius-sm: 8px;--shadow: 0 2px 12px rgba(46, 41, 37, .07);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--color-bg)}a{color:var(--color-primary)}h1,h2,h3{line-height:1.25;margin:0 0 8px}h1{font-size:1.5rem}h2{font-size:1.15rem}h3{font-size:1rem}.muted{color:var(--color-text-muted)}.small{font-size:.875rem}.brand{font-weight:700;letter-spacing:.01em;white-space:nowrap}.brand-blue{color:var(--brand-blue)}.brand-green{color:var(--brand-green)}.topbar{position:sticky;top:0;z-index:10;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.topbar-inner{max-width:960px;margin:0 auto;padding:12px 16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.topbar .brand{text-decoration:none}.topbar nav{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap;align-items:center}.navlink{padding:6px 10px;border-radius:var(--radius-sm);color:var(--color-text-muted);text-decoration:none;font-weight:500;font-size:.95rem;background:none;border:0;cursor:pointer;font-family:inherit}.navlink:hover{background:var(--color-primary-light);color:var(--color-text)}.navlink.active{color:var(--color-primary);background:var(--color-primary-light)}.page{max-width:640px;margin:0 auto;padding:24px 16px 64px}.page-wide{max-width:960px}.page-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.page-head h1{margin:0}.page-head .spacer{flex:1}.center-shell{min-height:calc(100vh - 120px);display:grid;place-items:center;padding:24px 16px}.center-shell .card{width:100%;max-width:440px}.footer{text-align:center;padding:24px 16px 32px;font-size:.85rem;color:var(--color-text-faint)}.footer a{color:var(--color-text-muted);margin:0 8px}.lang-switch{display:inline-flex;border:1px solid var(--color-border);border-radius:999px;overflow:hidden}.lang-switch button{border:0;background:none;padding:4px 10px;font:inherit;font-size:.8rem;font-weight:600;color:var(--color-text-muted);cursor:pointer}.lang-switch button[aria-pressed=true]{background:var(--color-primary);color:#fff}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:24px 20px;box-shadow:var(--shadow)}.card+.card{margin-top:16px}.stack>*+*{margin-top:16px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.field{margin-bottom:16px}.field label{display:block;font-weight:600;font-size:.9rem;margin-bottom:6px}.field input,.field select,.field textarea,.input{width:100%;font:inherit;padding:10px 12px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text)}.field input:focus,.field select:focus,.field textarea:focus,.input:focus{outline:2px solid var(--brand-green);outline-offset:1px;border-color:var(--color-primary)}.field input[aria-invalid=true]{border-color:var(--color-error)}.hint{margin:6px 0 0;font-size:.82rem;color:var(--color-text-muted)}.field-error{margin:6px 0 0;font-size:.85rem;color:var(--color-error)}.check{display:flex;gap:10px;align-items:flex-start;margin-bottom:12px;font-size:.95rem}.check input{width:18px;height:18px;margin-top:2px;accent-color:var(--color-primary);flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:inherit;font-weight:600;font-size:.95rem;padding:11px 20px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;text-decoration:none;min-height:44px;transition:background .12s ease}.btn:disabled{opacity:.6;cursor:not-allowed}.btn:focus-visible,.icon-btn:focus-visible,.navlink:focus-visible,.chip:focus-visible,.option:focus-visible{outline:3px solid var(--brand-green);outline-offset:2px}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-primary-light)}.btn-ghost{background:none;color:var(--color-primary);padding-left:8px;padding-right:8px}.btn-danger{background:var(--color-surface);color:var(--color-error);border-color:var(--color-error)}.btn-danger:hover:not(:disabled){background:var(--color-error-bg)}.btn-block{width:100%}.btn-sm{min-height:36px;padding:6px 12px;font-size:.875rem}.icon-btn{border:0;background:none;font-size:1.5rem;line-height:1;cursor:pointer;color:var(--color-text-muted);padding:4px 8px;border-radius:var(--radius-sm)}.alert{padding:12px 14px;border-radius:var(--radius-sm);font-size:.92rem;margin-bottom:16px;border-left:4px solid}.alert-info{background:var(--color-info-bg);border-color:var(--brand-blue)}.alert-error{background:var(--color-error-bg);border-color:var(--color-error)}.alert-success{background:var(--color-success-bg);border-color:var(--color-success)}.alert-warning{background:var(--color-warning-bg);border-color:var(--color-warning)}.loading{display:flex;align-items:center;gap:10px;color:var(--color-text-muted);padding:24px 0;justify-content:center}.spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.turnstile{min-height:65px;margin-bottom:16px}.options{display:grid;gap:10px}.option{display:flex;align-items:center;gap:12px;width:100%;text-align:left;font:inherit;padding:16px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;color:var(--color-text)}.option:hover{border-color:var(--color-primary)}.option[aria-pressed=true]{border-color:var(--color-primary);background:var(--color-primary-light);box-shadow:inset 0 0 0 1px var(--color-primary)}.option .grow{flex:1;min-width:0}.option .price{font-weight:700;white-space:nowrap}.days{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 8px;scroll-snap-type:x mandatory}.chip{flex:0 0 auto;scroll-snap-align:start;font:inherit;border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-sm);padding:8px 12px;cursor:pointer;text-align:center;min-width:64px;color:var(--color-text)}.chip small{display:block;color:var(--color-text-muted);font-size:.75rem}.chip strong{display:block;font-size:1.1rem}.chip[aria-pressed=true]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.chip[aria-pressed=true] small{color:#e6f0ec}.chip:disabled{opacity:.4;cursor:not-allowed}.times{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}.times .chip{min-width:0;font-weight:600}.summary{background:var(--color-primary-light);border-radius:var(--radius-sm);padding:14px 16px;margin:0 0 16px;display:grid;grid-template-columns:auto 1fr;gap:6px 16px}.summary dt{color:var(--color-text-muted);font-size:.88rem}.summary dd{margin:0;font-weight:600}.step-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:24px 0 10px}.step-head h2{margin:0}.list{list-style:none;margin:0;padding:0}.list-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:14px 16px}.list-item+.list-item{margin-top:10px}.badge{display:inline-block;font-size:.75rem;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--color-primary-light);color:var(--color-primary);white-space:nowrap}.badge-arrived{background:var(--color-success-bg);color:var(--color-success)}.badge-no_show{background:var(--color-error-bg);color:var(--color-error)}.badge-cancelled{background:#eef0ef;color:var(--color-text-muted)}.badge-paid{background:var(--color-success-bg);color:var(--color-success)}.badge-unpaid,.badge-warn{background:var(--color-warning-bg);color:#8a5a1c}.modal-backdrop{position:fixed;inset:0;background:#17242073;display:grid;place-items:center;padding:16px;z-index:50}.modal{background:var(--color-surface);border-radius:var(--radius);width:100%;max-width:520px;max-height:calc(100vh - 32px);overflow-y:auto;padding:20px;box-shadow:0 10px 40px #0003}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.modal-head h2{margin:0}.table-wrap{overflow-x:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}table.table{width:100%;border-collapse:collapse;font-size:.92rem}.table th,.table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--color-border);vertical-align:middle}.table th{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);background:var(--color-bg)}.table tr:last-child td{border-bottom:0}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:16px 0}.stat{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:12px 14px}.stat .label{font-size:.78rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.stat .value{font-size:1.35rem;font-weight:700}@media(max-width:520px){.card{padding:20px 16px}h1{font-size:1.3rem}}.legal h2{margin-top:24px}.legal ul{padding-left:20px}.legal li+li{margin-top:4px}.invite-card{margin-top:32px}.invite-row{display:flex;gap:8px;flex-wrap:wrap}.invite-row .input{flex:1 1 220px;min-width:0}.page-cal{max-width:1200px}.seg{display:inline-flex;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:2px}.seg button{border:0;background:none;padding:5px 12px;border-radius:6px;font:inherit;font-size:.85rem;font-weight:600;color:var(--color-text-muted);cursor:pointer}.seg button[aria-pressed=true]{background:var(--color-surface);color:var(--color-primary);box-shadow:0 1px 3px #00000014}.cal-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.cal-nav{display:flex;align-items:center;justify-content:space-between;gap:8px}.cal-nav .btn{font-size:1.3rem;line-height:1}.cal-nav-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center;text-align:center}.cal-nav-title h2{margin:0}.cal-today{border:0;background:var(--color-primary-light);color:var(--color-primary);font:inherit;font-size:.75rem;font-weight:700;padding:3px 10px;border-radius:999px;cursor:pointer}.cal-summary{display:flex;flex-wrap:wrap;gap:6px 16px;margin:10px 0 12px;justify-content:center}.cal-toggle{display:inline-flex;align-items:center;gap:4px;cursor:pointer}.cal-grid-wrap{border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}.cal-week{overflow-x:auto}.cal-week .cal-grid-inner{min-width:680px}.cal-grid-inner{display:grid;position:relative}.cal-head-corner{background:var(--color-bg);border-bottom:1px solid var(--color-border)}.cal-head{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 0;border:0;border-left:1px solid var(--color-border);border-bottom:1px solid var(--color-border);background:var(--color-bg);font:inherit;color:var(--color-text);cursor:pointer}.cal-head:disabled{cursor:default}.cal-head:not(:disabled):hover{background:var(--color-primary-light)}.cal-head-dow{font-size:.7rem;font-weight:700;text-transform:uppercase;color:var(--color-text-muted)}.cal-head-num{font-weight:700;width:28px;height:28px;display:grid;place-items:center;border-radius:999px}.cal-head-count{font-size:.7rem;font-weight:700;color:var(--color-text-muted);min-height:1em}.cal-head.is-today .cal-head-dow{color:var(--color-primary)}.cal-head.is-today .cal-head-num{background:var(--color-primary);color:#fff}.cal-scroll{max-height:70vh;overflow-y:auto}.cal-hours{position:relative;background:var(--color-surface)}.cal-hours span{position:absolute;right:8px;transform:translateY(-50%);font-size:.7rem;color:var(--color-text-faint);font-weight:600}.cal-hours span:first-child{transform:none}.cal-col{position:relative;border-left:1px solid var(--color-border);background:repeating-linear-gradient(-45deg,#f1f4f3 0 6px,#e9eeec 6px 7px);cursor:copy}.cal-open{position:absolute;left:0;right:0;background:var(--color-surface)}.cal-col.is-today .cal-open{background:#f6fbf8}.cal-line{position:absolute;left:0;right:0;border-top:1px solid var(--color-border);pointer-events:none;z-index:1}.cal-off{position:absolute;left:0;right:0;z-index:2;background:repeating-linear-gradient(45deg,var(--color-error-bg) 0 8px,#f3dcdc 8px 10px);border-top:2px solid var(--color-error);pointer-events:none}.cal-off span{font-size:.68rem;font-weight:700;color:var(--color-error);padding:2px 4px}.cal-now{position:absolute;left:0;right:0;z-index:4;border-top:2px solid var(--color-error);pointer-events:none}.cal-now:before{content:"";position:absolute;left:-5px;top:-6px;width:10px;height:10px;border-radius:999px;background:var(--color-error)}.cal-block{position:absolute;z-index:3;display:flex;flex-direction:column;align-items:flex-start;overflow:hidden;text-align:left;padding:2px 6px;border:0;border-left:3px solid var(--c);border-radius:6px;font:inherit;color:var(--color-text);cursor:pointer;background:linear-gradient(color-mix(in srgb,var(--c) 20%,white),color-mix(in srgb,var(--c) 20%,white)) top / 100% var(--session) no-repeat,repeating-linear-gradient(-45deg,color-mix(in srgb,var(--c) 7%,white) 0 4px,#fff 4px 7px);box-shadow:0 0 0 1px color-mix(in srgb,var(--c) 25%,white);transition:box-shadow .15s}.cal-block:hover{z-index:5;box-shadow:0 2px 8px #00000026}.cal-block.is-active{z-index:5;box-shadow:0 0 0 2px var(--c),0 2px 8px #00000026}.cal-block-time{font-size:.72rem;font-weight:700;color:var(--c);white-space:nowrap}.cal-block-name{font-size:.78rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.cal-block-meta{font-size:.72rem;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.cal-block.is-cancelled{opacity:.5}.cal-block.is-cancelled .cal-block-name{text-decoration:line-through}.cal-block.is-no_show{--c: var(--color-error) !important;border-left-style:dashed}.cal-month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.cal-month-head div{text-align:center;font-size:.7rem;font-weight:700;text-transform:uppercase;color:var(--color-text-muted);padding:4px 0}.cal-mday{min-height:100px;min-width:0;display:flex;flex-direction:column;gap:3px;padding:6px;text-align:left;font:inherit;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer}.cal-mday:hover{border-color:var(--color-primary)}.cal-mday.is-past{background:var(--color-bg)}.cal-mday.is-outside{opacity:.45}.cal-mday.is-today{border:2px solid var(--color-primary);background:var(--color-primary-light)}.cal-mday-top{display:flex;justify-content:space-between;align-items:center}.cal-mday-num{font-size:.82rem;font-weight:700}.cal-mday.is-today .cal-mday-num{color:var(--color-primary)}.cal-mday-count{font-size:.68rem;font-weight:700;padding:0 7px;border-radius:999px;background:var(--color-primary-light);color:var(--color-primary)}.cal-mday-list{display:flex;flex-direction:column;gap:2px;min-width:0}.cal-chip{display:block;font-size:.7rem;font-weight:600;padding:1px 5px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--c);background:color-mix(in srgb,var(--c) 12%,white)}.cal-chip.is-cancelled{text-decoration:line-through;opacity:.55}.cal-chip.is-no_show{color:var(--color-error);background:var(--color-error-bg)}.cal-more{font-size:.68rem;color:var(--color-text-muted);font-weight:600}.cal-legend{display:flex;flex-wrap:wrap;gap:6px 16px;justify-content:center;margin-top:14px;padding-top:12px;border-top:1px solid var(--color-border);font-size:.75rem;color:var(--color-text-muted);font-weight:600}.cal-legend span{display:inline-flex;align-items:center;gap:6px}.cal-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}.cal-legend .cal-legend-closed{background:repeating-linear-gradient(-45deg,#f1f4f3 0 2px,#d8e0dc 2px 3px);border:1px solid var(--color-border)}.cal-legend .cal-legend-off{background:repeating-linear-gradient(45deg,var(--color-error-bg) 0 2px,#e9b9b9 2px 3px);border:1px solid #e9b9b9}.cal-legend .cal-hint{color:var(--color-text-faint)}.cal-panel{position:fixed;right:16px;bottom:16px;width:min(440px,calc(100vw - 32px));max-height:calc(100vh - 100px);overflow-y:auto;z-index:40;background:var(--color-bg);border:1px solid var(--color-border-strong);border-radius:var(--radius);box-shadow:0 10px 40px #0000002e;padding:12px}.cal-panel-head{display:flex;justify-content:space-between;align-items:center;margin:0 4px 8px}.cal-close{border:0;background:none;font-size:1.4rem;line-height:1;cursor:pointer;color:var(--color-text-muted)}@media(max-width:640px){.cal-card{padding:10px}.cal-legend .cal-hint{display:none}.cal-mday{min-height:56px;padding:4px}.cal-mday-top{flex-direction:column;align-items:flex-start;gap:2px}.cal-mday-count{padding:0 5px}.cal-mday-list{display:none}.cal-panel{left:16px;right:16px;width:auto}}.loc-switch{font:inherit;font-size:.85rem;font-weight:600;color:var(--color-primary);background:var(--color-primary-light);border:1px solid var(--color-border);border-radius:999px;padding:4px 10px;max-width:200px}.staff-tag{color:var(--color-primary);font-weight:600}.role-super_admin{background:#f1ebf8;color:#6a4c93}.role-staff{background:#eef0ef;color:var(--color-text-muted)}fieldset.checks{border:0;padding:0;margin:0 0 16px}fieldset.checks legend{font-weight:600;font-size:.9rem;margin-bottom:6px;padding:0}fieldset.checks .check{margin-bottom:4px}.link-btn{border:0;background:none;padding:0;font:inherit;color:var(--color-primary);font-weight:600;cursor:pointer}.sub-row td{background:var(--color-bg);font-size:.88rem}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.tile{display:flex;flex-direction:column;gap:4px;padding:16px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);text-decoration:none;transition:border-color .15s,box-shadow .15s}.tile:hover{border-color:var(--color-primary);box-shadow:var(--shadow)}.tile strong{font-size:1.05rem}.loc-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}.loc-tabs button,.cal-staff button{border:1px solid var(--color-border);background:var(--color-surface);border-radius:999px;padding:5px 12px;font:inherit;font-size:.85rem;font-weight:600;color:var(--color-text-muted);cursor:pointer}.loc-tabs button[aria-pressed=true],.cal-staff button[aria-pressed=true]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.ready-card{border-left:4px solid var(--color-warning)}.ready-card.is-ready{border-left-color:var(--color-success)}.checklist{list-style:none;margin:0;padding:0}.checklist li{padding:3px 0}.checklist .ok{color:var(--color-success)}.checklist .todo span{color:var(--color-warning)}.counts{display:grid;gap:8px}.count-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--color-border)}.count-row .input{width:90px}.cal-staff{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:10px}.cal-head.is-lane{justify-content:center;padding:8px 4px}.cal-head-name{font-weight:700;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.cal-block-staff{font-size:.68rem;font-weight:700;color:var(--color-text-muted);white-space:nowrap}.cal-block-staff.is-none{color:var(--color-error)}.cal-col.no-add{cursor:default}.option:disabled{opacity:.5;cursor:not-allowed}
