*{box-sizing:border-box}body{margin:0;color:#233e4f;font:12px Arial,sans-serif;background:#fafcfd}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:white;border:1px solid #becfd9;border-radius:3px;padding:5px 8px}button:hover{background:#edf5fa}header{height:39px;display:flex;align-items:center;gap:8px;padding:5px 8px;border-bottom:1px solid #b6cbd7;background:white}header strong{font-size:13px;color:#174d70}header input{padding:3px;border:1px solid #bed0dd;border-radius:3px;width:120px}#menu{margin-left:auto;position:relative}summary{cursor:pointer}#menu summary{padding:3px 10px;border:1px solid #bed0dd;border-radius:3px}#menu nav{position:absolute;right:0;top:29px;width:205px;padding:7px;display:grid;gap:5px;background:#fff;box-shadow:0 3px 15px #1234;z-index:30}#save-state{color:#617d8a;font-size:10px}main{height:calc(100vh - 39px);padding:5px;overflow:hidden}.sheet{height:100%;overflow:auto;border:1px solid #9db8c8}.grid{display:grid;grid-template-columns:43px repeat(7,minmax(134px,1fr));min-width:981px;align-items:start;--unit:32px}.day-head,.time-head{height:27px;grid-row:1;position:sticky;top:0;z-index:10;background:#d7e9f3;border-right:1px solid #a5bdcb;border-bottom:1px solid #a5bdcb;text-align:center;padding:6px 0;font-size:11px}.time-head{grid-column:1;left:0;z-index:12}.day-head small{font-size:9px;color:#648291}.time-axis{grid-row:2;grid-column:1;position:sticky;left:0;z-index:6;background:#eef5f9}.time-axis div{height:32px;border-right:1px solid #a5bdcb;border-bottom:1px solid #bdcfda;text-align:center;padding-top:9px;font-size:10px}.day{grid-row:2;display:grid;grid-template-columns:1fr 58px;border-right:1px solid #a5bdcb;height:768px}.records,.notes{position:relative;height:768px;overflow:hidden}.records{background:#f2f4f5}.band{position:absolute;left:0;right:0;pointer-events:none}.band small{float:right;font-size:8px;padding-right:2px}.row{position:absolute;left:0;right:0;height:32px;border-bottom:1px solid #87a7bb77}.row>button{width:100%;height:100%;border:0;border-radius:0;background:transparent;text-align:left;padding:2px;color:#456779;font-size:10px}.row>button:hover{box-shadow:inset 0 0 0 2px #327a9f}.row>button span{visibility:hidden}.row>button:hover span{visibility:visible}.lesson{position:absolute;left:0;right:0;border:0;border-bottom:1px solid #6e97b0;border-radius:0;display:block;text-align:left;padding:2px 3px;overflow:hidden;font-size:11px;line-height:12px}.lesson strong{display:block;font-weight:600;overflow:hidden}.lesson .surname,.lesson .first{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lesson .hours{font-size:9px;white-space:nowrap}.lesson .mark{position:absolute;right:2px;bottom:1px;font-size:9px}.lesson.waiting{box-shadow:inset 0 -3px #dc9a24}.lesson.replacement{box-shadow:inset 3px 0 #278648}.lesson.cancelled{height:15px!important;background:#ffe0dc!important;color:#962a25;border:1px solid #ba554d;padding:0 2px;font-size:9px;line-height:12px;text-decoration:line-through;z-index:4}.lesson.cancelled .first,.lesson.cancelled .hours{display:none}.notes{background:white;border-left:1px solid #a6bfcc}.wish{position:absolute;left:0;right:0;width:100%;background:white;border:0;border-bottom:1px solid #c4d5df;padding:3px 2px;text-align:left;border-radius:0;font-size:10px;line-height:11px;overflow:hidden;height:49px}.wish strong{display:block;font-weight:400}.wish small{font-size:8px;color:#6a8594;display:block;white-space:nowrap}dialog{position:fixed;inset:0 0 0 auto;margin:0;width:min(430px,100vw);height:100vh;max-height:100vh;border:0;border-left:1px solid #b3c8d5;padding:22px;overflow:auto;color:inherit;box-shadow:-5px 0 25px #1234}dialog::backdrop{background:#233d4d44}.close{position:absolute;right:12px;top:12px;border:0;font-size:20px}h2{font-size:18px;margin:2px 26px 7px 0}h3{font-size:13px;margin:17px 0 8px}p{line-height:1.5}p.sub{color:#6b8797;margin:0 0 20px}form{display:grid;gap:12px}label{display:grid;gap:5px;font-size:12px}input,select,textarea{border:1px solid #b8ccd9;background:white;border-radius:3px;padding:7px;min-width:0}textarea{height:76px;resize:vertical}.line{display:flex;gap:10px}.line>label{flex:1}.actions{display:flex;gap:7px;flex-wrap:wrap;margin:13px 0}button.primary{background:#137da6;color:white;border-color:#137da6}.check{display:flex;align-items:center;gap:5px}.check input{margin:0}details.extra{border-top:1px solid #d4e1e8;padding-top:12px;margin-top:15px}details.extra[open]>div{margin-top:10px}.error{color:#9e302a;line-height:1.5;min-height:0}.candidate{border:1px solid #d0dfe8;border-radius:3px;padding:10px;margin:8px 0}.candidate small{display:block;color:#6b8797;font-size:11px;line-height:1.5}.candidate button{margin-top:7px}#message{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:#234b5f;color:white;padding:10px 15px;border-radius:4px;display:none;z-index:100}table{border-collapse:collapse;width:100%}td,th{padding:6px;border-bottom:1px solid #d1e0e8;text-align:left;vertical-align:top}small.muted{color:#738d9c}fieldset{border:1px solid #c9dae4;padding:10px;display:grid;gap:10px}#panel>[data-view=shift-list]{font-size:12px}@media(max-width:600px){header{gap:4px}header strong{font-size:11px}header #week{font-size:10px}header input{width:105px}header button[data-action=today]{display:none}}
.records .row{border-bottom:1px solid #6e91a9;}
.lesson{border-bottom:1px solid #6e91a9;}
.wish-cell{position:absolute;left:0;right:0;width:100%;height:32px;border:0;border-bottom:1px solid #9eb9ca;border-radius:0;background:white;padding:0;z-index:0;}
.wish-cell:hover,.wish-cell:focus-visible{background:#e8f3fa;box-shadow:inset 0 0 0 2px #367fa8;}
.wish{z-index:1;border-bottom:1px solid #9eb9ca;}
.wish{height:32px;padding:1px 2px;line-height:10px;}
.wish strong{font-size:9px;line-height:10px;max-height:20px;overflow:hidden;}
.wish small{font-size:8px;line-height:9px;}

.conflict{padding:10px;border:1px solid #dfaaa0;background:#fff2ed;color:#8c3026;border-radius:3px}button:disabled{cursor:not-allowed;opacity:.55;background:#edf0f2}

.reservation{padding:10px;background:#edf5fa;border:1px solid #c4d7e2;border-radius:3px;margin-bottom:12px}.reservation p{margin:7px 0}.absence-info{background:#fff7e4;border-left:3px solid #d5a441;padding:9px;line-height:1.5}

#copy-text{display:block;width:100%;height:120px;line-height:1.5}

.lesson.paired .first{display:none}.lesson.paired strong{position:absolute;top:1px;left:3px;right:3px;font-size:10px;line-height:12px}

.lesson.replacement{box-shadow:none;}
.lesson.replacement strong,.lesson.confirmed strong{padding-right:13px;}
.lesson.replacement .mark,.lesson.confirmed .mark{top:2px;right:2px;bottom:auto;width:12px;height:12px;border-radius:50%;background:#fff;color:#16783b;font-size:11px;font-weight:bold;line-height:12px;text-align:center;}
.lesson.replacement.paired strong{font-size:9px;}

.replacement-frame{position:absolute;left:0;right:0;border:2px solid #16783b;z-index:5;pointer-events:none;}

.replacement-confirmed{border:1px solid #268443;background:#edf8ef;padding:10px;color:#17652d;border-radius:3px}#emergency-form{margin-top:12px}

.wish.unavailable{background:#f2f2f2;color:#786260}.wish.unavailable strong{text-decoration:line-through}.wish.unavailable small{color:#9a3c31;font-weight:bold;font-size:9px}

.wish.unavailable{height:48px}.wish.unavailable small{white-space:normal;line-height:10px}

.candidate-status{margin:6px 0;font-size:11px}.candidate-unavailable{background:#f7f5f3}.candidate-unavailable>strong{text-decoration:line-through;color:#786260}.candidate-unavailable .candidate-status{color:#993a30}

.wish-coach{padding:4px 6px;border-radius:3px;border:1px solid transparent}.wish-coach.coach-available{border-color:var(--coach-color);box-shadow:inset 3px 0 var(--coach-color);background:#f5fafc}.wish-coach.coach-unavailable{color:#929a9d;background:#f0f1f2}

.priority-hint{border:1px solid #adc8a9;background:#f0f7ed;padding:10px;border-radius:3px;margin:10px 0}.priority-hint p{font-size:11px;margin:7px 0}.priority-hint>strong{font-size:12px}.priority-hint button{font-size:11px}

.proposal-time{font-weight:bold;color:#17652d;margin:6px 0}.queue-label{font-size:11px;color:#637d89}

.permanent-label{font-weight:800;font-size:14px;letter-spacing:.4px}.child-wishes{margin:12px 0}.child-wishes h3,.child-dated h3{margin:8px 0}.family-wishes{border-left:2px solid #bfd1dc;padding-left:9px;margin:8px 0}.family-wishes p{margin:7px 0}.child-dated p{margin:6px 0}.muted{color:#6b8797}

.permanent-place>strong,.family-wishes p>strong{font-style:italic;font-weight:700;}

[hidden]{display:none!important}.fit-label{font-size:11px;background:#fff5db;padding:6px;margin:6px 0}.choice-day{border:1px solid #cbdce5;padding:8px;border-radius:3px}.choice-day .check{margin:8px 0}.choice-day summary{font-weight:bold}

.child-contact{background:#edf5fa;border:1px solid #bdd2df;padding:9px;border-radius:3px;line-height:1.6}

.absence-group h3{padding:9px;background:#eaf2f7;border-bottom:1px solid #c3d5e0;margin-top:16px}.absence-person{padding:10px 0;border-bottom:1px solid #d6e2e9}.client-status{display:inline-block;font-size:9px;font-weight:bold;padding:3px 5px;background:#f1eee8;color:#695c42;border-radius:3px;margin-left:4px}.client-status.regular{background:#e1edf5;color:#245571}.absence-person p{margin:7px 0}.absence-places{color:#6a8290;font-size:11px;font-style:italic}

.history-tools{border:1px solid #c5d7e1;padding:10px;border-radius:3px;margin:12px 0}.history-tools summary{font-weight:bold}.history-tools form{margin-top:12px}.history-tools p{margin:0}.history-entry{padding:5px 0;border-bottom:1px solid #e1e9ee}

.attendance-totals,.attendance-daily table{font-size:11px}.attendance-grand{font-weight:bold;background:#eaf2f6}.attendance-daily{margin:15px 0}.newness-note{padding:8px;background:#fff7e6;font-size:11px}.fact-day{border:1px solid #cadce5;border-radius:3px;margin:8px 0;padding:8px}.fact-day summary{font-weight:bold}.fact-record{display:block;width:100%;text-align:left;margin:7px 0;padding:8px}.fact-record strong,.fact-record span{display:block}.fact-record span{margin-top:5px;font-size:11px}.fact-record.is-counted,.fact-state.is-counted{border-left:3px solid #268443;background:#f0f8ef}.fact-record.is-excluded{color:#89564c;background:#faf2ef}.fact-state{padding:9px;background:#eef3f6}

#trainer-legend{margin-left:auto;display:flex;gap:12px;align-items:center;flex-wrap:wrap}#trainer-legend>span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;font-size:11px}#trainer-legend i{width:11px;height:11px;border-radius:2px;display:inline-block}#menu{margin-left:0}.day-head,.time-head{height:38px;padding:4px 0}.day-trainers{display:block;font-size:9px;color:#58788b;line-height:14px}@media(max-width:850px){header{height:auto;min-height:39px;flex-wrap:wrap}#trainer-legend{gap:8px}main{height:calc(100dvh - 70px)}}

.schedule-row{border:1px solid #c9dae4;padding:10px;margin-bottom:8px;display:grid;gap:8px}.records{background:white}.lesson.schedule-conflict{outline:2px dashed #c54b26;outline-offset:-2px}

.schedule-warning{border-left:3px solid #cf8634;padding:1px 10px 10px;background:#fff8e9}.schedule-warning button{display:block;margin-top:6px}.schedule-change{padding:10px 0;border-bottom:1px solid #d4e1e8}.schedule-change p{margin:5px 0}

.lesson-state{padding:12px;border:1px solid #d7b85e;border-radius:5px;background:#fff6df;margin:0 0 10px;line-height:1.5}.lesson-state>strong{font-size:14px}.lesson-state p{margin:5px 0 0}.lesson-state.state-confirmed,.lesson-state.replacement-confirmed{background:#edf8ef;border-color:#258849;color:#176d32;margin-top:0}.lesson-state.state-cancelled{background:#fff0eb;border-color:#ce8c78;color:#963d26}.lesson-contact{padding:1px 10px 10px;background:#f0f7fb;border-radius:5px}.lesson-contact .actions{margin:10px 0 0}.lesson-contact textarea{height:110px}.lesson-contact #lesson-message{margin-top:10px}.lesson-child-info{border-top:1px solid #d4e1e8;padding-top:12px;margin:12px 0}.lesson-additional .actions{margin-bottom:0}

.child-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.permanent-badge{font-size:10px;font-weight:700;letter-spacing:.3px;color:#365e78;background:#edf5fa;border-radius:3px;padding:4px 6px}.compact-reservation{padding:0;background:none;border:0;border-radius:0}.compact-reservation h3{margin:0 0 8px}.place-details{font-size:11px;color:#6b8797;margin:0 0 8px}.place-details summary{font-size:10px}.place-details p{line-height:1.5}

.lesson-contact button:disabled{cursor:default;color:#8599a5;background:#f3f5f6;border-color:#d6e0e6}

.lesson-state.state-cancelled{background:#fff0ee;border-color:#cb514a;color:#9b2923}.state-cancelled .absence-info{padding:0;margin:6px 0 0;border:0;background:none;color:inherit}.replacement-summary{padding:8px 10px;margin:8px 0;line-height:1.5}

.break-band{position:absolute;left:0;right:0;background:repeating-linear-gradient(135deg,#f3f5f6 0,#f3f5f6 5px,#dce4e9 5px,#dce4e9 7px);display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;color:#526b79;font-size:10px;line-height:12px;pointer-events:none}.break-band span,.break-band small{background:#f3f5f6e8;padding:0 2px}.break-band small{font-size:8px;white-space:nowrap}

.enrollment-row{gap:8px}.enrollment-row button{justify-self:end;padding:3px 6px;font-size:11px}.enrollment-row .line>label{min-width:0}

.enrollment-basics{display:grid;gap:12px;padding:12px;background:#edf5fa;border:1px solid #c4d7e2;border-radius:5px}.enrollment-row{border:1px solid var(--enrollment-color,#c9dae4);border-left:4px solid var(--enrollment-color,#c9dae4);border-radius:5px;background:color-mix(in srgb,var(--enrollment-color,#c9dae4) 14%,white);margin-bottom:10px}.appointment-date{display:block;font-size:13px;font-weight:700;color:#244a65;margin-bottom:5px}.appointment-time{display:block;font-size:12px;color:#355a70}.list-appointment-date{font-style:italic;color:#244a65}

.date-weekday{font-size:12px;font-weight:700;color:#244a65}

.edit-choices{display:grid;gap:10px}.edit-choices button{text-align:left;padding:12px;background:#edf5fa}

.waiting-badge{color:#815b13;background:#fff2cf}.child-wishes{padding:10px;border:1px solid #d9c68e;border-radius:5px;background:#fffbef}.family-wishes{border-left-color:#d9b65d}.child-profile-info>.child-dated{padding:10px;border-radius:5px;background:#f0f7fb}.lesson-note form{margin-top:10px}

.child-title:focus{outline:none}

.replacement-entry-note{padding:10px;background:#fff6df;border-left:3px solid #c99b34;line-height:1.5;margin:0}.replacement-summary{border:1px solid #258849;border-radius:5px;background:#edf8ef;color:#176d32}
