:root{--slot-height: 1.09375rem;--topbar-height: 6.5rem;--ink: #1f2937;--muted: #6b7280;--paper: #fdfdfc;--rule-quarter: #e2e0da;--rule-hour: #b8b5ad;--row-shade: rgb(55 54 54 / 4%);--block-grey: #d4d4d4;--alert-ink: #7f1d1d;--alert-paper: #fee2e2;font-family:system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink)}*{box-sizing:border-box}html{scroll-padding-top:calc(var(--topbar-height) + 3.5rem)}body{margin:0;background:var(--paper)}.shell{max-width:1600px;margin:0 auto;padding:.75rem}.shell:not(.settings):not(.login){display:flex;flex-direction:column;height:100vh;height:100dvh}.shell:not(.settings):not(.login)>.topbar,.shell:not(.settings):not(.login)>.shell__failure,.shell:not(.settings):not(.login)>.shell__notice{flex:0 0 auto}.shell:not(.settings):not(.login) .shell__board{flex:1 1 auto;min-height:0}.topbar{position:sticky;top:0;z-index:10;display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"prev today next" "date date date";align-items:center;gap:.3rem 1rem;min-height:var(--topbar-height);padding-bottom:.5rem;background:var(--paper)}.topbar__date{grid-area:date;text-align:center}.topbar__date h1{margin:0;font-size:1.35rem;font-weight:600}.topbar__week{margin:.1rem 0 0;font-size:.95rem;color:var(--muted);letter-spacing:.04em}.topbar__istoday{font-weight:600;color:var(--ink)}.topbar__holiday{font-weight:600;color:#b45252}.topbar__step,.topbar__today{padding:.5rem .9rem;font:inherit;color:inherit;background:#fff;border:1px solid var(--rule-hour);border-radius:999px;cursor:pointer}@media(max-width:700px){.topbar__step-words{display:none}}.topbar__step:first-of-type{grid-area:prev}.topbar__step:nth-of-type(2){grid-area:next}.topbar__actions{display:flex;grid-area:today;gap:.5rem;justify-self:center}.topbar__today{padding:.35rem 1.4rem}.topbar__icon{display:flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;padding:0;color:inherit;background:#fff;border:1px solid var(--rule-hour);border-radius:50%;cursor:pointer}.topbar__icon:hover,.topbar__icon:focus-visible{background:#f3f4f6}.topbar__icon:disabled{cursor:default;opacity:.45}.topbar__icon:disabled:hover{background:#fff}.topbar__step:hover,.topbar__today:hover{background:#f3f4f6}.topbar__heading{display:flex;align-items:center;justify-content:center;gap:.4rem}.topbar__pick{display:flex;align-items:center;padding:.25rem;color:var(--muted);background:none;border:1px solid transparent;border-radius:.3rem;cursor:pointer}.topbar__pick:hover,.topbar__pick:focus-visible{color:var(--ink);border-color:var(--rule-hour)}.topbar__picker{position:relative;display:inline-flex}.topbar__pick-input{position:absolute;right:0;bottom:0;width:1px;height:1px;padding:0;border:0;opacity:0;pointer-events:none}.shell__board{display:flex;align-items:stretch;gap:.35rem;min-height:12rem}.shell__day{position:relative;flex:1 1 auto;min-width:0;overflow:auto;scroll-padding-top:3rem}.shell__fading{opacity:.45}.shell__loading{position:absolute;top:.6rem;left:50%;z-index:11;margin:0;padding:.2rem .6rem;font-size:.85rem;background:#fff;border:1px solid var(--rule-hour);border-radius:.3rem;transform:translate(-50%)}.edge{flex:0 0 clamp(1.75rem,100vw - 1280px,9rem);font-size:clamp(1.5rem,(100vw - 1280px) / 3,3rem);line-height:1;color:var(--muted);background:none;border:0}.edge:hover{color:var(--ink)}.edge--prev{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M15 4 L7 12 L15 20' fill='none' stroke='white' stroke-width='5.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M15 4 L7 12 L15 20' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 7 12,w-resize}.edge--next{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath d='M9 4 L17 12 L9 20' fill='none' stroke='white' stroke-width='5.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M9 4 L17 12 L9 20' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 17 12,e-resize}.board__scroller{width:max-content;min-width:100%}.board__heads,.board__grid{display:grid;width:100%}.board__grid{margin-top:.4rem}.board__heads{position:sticky;top:0;z-index:9;background:var(--paper);box-shadow:0 2px 5px #0000001f}.board__head{display:flex;gap:.4rem;align-items:center;justify-content:center;padding:.4rem .5rem;font-weight:600;text-align:center;border-bottom:1px solid var(--rule-hour);overflow-wrap:anywhere}.board__scale{position:sticky;left:0;z-index:7;background:var(--paper)}.board__hour{position:sticky;left:0;z-index:8;background:var(--paper);padding-right:.25rem;font-size:.75rem;color:var(--muted);text-align:right;transform:translateY(-.4em)}.board__hour--last{align-self:end;transform:translateY(.4em)}.board__column{border-left:1px solid var(--rule-hour);background-image:linear-gradient(to bottom,var(--rule-hour) 2px,transparent 2px),linear-gradient(to bottom,var(--rule-quarter) 1px,transparent 1px);background-repeat:repeat-y}.board__closed{z-index:0;background:#3736361a;pointer-events:none}.board__rows{background-image:linear-gradient(to bottom,transparent 50%,var(--row-shade) 50%);background-size:100% calc(var(--slot-height) * 2);background-repeat:repeat-y;pointer-events:none}.entry{position:relative;z-index:1;display:flex;flex-direction:column;gap:.05rem;overflow:hidden;margin:1px 2px;padding:.1rem .3rem;font:inherit;font-size:.78rem;line-height:1.15;color:var(--ink);text-align:left;border:1px solid rgb(0 0 0 / 18%);border-radius:.25rem}.entry{cursor:grab}.entry--dragging{z-index:3;cursor:grabbing;opacity:.9;box-shadow:0 2px 6px #00000040}.entry--refused{cursor:not-allowed;opacity:.55;outline:2px solid var(--alert-ink);outline-offset:-2px}.entry__fold{position:absolute;right:0;bottom:0;width:0;height:0;border-bottom:15px solid var(--ink);border-left:15px solid transparent}.entry__grip{position:absolute;right:0;left:0;height:25%;min-height:3px;max-height:6px;cursor:ns-resize}.entry__grip--top{top:0}.entry__grip--bottom{bottom:0}.board__proposal{z-index:2;display:flex;align-items:center;justify-content:center;margin:1px 2px;font-size:.72rem;font-variant-numeric:tabular-nums;color:var(--ink);background:#1f293714;border:1px dashed rgb(31 41 55 / 55%);border-radius:.25rem;pointer-events:none}.board__proposal--refused{color:var(--alert-ink);background:#991b1b1a;border-color:var(--alert-ink)}.entry--block{color:#374151;background:repeating-linear-gradient(45deg,var(--block-grey),var(--block-grey) 5px,#c9c9c9 5px,#c9c9c9 10px)}.entry__time{font-variant-numeric:tabular-nums;font-size:.72rem;color:var(--ink)}.entry__customer{font-weight:600;overflow-wrap:anywhere}.entry__treatment,.entry__label{overflow-wrap:anywhere}.entry--compact .entry__line{display:flex;gap:.3rem;align-items:baseline;white-space:nowrap}.entry--one-line,.entry--block.entry--compact{padding:0 .3rem}.entry--block .entry__line .entry__label,.entry__line .entry__customer{min-width:0;overflow:hidden;text-overflow:ellipsis}.entry__meta{position:absolute;top:0;right:.2rem;font-size:.6rem;font-weight:600;color:#3f3f46;letter-spacing:.03em;font-variant-numeric:tabular-nums}.entry__meta--line{position:static;flex:0 0 auto;margin-left:auto}.entry__duration{font-variant-numeric:tabular-nums;color:#3f3f46}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.board__empty{font-size:.8rem;color:var(--muted)}.board__undrawable,.shell__failure{padding:.4rem .6rem;margin:.5rem 0;font-size:.85rem;color:var(--alert-ink);background:var(--alert-paper);border-radius:.3rem}.board__undrawable p,.shell__failure p{margin:0 0 .3rem}.board__undrawable ul{margin:0;padding-left:1.2rem}.shell__failure button{font:inherit;padding:.25rem .7rem;color:inherit;background:#fff;border:1px solid var(--alert-ink);border-radius:.3rem;cursor:pointer}.shell__failure-detail{color:#991b1b;font-weight:400}.board__blocked{position:relative;flex:0 0 auto;width:.95rem;height:.95rem;margin:0;appearance:none;background:#fff;border:1px solid var(--rule-hour);border-radius:.2rem;cursor:pointer}.board__blocked:hover{border-color:var(--alert-ink)}.board__blocked:checked{background:var(--alert-paper);border-color:var(--alert-ink)}.board__blocked:checked:before,.board__blocked:checked:after{position:absolute;inset:50% auto auto 50%;width:.62rem;height:2px;content:"";background:var(--alert-ink);border-radius:1px}.board__blocked:checked:before{transform:translate(-50%,-50%) rotate(45deg)}.board__blocked:checked:after{transform:translate(-50%,-50%) rotate(-45deg)}.board__blocked:focus-visible{outline:2px solid var(--ink);outline-offset:1px}.board__column{cursor:crosshair}.board__grid{-webkit-user-select:none;user-select:none}.shell__notice{display:flex;gap:.75rem;align-items:center;justify-content:space-between;padding:.4rem .6rem;margin:.5rem 0;font-size:.85rem;background:#fff7ed;border:1px solid #d9a066;border-radius:.3rem}.shell__notice p{margin:0}.shell__notice button{padding:.2rem .7rem;font:inherit;background:#fff;border:1px solid #d9a066;border-radius:.3rem;cursor:pointer}.modal__backdrop{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:3rem 1rem;overflow-y:auto;background:#1f293773}.modal{display:flex;flex-direction:column;gap:.6rem;width:min(28rem,100%);padding:1rem 1.1rem 1.1rem;background:var(--paper);border-radius:.5rem;box-shadow:0 10px 30px #00000040}.modal h2{margin:0;font-size:1.1rem}.modal__row{display:flex;flex-direction:column;gap:.2rem;font-size:.85rem;color:var(--muted)}.modal__row--check{flex-direction:row;gap:.45rem;align-items:center;color:var(--ink);cursor:pointer}.modal__row input,.modal__row select,.modal__row textarea{padding:.35rem .5rem;font:inherit;font-size:.95rem;color:var(--ink);background:#fff;border:1px solid var(--rule-hour);border-radius:.3rem}.modal__row--check input{width:auto;padding:0}.modal__times{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.modal__problem{margin:0;padding:.4rem .6rem;font-size:.85rem;color:var(--alert-ink);background:var(--alert-paper);border-radius:.3rem}.modal__actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:.2rem}.modal__spacer{flex:1 1 auto}.modal__actions button,.modal__confirm button{padding:.4rem .9rem;font:inherit;color:var(--ink);background:#fff;border:1px solid var(--rule-hour);border-radius:.35rem;cursor:pointer}.modal__actions .modal__save{font-weight:600;color:#fff;background:#1f2937;border-color:#1f2937}.modal__actions .modal__danger,.modal__confirm .modal__danger{color:var(--alert-ink);border-color:var(--alert-ink)}.modal__confirm{font-size:.9rem;font-weight:600;color:var(--alert-ink)}.login{display:flex;justify-content:center;padding-top:12vh}.login__form{display:flex;flex-direction:column;gap:.35rem;width:100%;max-width:22rem}.login__form h1{margin:0;font-size:1.4rem}.login__hint{margin:0 0 .6rem;font-size:.9rem;color:var(--muted)}.login__form label{font-size:.85rem;font-weight:600}.login__form input{padding:.45rem .55rem;margin-bottom:.5rem;font:inherit;color:var(--ink);background:#fff;border:1px solid var(--rule-hour);border-radius:.35rem}.login__form button[type=submit]{padding:.5rem .9rem;font:inherit;font-weight:600;color:#fff;background:#1f2937;border:1px solid #1f2937;border-radius:.35rem;cursor:pointer}.login__form button[type=submit]:disabled{cursor:default;opacity:.6}.login__link{margin-top:.6rem;padding:0;font:inherit;font-size:.85rem;color:var(--muted);text-decoration:underline;background:none;border:none;cursor:pointer}.login__error{margin:0 0 .3rem;padding:.4rem .6rem;font-size:.85rem;color:var(--alert-ink);background:var(--alert-paper);border-radius:.3rem}.login__notice{margin:0 0 .6rem;font-size:.85rem;color:var(--ink)}.settings{max-width:44rem}.settings__bar{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:.6rem 0;border-bottom:1px solid var(--rule-hour)}.settings h1{margin:0;font-size:1.4rem}.settings h2{margin:0 0 .2rem;font-size:1.05rem}.settings__section{padding:1rem 0;border-bottom:1px solid var(--rule-quarter)}.settings__hint{margin:0 0 .6rem;font-size:.85rem;color:var(--muted)}.settings button{padding:.3rem .7rem;font:inherit;font-size:.85rem;color:var(--ink);background:#fff;border:1px solid var(--rule-hour);border-radius:.3rem;cursor:pointer}.settings button:disabled{cursor:default;opacity:.45}.settings input{padding:.35rem .5rem;font:inherit;color:var(--ink);background:#fff;border:1px solid var(--rule-hour);border-radius:.3rem}.settings__gate{display:flex;flex-direction:column;gap:.35rem;width:100%;max-width:20rem;margin:12vh auto 0}.settings__gate input{margin-bottom:.5rem}.settings__gate button[type=submit]{padding:.5rem .9rem;font-size:inherit;font-weight:600;color:#fff;background:#1f2937;border-color:#1f2937}.settings__link{margin-top:.6rem;padding:0;color:var(--muted);text-decoration:underline;background:none;border:none}.settings__staff{margin:0 0 1rem;padding:0;list-style:none}.settings__staff li{display:flex;align-items:center;gap:.4rem;padding:.35rem 0;border-top:1px solid var(--rule-quarter)}.settings__row--inactive .settings__name{color:var(--muted)}.settings__order{display:flex;flex-direction:column;gap:.1rem}.settings__order button{padding:0 .35rem;line-height:1.1}.settings__name{flex:1;font-weight:600}.settings__tag{font-weight:400;color:var(--muted)}.settings__rename{display:flex;flex:1;gap:.4rem}.settings__rename input{flex:1}.settings__confirm{font-size:.85rem;font-weight:600;color:var(--alert-ink)}.settings .settings__danger{color:var(--alert-ink);border-color:var(--alert-ink)}.settings__add{display:flex;align-items:center;gap:.4rem}.settings__add label{font-size:.85rem;font-weight:600}.settings__hours ul{margin:0 0 1rem;padding:0;list-style:none}.settings__hours li{display:flex;align-items:center;gap:.4rem;padding:.35rem 0;border-top:1px solid var(--rule-quarter)}.settings__weekday{width:7.5rem;font-weight:600}.settings__closed{display:flex;align-items:center;gap:.3rem;font-size:.85rem}.settings__credential{display:flex;flex-direction:column;align-items:flex-start;gap:.3rem;max-width:24rem;margin-bottom:1.2rem}.settings__credential label{font-size:.85rem;font-weight:600}.settings__credential input{width:100%}.settings__error{margin:.5rem 0;padding:.4rem .6rem;font-size:.85rem;color:var(--alert-ink);background:var(--alert-paper);border-radius:.3rem}.settings__notice{margin:.5rem 0;font-size:.85rem;color:var(--ink)}
