:root{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#203139;background:#f2f4ef;font-size:15px;--line:#dce2da;--muted:#64716b}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 13px;color:inherit}button:hover{border-color:#537567;background:#f3f8f2}button:disabled{opacity:.5;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #577dff;outline-offset:2px}input,select,textarea{border:1px solid #b4c1b7;border-radius:8px;padding:10px;background:#fff;max-width:100%}label{display:grid;gap:6px;font-size:.88rem}h1{font-size:1.9rem;font-weight:620;margin:10px 0}h2{font-size:1.3rem;font-weight:600}h3{font-size:1rem}p{line-height:1.5}small,.muted{color:var(--muted)}.shell{display:grid;grid-template-columns:210px minmax(0,1fr);min-height:100vh}.sidebar{background:#e4ebdc;border-right:1px solid #d4decd;padding:30px 18px;display:flex;flex-direction:column;gap:12px}.brand{font-size:1.6rem;font-weight:800;letter-spacing:-1px}.brand span{font-size:.7rem;display:block;letter-spacing:2px;font-weight:550;margin-top:3px}.sidebar nav{display:grid;gap:6px;margin:32px 0}.sidebar nav button{text-align:left;background:transparent;border-color:transparent;padding:14px}.sidebar nav button.active{background:#fff;border-color:#d8dfd2;font-weight:650}.sidebar footer{margin-top:auto;font-size:.83rem;color:#546258;line-height:1.65}.workspace{padding:22px 32px;min-width:0}.topbar{display:flex;gap:12px;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:15px}.identity{font-size:.85rem}.preview-tag,.badge{font-size:.73rem;padding:4px 7px;border-radius:5px;display:inline-block;background:#fff9;white-space:nowrap}.preview-tag{background:#fff0c9}.pagehead{display:flex;justify-content:space-between;gap:15px;align-items:flex-end;margin:26px 0 20px}.pagehead p{margin:0}.controls{display:flex;gap:8px;flex-wrap:wrap;align-items:end}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.75rem;color:#475a4d;margin:16px 0 22px}.dot{display:inline-block;width:10px;height:10px;border:1px solid #0002;border-radius:50%;margin-right:4px}.white{background:#fff}.black{background:#27322e!important;color:#fff!important}.hard_block{background:#141916!important;color:#fff!important;border:2px dashed #ffab98!important}.pink{background:#f6deec}.green{background:#dcefdc}.purple{background:#e9dff4}.yellow{background:#fff0b6}.orange{background:#f5dfc5}.red{background:#f6dada}.light-blue{background:#dceaf7}.board{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:16px}.teacher-column{background:#e9ede5;border-radius:12px;padding:14px;min-height:250px}.teacher-column>h2{font-size:.95rem;margin:4px 2px 14px}.lesson{border:1px solid #0001;border-radius:10px;padding:14px;margin-bottom:12px;box-shadow:0 2px 2px #22342204}.lesson .time{font-size:.8rem;display:flex;justify-content:space-between;gap:8px;margin-bottom:8px}.lesson .lesson-title{font-weight:650;display:block;background:none;padding:0;border:0;text-align:left;margin:8px 0}.participant{display:flex;gap:5px;align-items:center;padding:5px 7px;border-radius:5px;margin:4px 0;font-size:.87rem}.participant button{background:none;border:0;padding:0;text-align:left}.badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:10px}.history{font-size:.8rem;border-left:4px solid #a786c0;padding:10px;background:#eee6f6;border-radius:4px}.section-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;margin:18px 0 8px;color:#627367}.availability{padding:8px;margin-bottom:6px;border-radius:7px;font-size:.73rem;border:1px solid #d5ded2}.table-wrap{overflow:auto;background:#fff;border-radius:10px;border:1px solid var(--line)}table{border-collapse:collapse;width:100%;font-size:.83rem}th,td{padding:13px 12px;text-align:left;border-bottom:1px solid #e7eae5;vertical-align:top;min-width:105px}th{font-size:.73rem;color:#55665a;background:#e8eee2;position:sticky;top:0}td:first-child{min-width:165px}td button.link{border:0;background:none;padding:0;text-align:left;font-weight:600;color:#254d3c}.cell{padding:5px;border-radius:5px;margin-bottom:5px}.panel{background:#fff;border:1px solid var(--line);padding:20px;border-radius:12px;margin:12px 0}.proposal{border-left:4px solid #d8afca}.action-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.primary{background:#284f3e;color:#fff;border-color:#284f3e}.primary:hover{background:#37694f;color:#fff}.login{max-width:460px;margin:7vh auto;padding:28px}.login form{display:grid;gap:17px}.error{color:#92372c;background:#fae2dc;padding:10px;border-radius:6px}.empty{padding:35px;color:var(--muted);text-align:center}.grouphead{background:#f1f4ed;font-weight:600}dialog{position:fixed;inset:0 0 0 auto;margin:0;height:100dvh;max-height:100dvh;width:min(660px,95vw);max-width:95vw;border:0;border-left:1px solid var(--line);padding:25px 30px;background:#f6f7f1;overflow:auto;box-shadow:-10px 0 50px #1f31231a}dialog::backdrop{background:#10251b44}#close-drawer{float:right;position:sticky;top:0}.drawer-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.metric{padding:14px;background:#fff;border:1px solid var(--line);border-radius:8px}.metric strong{display:block;font-size:1.4rem;margin-bottom:4px}.drawer-form{display:grid;gap:12px}.detail-list{list-style:none;padding:0}.detail-list li{border-bottom:1px solid var(--line);padding:10px 0}.detail-list strong{display:block;margin-bottom:4px}.admission{font-size:.68rem;margin-left:auto}.admission.hold{color:#903b2f;background:#fff9;padding:2px 4px;border-radius:3px}#notice{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#203d2f;color:#fff;max-width:90vw;border-radius:8px;padding:0;z-index:20}#notice:not(:empty){padding:12px 20px}.toggle{display:flex;gap:8px;align-items:center;font-size:.8rem}details{margin:15px 0}summary{cursor:pointer}.unconnected{font-size:.8rem;color:#766946;background:#f6efdc;border:1px solid #e7dfc5;border-radius:8px;padding:12px}.amount{font-variant-numeric:tabular-nums;white-space:nowrap}@media(max-width:800px){.shell{grid-template-columns:155px minmax(0,1fr)}.sidebar{padding:22px 10px}.workspace{padding:18px}.board{grid-template-columns:1fr}.pagehead{align-items:start;flex-direction:column}}@media(max-width:560px){.shell{display:block}.sidebar{padding:12px 16px;flex-direction:row;align-items:center;border-right:0;border-bottom:1px solid var(--line);gap:10px}.brand{font-size:1.2rem}.brand span{font-size:.5rem}.sidebar nav{display:flex;margin:0;gap:2px;margin-left:auto}.sidebar nav button{padding:8px;font-size:.77rem}.sidebar footer{display:none}.topbar{align-items:start}.identity{max-width:200px}.workspace{padding:14px}.pagehead{margin:20px 0 16px}h1{font-size:1.5rem}.drawer-grid{grid-template-columns:1fr}.login{margin:2vh auto}.legend{gap:8px}dialog{padding:18px}}

/* Six equal workday columns and a separate Sunday replacement. One 15-minute row = 64px. */
.week-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.week-toolbar label{margin-left:auto}.week-layout{display:grid;grid-template-columns:43px minmax(0,1fr) 168px;gap:4px;min-width:0}.week-days{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:3px;min-width:0}.time-axis h2,.week-day h2,.control-pane h2{height:38px;margin:0;font-size:.88rem;padding:8px 2px}.week-day h2{text-align:center;background:#e8eee2}.time-tick,.grid-hour{height:64px;border-top:1px solid #dde6da}.time-tick{font-size:.7rem;color:#617368;padding:3px}.week-day{min-width:0}.day-slots{display:grid;grid-template-rows:repeat(48,64px);position:relative;background:#fafbf8}.grid-hour{grid-column:1;pointer-events:none}.grid-hour.whole-hour{border-color:#aab9a9}.slot-card{grid-column:1;z-index:1;min-width:0;padding:2px;align-self:stretch}.slot-card .lesson{height:100%;overflow:visible;padding:5px;margin:0;font-size:.77rem;line-height:1.2;box-shadow:0 1px 4px #2234221c}.lesson-clock{font-size:.72rem;font-weight:650}.slot-card .lesson .lesson-title{font-size:.78rem;margin:3px 0;padding:0}.slot-card .lesson small{font-size:.69rem}.slot-card .participant{font-size:.77rem;line-height:1.15;padding:1px 2px;margin:1px 0;display:block;overflow-wrap:anywhere}.slot-card .participant button{font-size:inherit;font-weight:600}.participant-state{display:block;font-size:.68rem;color:#465349}.slot-card .badge{white-space:normal}.control-pane{background:#e8eee2;border-radius:7px;padding:7px;min-width:0}.control-pane p{font-size:.78rem}.control-task{background:#fff;border-radius:5px;margin:7px 0;padding:7px;font-size:.76rem}.control-task small{display:block}.journal-scroll{overflow:auto;max-width:100%;max-height:70vh;background:#fff;border:1px solid var(--line)}.month-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%}.month-table th,.month-table td{border-right:1px solid #e2e9df;border-bottom:1px solid #e2e9df;padding:8px;vertical-align:top}.month-table .journal-name{position:sticky;left:0;z-index:3;min-width:185px;width:185px;background:#f7f9f5}.month-table .journal-finance{position:sticky;left:185px;z-index:3;min-width:275px;width:275px;background:#f3f7ed;white-space:normal}.month-table th{top:0;z-index:4}.month-table .month-day{min-width:67px;width:67px;text-align:center}.month-table td.month-day{font-size:.72rem}.month-table .cell{white-space:normal;overflow-wrap:anywhere}.cell.planned{outline:1px dashed #879a91;opacity:.8}.cell.finalized{font-weight:650;border:1px solid #647f70}@media(max-width:1350px){.workspace{padding-left:17px;padding-right:17px}.week-layout{grid-template-columns:36px minmax(0,1fr) 145px}.slot-card .participant{font-size:.76rem}}@media(max-width:900px){.week-layout{overflow-x:auto;grid-template-columns:40px minmax(900px,1fr) 160px}.month-table .journal-name{min-width:140px;width:140px}.month-table .journal-finance{left:140px;min-width:210px;width:210px}}

/* Keep names readable. Surface geometry conflicts instead of hiding children. */
.slot-card .participant{font-size:.92rem;line-height:1.17}
.slot-card .lesson .lesson-title{font-size:.88rem}
.participant-state{font-size:.78rem}
.geometry-warning{background:#fff0ce;border:1px solid #c88c30;border-radius:8px;color:#643b08;padding:9px 12px;font-size:.87rem;margin:8px 0}

/* Keep the task pane visible while the six-day grid scrolls on narrow screens. */
.week-layout{grid-template-columns:minmax(0,1fr) 168px}
.week-scroll{display:grid;grid-template-columns:43px minmax(0,1fr);gap:4px;min-width:0}
@media(max-width:1350px){.week-layout{grid-template-columns:minmax(0,1fr) 145px}.week-scroll{grid-template-columns:36px minmax(0,1fr)}}
@media(max-width:900px){.week-layout{display:flex;flex-direction:column;overflow:visible}.week-scroll{width:100%;overflow-x:auto;grid-template-columns:40px minmax(900px,1fr)}.control-pane{order:-1;margin:0 0 12px}}

.control-task{overflow-wrap:anywhere}
@media(max-width:560px){.month-table .journal-name{min-width:120px;width:120px}.month-table .journal-finance{left:120px;min-width:165px;width:165px}.month-table .month-day{min-width:66px;width:66px}}

/* CSP-safe positions: inline styles are intentionally blocked. */
.slot-r-1{grid-row-start:1}
.slot-r-2{grid-row-start:2}
.slot-r-3{grid-row-start:3}
.slot-r-4{grid-row-start:4}
.slot-r-5{grid-row-start:5}
.slot-r-6{grid-row-start:6}
.slot-r-7{grid-row-start:7}
.slot-r-8{grid-row-start:8}
.slot-r-9{grid-row-start:9}
.slot-r-10{grid-row-start:10}
.slot-r-11{grid-row-start:11}
.slot-r-12{grid-row-start:12}
.slot-r-13{grid-row-start:13}
.slot-r-14{grid-row-start:14}
.slot-r-15{grid-row-start:15}
.slot-r-16{grid-row-start:16}
.slot-r-17{grid-row-start:17}
.slot-r-18{grid-row-start:18}
.slot-r-19{grid-row-start:19}
.slot-r-20{grid-row-start:20}
.slot-r-21{grid-row-start:21}
.slot-r-22{grid-row-start:22}
.slot-r-23{grid-row-start:23}
.slot-r-24{grid-row-start:24}
.slot-r-25{grid-row-start:25}
.slot-r-26{grid-row-start:26}
.slot-r-27{grid-row-start:27}
.slot-r-28{grid-row-start:28}
.slot-r-29{grid-row-start:29}
.slot-r-30{grid-row-start:30}
.slot-r-31{grid-row-start:31}
.slot-r-32{grid-row-start:32}
.slot-r-33{grid-row-start:33}
.slot-r-34{grid-row-start:34}
.slot-r-35{grid-row-start:35}
.slot-r-36{grid-row-start:36}
.slot-r-37{grid-row-start:37}
.slot-r-38{grid-row-start:38}
.slot-r-39{grid-row-start:39}
.slot-r-40{grid-row-start:40}
.slot-r-41{grid-row-start:41}
.slot-r-42{grid-row-start:42}
.slot-r-43{grid-row-start:43}
.slot-r-44{grid-row-start:44}
.slot-r-45{grid-row-start:45}
.slot-r-46{grid-row-start:46}
.slot-r-47{grid-row-start:47}
.slot-r-48{grid-row-start:48}
.slot-r-49{grid-row-start:49}
.slot-r-50{grid-row-start:50}
.slot-r-51{grid-row-start:51}
.slot-r-52{grid-row-start:52}
.slot-r-53{grid-row-start:53}
.slot-r-54{grid-row-start:54}
.slot-r-55{grid-row-start:55}
.slot-r-56{grid-row-start:56}
.slot-r-57{grid-row-start:57}
.slot-r-58{grid-row-start:58}
.slot-r-59{grid-row-start:59}
.slot-r-60{grid-row-start:60}
.slot-r-61{grid-row-start:61}
.slot-r-62{grid-row-start:62}
.slot-r-63{grid-row-start:63}
.slot-r-64{grid-row-start:64}
.slot-r-65{grid-row-start:65}
.slot-r-66{grid-row-start:66}
.slot-r-67{grid-row-start:67}
.slot-r-68{grid-row-start:68}
.slot-r-69{grid-row-start:69}
.slot-r-70{grid-row-start:70}
.slot-r-71{grid-row-start:71}
.slot-r-72{grid-row-start:72}
.slot-r-73{grid-row-start:73}
.slot-r-74{grid-row-start:74}
.slot-r-75{grid-row-start:75}
.slot-r-76{grid-row-start:76}
.slot-r-77{grid-row-start:77}
.slot-r-78{grid-row-start:78}
.slot-r-79{grid-row-start:79}
.slot-r-80{grid-row-start:80}
.slot-r-81{grid-row-start:81}
.slot-r-82{grid-row-start:82}
.slot-r-83{grid-row-start:83}
.slot-r-84{grid-row-start:84}
.slot-r-85{grid-row-start:85}
.slot-r-86{grid-row-start:86}
.slot-r-87{grid-row-start:87}
.slot-r-88{grid-row-start:88}
.slot-r-89{grid-row-start:89}
.slot-r-90{grid-row-start:90}
.slot-r-91{grid-row-start:91}
.slot-r-92{grid-row-start:92}
.slot-r-93{grid-row-start:93}
.slot-r-94{grid-row-start:94}
.slot-r-95{grid-row-start:95}
.slot-r-96{grid-row-start:96}
.slot-span-1{grid-row-end:span 1}
.slot-span-2{grid-row-end:span 2}
.slot-span-3{grid-row-end:span 3}
.slot-span-4{grid-row-end:span 4}
.slot-span-5{grid-row-end:span 5}
.slot-span-6{grid-row-end:span 6}
.slot-span-7{grid-row-end:span 7}
.slot-span-8{grid-row-end:span 8}
.slot-span-9{grid-row-end:span 9}
.slot-span-10{grid-row-end:span 10}
.slot-span-11{grid-row-end:span 11}
.slot-span-12{grid-row-end:span 12}
.slot-span-13{grid-row-end:span 13}
.slot-span-14{grid-row-end:span 14}
.slot-span-15{grid-row-end:span 15}
.slot-span-16{grid-row-end:span 16}
.slot-span-17{grid-row-end:span 17}
.slot-span-18{grid-row-end:span 18}
.slot-span-19{grid-row-end:span 19}
.slot-span-20{grid-row-end:span 20}
.slot-span-21{grid-row-end:span 21}
.slot-span-22{grid-row-end:span 22}
.slot-span-23{grid-row-end:span 23}
.slot-span-24{grid-row-end:span 24}
.slot-span-25{grid-row-end:span 25}
.slot-span-26{grid-row-end:span 26}
.slot-span-27{grid-row-end:span 27}
.slot-span-28{grid-row-end:span 28}
.slot-span-29{grid-row-end:span 29}
.slot-span-30{grid-row-end:span 30}
.slot-span-31{grid-row-end:span 31}
.slot-span-32{grid-row-end:span 32}
.slot-span-33{grid-row-end:span 33}
.slot-span-34{grid-row-end:span 34}
.slot-span-35{grid-row-end:span 35}
.slot-span-36{grid-row-end:span 36}
.slot-span-37{grid-row-end:span 37}
.slot-span-38{grid-row-end:span 38}
.slot-span-39{grid-row-end:span 39}
.slot-span-40{grid-row-end:span 40}
.slot-span-41{grid-row-end:span 41}
.slot-span-42{grid-row-end:span 42}
.slot-span-43{grid-row-end:span 43}
.slot-span-44{grid-row-end:span 44}
.slot-span-45{grid-row-end:span 45}
.slot-span-46{grid-row-end:span 46}
.slot-span-47{grid-row-end:span 47}
.slot-span-48{grid-row-end:span 48}
.slot-span-49{grid-row-end:span 49}
.slot-span-50{grid-row-end:span 50}
.slot-span-51{grid-row-end:span 51}
.slot-span-52{grid-row-end:span 52}
.slot-span-53{grid-row-end:span 53}
.slot-span-54{grid-row-end:span 54}
.slot-span-55{grid-row-end:span 55}
.slot-span-56{grid-row-end:span 56}
.slot-span-57{grid-row-end:span 57}
.slot-span-58{grid-row-end:span 58}
.slot-span-59{grid-row-end:span 59}
.slot-span-60{grid-row-end:span 60}
.slot-span-61{grid-row-end:span 61}
.slot-span-62{grid-row-end:span 62}
.slot-span-63{grid-row-end:span 63}
.slot-span-64{grid-row-end:span 64}
.slot-span-65{grid-row-end:span 65}
.slot-span-66{grid-row-end:span 66}
.slot-span-67{grid-row-end:span 67}
.slot-span-68{grid-row-end:span 68}
.slot-span-69{grid-row-end:span 69}
.slot-span-70{grid-row-end:span 70}
.slot-span-71{grid-row-end:span 71}
.slot-span-72{grid-row-end:span 72}
.slot-span-73{grid-row-end:span 73}
.slot-span-74{grid-row-end:span 74}
.slot-span-75{grid-row-end:span 75}
.slot-span-76{grid-row-end:span 76}
.slot-span-77{grid-row-end:span 77}
.slot-span-78{grid-row-end:span 78}
.slot-span-79{grid-row-end:span 79}
.slot-span-80{grid-row-end:span 80}
.slot-span-81{grid-row-end:span 81}
.slot-span-82{grid-row-end:span 82}
.slot-span-83{grid-row-end:span 83}
.slot-span-84{grid-row-end:span 84}
.slot-span-85{grid-row-end:span 85}
.slot-span-86{grid-row-end:span 86}
.slot-span-87{grid-row-end:span 87}
.slot-span-88{grid-row-end:span 88}
.slot-span-89{grid-row-end:span 89}
.slot-span-90{grid-row-end:span 90}
.slot-span-91{grid-row-end:span 91}
.slot-span-92{grid-row-end:span 92}
.slot-span-93{grid-row-end:span 93}
.slot-span-94{grid-row-end:span 94}
.slot-span-95{grid-row-end:span 95}
.slot-span-96{grid-row-end:span 96}

/* Child state remains adjacent to the name; the complete state is the title/accessible detail. */
.slot-card .participant{padding:0 2px;margin:1px 0}
.slot-card .participant-state{display:inline;margin-left:3px}
.slot-card .badges:empty{display:none}

/* Four 15-minute rows retain readable names even in the 1280px six-person card. */
.slot-card .lesson{padding:3px;line-height:1.1}
.slot-card .participant{line-height:1.08;margin:0}
.slot-card .lesson .lesson-title{margin:1px 0}
