:root{--space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;--space-6:48px;--color-surface:#ffffff;--color-surface-sunken:#f4f5f7;--color-border:#d6d9de;--color-text-primary:#1c1f23;--color-text-secondary:#565d66;--color-accent:#1d4ed8;--color-accent-text:#ffffff;--color-focus:#1d4ed8;--color-shimmer:#e9eaed;--color-error-bg:#fdf1f1;--color-error-border:#e3a6a6;--color-error-text:#8a1f1f;--color-warning-bg:#fdf6ea;--color-warning-border:#dbb96a;--color-warning-text:#6b4c05;--radius:10px;--font-body:16px;--line-body:1.5;color-scheme:light dark;--step-travel:24px;--step-travel-opaque:32px;--step-duration:360ms;--step-ease:cubic-bezier(.33,.45,.3,1)}@media (prefers-color-scheme:dark){:root{--color-surface:#14161a;--color-surface-sunken:#1c2027;--color-border:#333a44;--color-text-primary:#e6e8eb;--color-text-secondary:#9aa2ad;--color-accent:#6ea8fe;--color-accent-text:#14161a;--color-focus:#6ea8fe;--color-shimmer:#262b33;--color-error-bg:#2a1719;--color-error-border:#7d3a3e;--color-error-text:#f2b8b5;--color-warning-bg:#2a2214;--color-warning-border:#7a6224;--color-warning-text:#f0cd8a}}*{box-sizing:border-box}body{margin:0;background:var(--color-surface);color:var(--color-text-primary);font-size:var(--font-body);line-height:var(--line-body);font-family:system-ui,-apple-system,sans-serif}h1,h2{font-weight:600;line-height:1.25;margin:0 0 var(--space-2)}h1{font-size:1.5rem}h2{font-size:1.25rem}p{margin:0 0 var(--space-2);color:var(--color-text-secondary);max-width:65ch}.flow,main{max-width:34rem;margin:0 auto;padding:var(--space-3) var(--space-2)}.step-indicator{font-weight:600;letter-spacing:.02em;color:var(--color-text-secondary);text-transform:uppercase}.recovery,.step-indicator{font-size:1rem;margin-bottom:var(--space-3)}.recovery a{color:var(--color-accent);text-decoration:underline}.panel{display:flex;flex-direction:column;gap:var(--space-2)}.step{animation:step-in-forward var(--step-duration) var(--step-ease) both}.step--back{animation-name:step-in-back}@keyframes step-in-forward{0%{opacity:0;transform:translateX(var(--step-travel))}to{opacity:1;transform:none}}@keyframes step-in-back{0%{opacity:0;transform:translateX(calc(var(--step-travel) * -1))}to{opacity:1;transform:none}}.flow .step:has(.consent-block),.flow .step:has(.details-form){animation-name:step-in-forward-opaque}.flow .step--back:has(.consent-block),.flow .step--back:has(.details-form){animation-name:step-in-back-opaque}@keyframes step-in-forward-opaque{0%{opacity:1;transform:translateX(var(--step-travel-opaque))}to{opacity:1;transform:none}}@keyframes step-in-back-opaque{0%{opacity:1;transform:translateX(calc(var(--step-travel-opaque) * -1))}to{opacity:1;transform:none}}.danger-button,.day-button,.primary-button,.secondary-button,.time-button{min-height:44px;padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);font-size:var(--font-body);font-family:inherit;cursor:pointer}.day-button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);text-align:left}.day-button:hover,.time-button:hover{border-color:var(--color-accent)}.day-button,.primary-button,.secondary-button,.time-button{transition:transform 80ms ease-out,border-color .12s ease-out}.day-button:active,.primary-button:active:not(:disabled),.secondary-button:active:not(:disabled),.time-button:active{transform:scale(.985)}.day-label{font-weight:500}.day-count{color:var(--color-text-secondary);font-size:1rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.day-list{list-style:none;padding:0;margin:0;grid-gap:var(--space-1)}.day-list,.time-grid{display:grid;gap:var(--space-1)}.time-grid{grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr));grid-gap:var(--space-1);margin-top:var(--space-1)}.time-button{width:100%}.time-button:active{background:var(--color-surface-sunken)}.time-grid>.time-button{animation:slot-in .16s ease-out both}.time-grid>.time-button:first-child{animation-delay:0s}.time-grid>.time-button:nth-child(2){animation-delay:24ms}.time-grid>.time-button:nth-child(3){animation-delay:48ms}.time-grid>.time-button:nth-child(4){animation-delay:72ms}.time-grid>.time-button:nth-child(5){animation-delay:96ms}.time-grid>.time-button:nth-child(6){animation-delay:.12s}.time-grid>.time-button:nth-child(7){animation-delay:144ms}.time-grid>.time-button:nth-child(8){animation-delay:168ms}.time-grid>.time-button:nth-child(9){animation-delay:192ms}.time-grid>.time-button:nth-child(n+10){animation-delay:216ms}@keyframes slot-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.time-grid--closing>.time-button{animation:slot-out .16s ease-in both;animation-delay:0s;pointer-events:none}@keyframes slot-out{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(4px)}}.chosen-time{font-size:1.125rem;font-weight:500;color:var(--color-text-primary)}.details-form{gap:var(--space-2)}.details-form,.field{display:flex;flex-direction:column}.field{gap:var(--space-1);font-size:1rem;font-weight:500}.field input,.field select{min-height:44px;padding:0 var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius);font-size:var(--font-body);font-family:inherit;color:var(--color-text-primary);background:var(--color-surface)}.field input[aria-invalid=true]{border-color:var(--color-error-border)}.form-actions{display:flex;gap:var(--space-2);margin-top:var(--space-1)}.primary-button{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-text);font-weight:600;flex:1 1}.secondary-button{background:var(--color-surface);color:var(--color-text-primary);font-weight:500}a.danger-button,a.primary-button,a.secondary-button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;box-sizing:border-box}.danger-button{background:var(--color-surface);border-color:var(--color-error-border);color:var(--color-error-text);font-weight:600}.danger-button:hover:not(:disabled){background:var(--color-error-bg)}.danger-button:disabled,.primary-button:disabled,.secondary-button:disabled{cursor:default;opacity:.7}.field-help{font-weight:400;font-size:var(--font-body);color:var(--color-text-secondary);max-width:65ch;margin:0}.consent-block{flex-direction:column}.consent-block,.consent-check{display:flex;gap:var(--space-1)}.consent-check{align-items:center;min-height:44px;font-size:var(--font-body);cursor:pointer}.consent-check input{width:20px;height:20px;flex:none}.field-help a{color:var(--color-accent);text-decoration:underline}.legal-links{display:flex;flex-wrap:wrap;gap:var(--space-2)}.legal-links a{display:inline-flex;align-items:center;min-height:44px}.page-footer{margin-top:var(--space-6);padding-top:var(--space-2);border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--space-1)}.footer-note{font-size:var(--font-body);color:var(--color-text-secondary);margin:0;max-width:65ch}.footer-note a{color:var(--color-accent);text-decoration:underline}.form-error{background:var(--color-error-bg);border:1px solid var(--color-error-border);border-radius:var(--radius);padding:var(--space-2);color:var(--color-error-text)}.form-error p{color:inherit;margin:0;font-weight:500}.form-warning{background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:var(--radius);padding:var(--space-2);color:var(--color-warning-text)}.form-warning p{color:inherit;margin:0;font-weight:500}.form-error p+p,.form-warning p+p{margin-top:var(--space-1)}.alternatives{list-style:none;padding:0;margin:var(--space-1) 0 0;display:grid;grid-gap:var(--space-1);gap:var(--space-1)}.confirmation-note{color:var(--color-text-secondary);font-size:1.0625rem}.record{display:flex;flex-direction:column}.record-mark{width:38px;height:38px;display:block;margin:0 0 14px}.record-mark circle{fill:none;stroke:var(--color-border);stroke-width:1.5}.record-mark path{fill:none;stroke:var(--color-accent);stroke-width:2.75;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:30;stroke-dashoffset:0;animation:record-draw .62s cubic-bezier(.5,0,.3,1) .82s both}@keyframes record-draw{0%{stroke-dashoffset:30}to{stroke-dashoffset:0}}.record-heading{font-size:1.25rem;font-weight:600;line-height:1.25;margin:0 0 14px;animation:record-rise .36s cubic-bezier(.2,.8,.2,1) both}.record-rule{height:2px;background:var(--color-text-primary);transform-origin:left center;animation:record-wipe .46s cubic-bezier(.22,.78,.28,1) .14s both}.record-rule--hair{height:1px;background:var(--color-border);animation:none}.record-body{padding:var(--space-3) 0;animation:record-rise .42s cubic-bezier(.2,.8,.2,1) .32s both}.record-body--plain{animation:none}@media (pointer:coarse){.booking-main{padding-top:9rem}}.manage-main{min-height:100svh;justify-content:safe center;display:flex;flex-direction:column}.manage-heading{font-size:.875rem;font-weight:400;color:var(--color-text-secondary);margin:0 0 var(--space-2)}.record-body--tight{padding-top:0}.record-date{font-size:.875rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-secondary);margin:0 0 10px;max-width:none}.record-time{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:3.25rem;font-weight:400;letter-spacing:-.045em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:.95;margin:0;color:var(--color-text-primary);max-width:none}.record-zone{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.875rem;letter-spacing:.08em;color:var(--color-text-secondary);margin:10px 0 0;max-width:none}.record-after{padding-top:var(--space-2);animation:record-rise .36s cubic-bezier(.2,.8,.2,1) .56s both}@keyframes record-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.sent{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-3)}.sent-note{font-size:1.0625rem;color:var(--color-text-secondary);margin:0;max-width:65ch;animation:record-rise .42s cubic-bezier(.2,.8,.2,1) .2s both}.skeleton{display:flex;flex-direction:column;gap:var(--space-2)}.skeleton-line{display:block;height:44px;border-radius:var(--radius);background:linear-gradient(90deg,var(--color-surface-sunken) 25%,var(--color-shimmer) 37%,var(--color-surface-sunken) 63%);background-size:400% 100%;animation:skeleton-shimmer 1.4s ease infinite}.skeleton-line.short{width:50%}.skeleton-line.tall{height:76px}.skeleton-line.rule{height:2px;border-radius:0}@keyframes skeleton-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.admin-main{max-width:56rem;margin:0 auto;padding:var(--space-3) var(--space-2)}.form-row{display:flex;gap:var(--space-2);flex-wrap:wrap}.form-row .field{flex:1 1;min-width:10rem}.weekday-fieldset{border:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-1)}.weekday-fieldset legend{font-size:1rem;font-weight:500;padding:0}.weekday-grid{display:flex;flex-wrap:wrap;gap:var(--space-1)}.weekday-chip{display:inline-flex;align-items:center;gap:var(--space-1);min-height:44px;padding:0 var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;font-size:var(--font-body)}.weekday-chip input{width:20px;height:20px}.weekday-chip--checked{border-color:var(--color-accent);background:var(--color-surface-sunken)}.skip-date-row{display:flex;gap:var(--space-2);align-items:center}.skip-date-row input{min-height:44px;padding:0 var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius);font-size:var(--font-body);font-family:inherit}.skip-date-list{list-style:none;padding:0;margin:var(--space-1) 0 0;display:flex;flex-wrap:wrap;gap:var(--space-1)}.skip-date-chip{display:inline-flex;align-items:center;gap:var(--space-1);min-height:44px;padding:0 0 0 var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius)}.remove-chip-button{min-width:44px;min-height:44px;border:none;background:transparent;font-size:1.25rem;line-height:1;cursor:pointer;color:var(--color-text-secondary)}.preview-panel{border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-2);background:var(--color-surface-sunken);display:flex;flex-direction:column;gap:var(--space-2)}.preview-summary{font-weight:500;color:var(--color-text-primary);margin:0}.preview-subhead{font-weight:600;margin:0 0 var(--space-1);color:var(--color-text-primary)}.preview-day-list{list-style:none;padding:0;margin:0;display:grid;grid-gap:var(--space-1);gap:var(--space-1)}.slot-day-groups{display:flex;flex-direction:column;gap:var(--space-2)}.slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));grid-gap:var(--space-1);gap:var(--space-1);margin-top:var(--space-1)}.slot-cell{min-height:44px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);display:flex;align-items:stretch;overflow:hidden}.slot-cell-main{flex:1 1;padding:var(--space-1) var(--space-2);color:inherit;font-size:var(--font-body);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;text-align:left}.slot-cell-main,.slot-cell-remove{min-height:44px;border:none;background:none;font-family:inherit;cursor:pointer}.slot-cell-remove{flex:none;width:44px;border-left:1px solid var(--color-border);color:var(--color-text-secondary);font-size:1.25rem;line-height:1}.slot-cell-remove:hover:not(:disabled){background:var(--color-error-bg);color:var(--color-error-text)}.slot-cell-main:disabled,.slot-cell-remove:disabled{cursor:default;opacity:.7}.slot-cell-state{font-size:.875rem;color:var(--color-text-secondary)}.slot-cell--booked{border-color:var(--color-accent);background:var(--color-surface-sunken)}.slot-cell--blocked{border-color:var(--color-error-border);background:var(--color-error-bg)}.slot-cell--blocked .slot-cell-state{color:var(--color-error-text)}.danger-zone{margin-top:var(--space-6);padding:var(--space-3);border:1px solid var(--color-error-border);border-radius:var(--radius);background:var(--color-error-bg);display:flex;flex-direction:column;gap:var(--space-2)}.danger-zone h2{margin:0;color:var(--color-error-text)}.danger-zone p{margin:0;color:var(--color-text-primary)}.danger-zone .field-help{color:var(--color-text-secondary)}.danger-zone input{background:var(--color-surface)}.danger-zone .form-actions{margin:0}.rule-list{flex-direction:column}.rule-list,.rule-row{display:flex;gap:var(--space-1)}.rule-row{flex-wrap:wrap;align-items:center}.rule-row .rule-number{width:5rem;flex:none}.rule-row .rule-unit{width:7rem;flex:none}.rule-row .rule-channel{width:9rem;flex:none}.rule-remove-button,.rule-row .rule-word{color:var(--color-text-secondary);font-size:var(--font-body)}.rule-remove-button{min-height:44px;min-width:44px;padding:0 var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);font-family:inherit;cursor:pointer}.rule-remove-button:hover{border-color:var(--color-error-border);color:var(--color-error-text)}.toggle-field{display:flex;align-items:center;gap:var(--space-2);min-height:44px;padding:var(--space-1) 0}.toggle-field input{width:24px;height:24px;flex:none}.info-box{border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-2);background:var(--color-surface-sunken);color:var(--color-text-secondary)}.info-box p{margin:0;color:inherit}.admin-shell{display:block}.admin-nav{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-3);padding:var(--space-2) var(--space-2) 0;max-width:56rem;margin:0 auto}.admin-nav a{display:inline-flex;align-items:center;min-height:44px;color:var(--color-text-secondary);font-weight:500;text-decoration:none}.admin-nav a:hover{color:var(--color-text-primary);text-decoration:underline}.admin-nav-end{margin-left:auto;display:flex}.link-button{display:inline-flex;align-items:center;min-height:44px;padding:0;border:none;background:none;font-family:inherit;font-size:var(--font-body);font-weight:500;color:var(--color-text-secondary);cursor:pointer}.link-button:hover{color:var(--color-text-primary);text-decoration:underline}.day-sheet-date{font-size:1.125rem;font-weight:600;color:var(--color-text-primary);margin:0}.day-sheet-nav{display:flex;gap:var(--space-2);margin-bottom:var(--space-2)}.day-sheet-counts{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));grid-gap:var(--space-2);gap:var(--space-2);margin:0}.day-sheet-count{border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-2);background:var(--color-surface-sunken)}.day-sheet-count dt{font-size:1rem;color:var(--color-text-secondary);margin:0 0 4px}.day-sheet-count dd{font-size:1.5rem;font-weight:600;color:var(--color-text-primary);margin:0}.day-sheet-done{color:var(--color-text-secondary)}.day-sheet-empty{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1)}.day-sheet-empty p{margin:0}.table-scroll{overflow-x:auto}.day-sheet-table{width:100%;border-collapse:collapse;font-size:var(--font-body)}.day-sheet-table td,.day-sheet-table th{text-align:left;padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--color-border);vertical-align:middle}.undelivered-notice{border:1px solid var(--color-warning-border);background:var(--color-warning-bg);color:var(--color-warning-text);border-radius:var(--radius);padding:var(--space-2);margin-bottom:var(--space-3)}.undelivered-notice p{color:inherit;margin:0 0 var(--space-1)}.undelivered-notice ul{margin:0;padding-left:var(--space-3)}.day-sheet-table th{font-weight:600;color:var(--color-text-secondary);font-size:1rem}.booking-row-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1)}input[type=checkbox]{accent-color:var(--color-accent)}:where(button,a,input,select):focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important}}.qr-image{width:100%;max-width:18rem;height:auto;display:block}.qr-url{word-break:break-all;margin:var(--space-3) 0 var(--space-2)}