/* School catalogue and teacher choice. */
#school-filter-bar[hidden]{display:none}
.schools-page.registry .queue-head{margin-bottom:8px}
.schools-page.registry .queue-head h1{margin:0}
.school-catalog-description{margin:0 0 26px;font-size:var(--fs-base)}
.schools-page.registry .queue-tools{flex-wrap:wrap;justify-content:flex-end}
.schools-page #school-city-chip .chip-label{max-width:150px}
.schools-page.registry .queue-tools{flex:none}
.school-list{display:grid;gap:10px}
.school-card{display:flex;align-items:center;gap:16px;padding:18px 20px;background:#fff;border:1px solid #e4e5de;border-radius:14px;transition:border-color .15s}
.school-card:hover{border-color:#c9cbbf}
.school-card-text{flex:1;min-width:0;display:grid;gap:4px}
.school-card-text strong{font-size:var(--fs-base);line-height:1.35;overflow-wrap:anywhere}
.school-card-text small,.school-card-meta small{font-size:var(--fs-small);color:#8a8c83}
.school-card-meta{display:grid;gap:4px;text-align:right;font-size:var(--fs-body);white-space:nowrap}
.school-title{overflow-wrap:anywhere}
.school-heading-actions{display:flex;gap:10px;flex-shrink:0}
.teacher-add{margin-bottom:28px}
.teacher-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:10px;align-items:end}
.teacher-form label{margin:0;font-size:var(--fs-small)}
.teacher-form input{margin:6px 0 0!important}
.teacher-form .error{grid-column:1/-1;margin:0}
.teacher-form .error:empty{display:none}
.teacher-list-head{margin-bottom:14px}
.teacher-list-head h2{margin:0}
.teacher-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px}
.teacher-card{background:#fff;border:1px solid #e0e3d7;border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.teacher-card.busy{opacity:.55;pointer-events:none}
.teacher-photo{aspect-ratio:3/4;background:#eceee4;display:grid;place-items:center;overflow:hidden}
.teacher-photo img{width:100%;height:100%;object-fit:cover;object-position:center 30%}
.teacher-initials{font-size:var(--fs-hero);font-weight:600;color:#8f9580;letter-spacing:1px}
.teacher-text{padding:12px 12px 4px;display:grid;gap:3px}
.teacher-text strong{font-size:var(--fs-body);line-height:1.35;overflow-wrap:anywhere}
.teacher-text small{font-size:var(--fs-caption);color:#8a8c83}
.teacher-actions{display:flex;flex-wrap:wrap;gap:4px 12px;padding:8px 12px 12px;margin-top:auto}
.teacher-actions .text-button,.teacher-upload{font-size:var(--fs-caption);cursor:pointer;padding:0;background:none;color:#5d6350}
.danger-text{color:#a14331!important}
.teacher-photo.small{width:36px;height:48px;border-radius:6px;flex-shrink:0}
.teacher-photo.small .teacher-initials{font-size:var(--fs-body)}
.v2 .warn{color:#97571c}
@media(max-width:900px){.teacher-form{grid-template-columns:1fr 1fr}.teacher-form .primary{grid-column:1/-1}}
@media(max-width:560px){.school-card{flex-wrap:wrap}.school-card-meta{text-align:left;width:100%;padding-left:56px}.teacher-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.teacher-form{grid-template-columns:1fr}.school-heading-actions{width:100%}}
.tphoto-panel{margin-bottom:28px}
.tphoto-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px;flex-wrap:wrap}
.tphoto-head h3{margin:0 0 6px;font-size:var(--fs-lead)}
.tphoto-head p{margin:0;max-width:640px;line-height:1.5}
.teacher-upload-progress:empty{display:none}
.teacher-upload-progress{display:grid;gap:6px;font-size:var(--fs-small);color:#6c6f64;margin-bottom:14px;max-width:420px}
.tphoto-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}
.tphoto-grid:empty{display:none}
.tphoto{background:#fff;border:1px solid #e0e3d7;border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.tphoto.busy{opacity:.55;pointer-events:none}
.tphoto>img{width:100%;aspect-ratio:3/4;object-fit:cover;object-position:center 30%;background:#eceee4;display:block}
.tphoto-body{padding:10px 12px 12px;display:grid;gap:8px}
.tphoto-body>small{font-size:var(--fs-caption);color:#8a8c83;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tphoto-who{margin:0;font-size:var(--fs-small)}
.tphoto-who select{width:100%;margin-top:6px}
.tphoto-new{display:grid;gap:6px}
.tphoto-new[hidden]{display:none}
.tphoto-new label{margin:0;font-size:var(--fs-small)}
.tphoto-new input{margin:4px 0 0!important}
.tphoto-actions{display:flex;gap:12px;align-items:center}
.tphoto-body .error{margin:0;font-size:var(--fs-small)}
.tphoto-body .error:empty{display:none}
.tphoto-body .danger-text{justify-self:start;font-size:var(--fs-caption);padding:0;background:none}
.tphoto-teachers{margin-top:28px;padding-top:20px;border-top:1px solid #e8e9e2}
.tphoto-teachers h3{margin:0}
.tphoto-teacher-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.tphoto-teacher{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid #ecede6;border-radius:10px;background:#fff;font-size:var(--fs-body)}
.tphoto-teacher span:last-child{display:grid;gap:2px;min-width:0}
.tphoto-teacher small{font-size:var(--fs-caption);color:#8a8c83}
@media(max-width:560px){.tphoto-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}}
.tphoto-grid:has(.tgroup){grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.tgroup{background:#fff;border:1px solid #e0e3d7;border-radius:12px;padding:12px;display:grid;gap:10px;align-content:start}
.tgroup.busy{opacity:.55;pointer-events:none}
.tgroup-head{display:flex;align-items:baseline;gap:8px}
.tgroup-head strong{font-size:var(--fs-base)}
.tgroup-head small{font-size:var(--fs-caption);color:#8a8c83;flex:1}
.tgroup-head .text-button{font-size:var(--fs-caption);padding:0;background:none;color:#5d6350}
.tgroup-frames{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:6px}
.tframe{margin:0;display:grid;gap:4px}
.tframe-pick{padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;background:#eceee4;display:block;width:100%}
.tframe-pick img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block}
.tframe.chosen .tframe-pick{border-color:#e0b800;box-shadow:0 0 0 2px #fff3b3}
.tframe.pending{opacity:.5}
.tframe-edit{display:grid;gap:2px}
.tframe-edit[hidden]{display:none}
.tframe-edit select{font-size:var(--fs-micro);padding:3px;margin:0}
.tframe-edit .text-button{font-size:var(--fs-micro);padding:0;background:none;justify-self:start}
.tgroup-body{display:grid;gap:8px}
.tgroup-body .error{margin:0;font-size:var(--fs-small)}
.tgroup-body .error:empty{display:none}
.tgroup-body>small{font-size:var(--fs-caption)}
.teacher-by{color:#6f8a4a!important}

.school-heading-actions{flex-wrap:wrap}.school-tabs{margin-bottom:24px}.school-tabs button{background:none;padding:12px 16px;border-bottom:2px solid transparent}.school-tabs button[aria-selected=true]{border-color:#35382d;font-weight:600}.teacher-preview{display:block;width:100%;max-height:75vh;object-fit:contain}.school-picker>label{display:block}.school-picker{position:relative}.school-picker .school-options{position:absolute;top:auto;margin-top:-10px;max-height:220px;overflow:auto}.school-picker .school-options[hidden]{display:none}.school-tabs{display:flex;gap:8px}.schools-page [data-school-panel][hidden]{display:none}

[data-assign-save][hidden]{display:none}
.req{color:#d6453d;font-style:normal;margin-left:2px}

/* Reuse the order cards and shoot folders, with the same quiet motion. */
.v2 #school-list.school-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px}
.school-tile-name{font-size:var(--fs-lead);font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.school-tile-meta{display:flex;gap:16px;padding:0 16px 16px;color:var(--muted);font-size:var(--fs-small)}
.school-tile-meta>span{display:flex;gap:6px;align-items:center}
.school-tile .order-preview-fan img{transition:transform .35s ease,height .35s ease}
.school-tile:hover .order-preview-fan img:first-child{transform:rotate(-10deg) translate(-5px,-4px)}
.school-tile:hover .order-preview-fan img:last-child{transform:rotate(10deg) translate(5px,-4px)}
.school-tile:hover .order-preview-fan.count-1 img{transform:rotate(-3deg) translateY(-5px)}
.teacher-frame-status{display:inline-flex;align-items:center;gap:6px}
.teacher-groups{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
.teacher-group .folder-open>img,.teacher-group .card-photo>img,.teacher-group .folder-empty{aspect-ratio:3/4;max-height:260px}
.teacher-frame-status{margin:6px 14px 0;font-size:var(--fs-caption);color:var(--muted)}
.teacher-frame-status.ready{color:#608053}.teacher-frame-status.warn{color:#b35c1e}
.teacher-card{transition:transform .2s,border-color .2s,box-shadow .2s}
.teacher-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #28212f0b}
.teacher-review{margin-top:12px;display:grid;gap:16px}.teacher-review>*{min-width:0}
/* Frames run down the side, so the stage and the strip together take the panel's whole width.
   The stage is as tall as the screen allows with the fields below it; the strip takes the width it frees. */
.teacher-frames{display:grid;grid-template-columns:minmax(64px,1fr) auto;gap:10px}
/* A single frame has no strip: it fills the width, cropped to the height the screen allows. */
.teacher-frames.single{grid-template-columns:1fr}.teacher-frames.single .teacher-review-image{grid-area:auto;aspect-ratio:auto}.teacher-frames.single .teacher-review-image>img{object-fit:cover;object-position:center 22%}
.teacher-review-image{position:relative;grid-area:1/2;height:min(100dvh - 490px,474px,150vw - 186px);min-height:200px;aspect-ratio:2/3;overflow:hidden;background:#f0f0f2;border-radius:14px;cursor:zoom-in}
.teacher-review-image>img{display:block;width:100%;height:100%;object-fit:contain;transition:transform .2s}
.teacher-review-image:hover>img{transform:scale(1.6)}.teacher-review-image:has(.teacher-frame-tools:hover)>img{transform:none}.teacher-review-image.busy{opacity:.5;pointer-events:none}
.teacher-frame-tools{position:absolute;left:10px;right:8px;bottom:8px;display:flex;align-items:center;gap:2px;justify-content:flex-end}.teacher-frame-tools .teacher-frame-other{width:auto;margin-right:auto;font-size:var(--fs-small);text-decoration:underline;text-underline-offset:3px}.teacher-frame-tools button{display:grid;place-items:center;width:34px;height:34px;padding:0;background:none;color:#fff;filter:drop-shadow(0 1px 3px #0009);opacity:.85}.teacher-frame-tools button:hover,.teacher-frame-tools button:focus-visible{opacity:1}
.teacher-filmstrip{grid-area:1/1;display:grid;grid-template-columns:repeat(auto-fill,minmax(54px,1fr));grid-auto-rows:max-content;align-content:start;gap:8px;overflow:auto;height:0;min-height:100%;padding:3px}
.teacher-filmstrip button{width:100%;padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;background:#efedf0}
.teacher-filmstrip button{position:relative}.teacher-filmstrip button:disabled img{opacity:.45}.teacher-filmstrip .ico-loader{position:absolute;inset:0;margin:auto;box-sizing:content-box;padding:5px;border-radius:50%;background:#fff;color:#242522;box-shadow:0 1px 4px #0003}.teacher-filmstrip .teacher-frame-add{display:grid;place-items:center;aspect-ratio:3/4;border:1.5px dashed #dcddd7;background:#fafaf8;color:#8a8b85}.teacher-filmstrip .teacher-frame-add:hover{color:#242522;border-color:#b9bab4}
.teacher-filmstrip button.viewing{border-color:#242522}
.teacher-filmstrip button.portrait{box-shadow:0 0 0 2px #f9eed5,0 0 0 3px #c39428}.teacher-filmstrip button.portrait::after{content:"★";position:absolute;top:3px;left:4px;font-size:var(--fs-caption);line-height:1;color:#c39428;text-shadow:0 0 3px #fff}
.teacher-frame-empty{position:absolute;inset:0;display:grid;place-items:center;color:#b9bab4}.teacher-review-image:has(.teacher-frame-empty){cursor:default}.teacher-review-image:has(.teacher-frame-empty):hover>img{transform:none}
.teacher-frame-note{display:flex;align-items:center;gap:10px;min-height:18px;margin:-6px 0 0;font-size:var(--fs-small);color:var(--muted)}.teacher-frame-note:empty{display:none}.teacher-frame-note>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.teacher-mark{display:inline-flex;align-items:center;gap:4px;flex:none;font-weight:600;color:#8a6a12}.teacher-mark.warn{color:#b35c1e}.teacher-frame-note .by-photographer{flex:none;color:#477342;font-weight:600}
@media(prefers-reduced-motion:reduce){.teacher-review-image>img{transition:none}.teacher-review-image:hover>img{transform:none}}
.teacher-review textarea{display:block;width:100%;min-height:96px;margin:4px 0 0;padding:10px 12px;border:1px solid #d9d9d2;border-radius:12px;font:inherit;font-size:var(--fs-base);line-height:1.5;resize:vertical}.teacher-review textarea:focus{outline:none;border-color:#242522}.teacher-review textarea:disabled{background:#f6f6f4;color:#a3a49e;resize:none}
.teacher-filmstrip img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover}
.v2 .teacher-card-menu{position:relative;top:auto;right:auto;margin-left:auto}.teacher-card-menu .design-menu-list,.teacher-group .design-menu-list{white-space:nowrap}.teacher-card-menu+.close{margin-left:8px}
.teacher-review-side{display:flex;flex-direction:column;gap:12px}
.teacher-review-side>[data-side]:not([hidden]){display:grid;gap:10px}.teacher-review-side [data-join-back]{justify-self:start;display:inline-flex;align-items:center;gap:6px}
.teacher-review-side .picker-cards{max-height:46vh;overflow:auto}
.teacher-review-side>.teacher-joined:not([hidden]){display:flex;align-items:center;gap:12px;padding:8px;border:1px solid var(--line);border-radius:12px}
.teacher-joined .picker-portrait{flex:none;width:54px;height:72px;font-size:var(--fs-title)}.teacher-joined>div{display:grid;gap:2px;min-width:0}.teacher-joined small{color:var(--muted)}.teacher-joined .close{margin-left:auto}
.teacher-review-side .error:empty{display:none}.teacher-review-side .dialog-actions{position:sticky;bottom:0;padding:12px 0;background:#fff}
.tphoto-panel.dragging{outline:2px dashed #c39428;outline-offset:8px;border-radius:16px}
.tphoto-panel .shoot-head h2{display:flex;align-items:center;gap:8px}
.teacher-section-head{display:flex;align-items:center;gap:12px;margin:0 0 12px}.teacher-section-head h3{margin:0;font-size:var(--fs-lead)}.teacher-groups+.teacher-section-head{margin-top:32px}
@media(max-width:700px){.teacher-groups{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.school-tile .order-preview-fan img,.teacher-card{transition:none}.school-tile:hover .order-preview-fan img,.teacher-card:hover{transform:none}}
/* The teacher and pupil panels slide in from the right, over the page. Not tied to .wide-dialog: that class goes the moment the dialog closes, and the panel would jump to the middle while it fades. */
.v2 :is(#action-dialog,#person-dialog):has(.teacher-review){inset:0 0 0 auto;margin:0;width:min(440px,100vw);max-width:none;height:100dvh;max-height:none;padding-bottom:0;border-width:0 0 0 1px;border-radius:20px 0 0 20px;transform:translateX(32px)}
.v2 :is(#action-dialog,#person-dialog)[open]:has(.teacher-review){transform:none}
@starting-style{.v2 :is(#action-dialog,#person-dialog)[open]:has(.teacher-review){transform:translateX(32px)}}
.teacher-folder-preview{position:relative;overflow:hidden}.v2 .teacher-folder-preview .order-preview-fan{inset:12px 0}.teacher-folder-preview .order-preview-fan img{width:auto;opacity:1}
@media(prefers-reduced-motion:reduce){.v2 .folder:hover .teacher-folder-preview .order-preview-fan img{transform:none}}
.teacher-card{border-color:var(--line);border-radius:16px}.teacher-card .teacher-photo{background:#f0f0f2}.teacher-text small,.teacher-initials{color:var(--muted)}.teacher-actions .text-button,.teacher-upload{color:var(--ink)}


.school-tile.editing{z-index:2}
.school-tile.editing .order-tile-main{pointer-events:none}
.school-tile.editing .design-menu[hidden]{display:none}

.school-card-edit{z-index:3}

.v2 .school-preview-paper strong{font-size:var(--fs-head);line-height:1.1;letter-spacing:-.5px;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}

.school-rows .school-table-head,.school-rows .school-row{grid-template-columns:minmax(180px,1.4fr) minmax(160px,1fr) 110px 100px 34px}
.school-table-head span:nth-child(2){text-align:left}
.school-rows .order-tile-main{position:static;padding:0;min-width:0}
.school-row-name{font-size:var(--fs-base);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.school-row-city{font-size:var(--fs-body);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.school-row-menu{position:relative;z-index:2}
.v2 .school-row-menu .design-menu-toggle{background:transparent;box-shadow:none;width:28px;height:28px}
.school-row .school-card-edit{position:relative;grid-column:1/-1;box-shadow:none;padding:0 0 12px;max-width:420px;width:100%}
.school-row.editing .queue-name::after{display:none}
@media(max-width:760px){.school-rows .school-row{grid-template-columns:minmax(0,1fr) auto auto 28px;gap:8px 12px}.school-row .school-row-count{display:block;font-size:var(--fs-small)}.school-row-city{grid-column:1;grid-row:2}.school-row-menu{grid-column:4;grid-row:1/3}.school-row .school-card-edit{grid-column:1/-1}}

/* Teachers the class proposed: one compact form per proposal. */
.proposals-dialog{width:min(560px,calc(100vw - 32px))}
.proposal-list{display:grid;gap:12px;margin-top:16px}
.proposal{display:grid;gap:10px;padding:14px;border:1px solid #e6e6e1;border-radius:14px;background:#fff}
.proposal-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px}
.proposal-head strong{font-size:var(--fs-base)}
.proposal-lead{font-size:var(--fs-caption);font-weight:600;background:var(--yellow);border-radius:6px;padding:2px 6px}
.proposal-target{display:flex;align-items:center;gap:10px;font-size:var(--fs-body);margin:0}
.proposal-target select{flex:1;min-width:0;margin:0}
.proposal-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.proposal-fields[hidden]{display:none}
.proposal-fields input{margin:0;min-width:0}
.proposal .error:empty{display:none}
.proposal-actions{display:flex;justify-content:flex-end;align-items:center;gap:16px}
.proposal-actions .primary{margin:0}
/* School head reuses the order head card */
.teacher-selection-summary{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.teacher-selection-summary .text-button{margin-left:auto;display:inline-flex;align-items:center;gap:6px}
.v2 .frame-menu{position:fixed;top:auto;right:auto;z-index:20;white-space:nowrap}
.teacher-filmstrip button.selected{outline:2px solid #3b6fd8;outline-offset:1px}
.frame-move:not([hidden]){display:grid;gap:10px}
.frame-move-head{display:flex;align-items:center;justify-content:space-between}
.frame-move-head strong{font-size:var(--fs-base)}
.frame-move .picker-cards{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;max-height:none;overflow:visible;padding:0}
.frame-move .picker-card{font:inherit;text-align:left;color:inherit;padding:6px;border-width:1px}
.frame-move .picker-card:hover,.frame-move .picker-card:focus-visible{border-color:#242522;outline:none}
.frame-move .picker-portrait{height:104px;color:#b5b6b0}
.frame-move.busy{opacity:.5;pointer-events:none}
.teacher-review-side>[hidden]{display:none}
.v2 .teacher-group .folder-menu{top:8px;right:8px}
.subject-pen{position:absolute;right:8px;bottom:8px;display:grid;place-items:center;width:26px;height:26px;padding:0;border-radius:50%;background:none;color:#8a8c83;opacity:0}
.folder:hover .subject-pen,.subject-pen:focus-visible{opacity:1}
.subject-pen:hover:not(:disabled),.subject-pen:focus-visible{background:var(--yellow);color:#2f2f2a}
@media(hover:none){.subject-pen{opacity:1}}
.folder .subject-edit{position:absolute;width:auto;min-height:0;left:8px;right:40px;bottom:8px;box-sizing:border-box;height:26px;margin:0;padding:0 6px;font:inherit;font-size:var(--fs-small);border:1px solid var(--line);border-radius:6px;background:#f6f6f8;box-shadow:none!important;outline:0}
.folder .subject-edit:focus,.folder .subject-edit:focus-visible{outline:none;border-color:#b9b6bf}
.subject-edit::selection{background:#e6e6ea;color:inherit}
