/* Assembly — a quieter editorial frame, with the school map as the living detail.
   Component refinements shared by public pages, forms and the parent workspace. */
:root{--stock:#F6F8F7;--rule:#D9E1DF;--r-sm:6px;--wrap:1200px;--gutter:clamp(20px,4vw,48px)}
body{background-image:none}
main{min-height:52vh}
/* The footer always reaches the bottom of the screen: on a short page (a school's reply link
   that no longer works, or any page on a tall monitor) main grows, rather than leaving bare
   paper under the footer. Screen only; print keeps the plain flow. */
@media screen{
  body{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}
  body > main{flex:1 0 auto}
}
h1{line-height:1.08;letter-spacing:-.035em}
h2{line-height:1.2}
p{overflow-wrap:break-word}
button,a,input,select,textarea{touch-action:manipulation}
/* Tabbing up a page (into a side column, say) scrolls the next control to the top edge, where
   the sticky header would hide it; this keeps it clear, as [id] does for jumps to a section. */
a,button,input,select,textarea,summary,[tabindex]{scroll-margin-top:88px}
[id],form[data-draft]{scroll-margin-top:88px}
.page{padding-top:clamp(32px,5vw,64px);padding-bottom:clamp(48px,7vw,80px)}
.page-narrow{--wrap:800px}
.page-head{border-color:var(--rule);padding-bottom:24px;margin-bottom:32px}
.page-head::after{width:48px;height:2px;background:var(--tide)}
.page-head h1{max-width:23ch}
.page-head.tc h1{margin-inline:auto}
.page-head .lede{max-width:58ch}
.plate,.card{border-color:var(--rule);box-shadow:none}
.plate{padding:clamp(22px,3vw,32px)}
.plate-water{background:var(--tide-wash);box-shadow:none}
.plate-land{box-shadow:none}
.title-block{border-color:var(--rule);box-shadow:none;padding:24px}
.card-link:hover{background:var(--sheet);border-color:var(--tide)}
.grid{gap:20px}
.grid-side{gap:28px}
.field{margin-bottom:24px}
.field .hint{max-width:62ch;line-height:1.5}
/* ASP.NET renders an empty summary on first arrival for later validation. */
[data-valmsg-summary].validation-summary-valid{display:none}
.login-page{--wrap:520px;padding-top:32px}
.login-page .page-head{margin-bottom:24px;padding-bottom:20px}
.login-page .page-head h1{font-size:clamp(1.85rem,3vw,2.35rem);line-height:1.2}
.login-page .page-head .lede{font-size:1rem;line-height:1.6}
.login-page .card{padding:24px}
.login-page .field{margin-bottom:20px}
/* On a phone, Sign in keeps the 32px top that Create your account and Set a new password keep, so moving between them the heading doesn't jump. */
@media(max-width:560px){.login-page .card{padding:20px}}
.registration-page{--wrap:600px;padding-top:32px}
.registration-page .page-head{margin-bottom:24px;padding-bottom:20px}
.registration-page .page-head h1{font-size:clamp(1.85rem,3vw,2.35rem);line-height:1.2}
.registration-page .page-head .lede{font-size:1rem;line-height:1.6}
.registration-page .card{padding:24px}
.registration-page .field{margin-bottom:20px}
.registration-context{margin-top:16px;padding-left:12px;border-left:2px solid var(--tide);font-size:.9375rem;line-height:1.5}
.registration-context span{display:block;font-size:.8125rem;color:var(--ink-2)}
.registration-context strong{display:block;margin-top:3px;overflow-wrap:anywhere}
.registration-passwords{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:24px}
.registration-passwords > .field{min-width:0;margin-bottom:0}
.registration-recovery{margin-bottom:24px}
.registration-recovery .btn{max-width:100%;white-space:normal;text-align:left}
@media(max-width:560px){
  .registration-page .card{padding:20px}
  .registration-passwords{grid-template-columns:minmax(0,1fr)}
}
.form-errors{display:block;padding:18px 20px;margin-bottom:24px;background:var(--notice-field);border:2px solid var(--notice-deep);border-radius:var(--r-sm);color:var(--notice-deep);scroll-margin-block:100px 24px}
.form-errors h2{font-size:1rem;line-height:1.4;margin:0 0 8px;font-weight:650;color:inherit}
.form-errors ul{margin:0;padding-left:20px;font-size:.9375rem;line-height:1.6}
.form-errors li + li{margin-top:6px}
.form-errors a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.form-errors a:hover{text-decoration-thickness:2px}
input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--notice-deep)}
input[aria-invalid=true]:focus,select[aria-invalid=true]:focus,textarea[aria-invalid=true]:focus{outline-color:var(--focus)}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
.account-page{padding-top:32px}
.account-heading{margin-bottom:24px}
.account-heading h1,.shared-composer-page h1{font-size:clamp(1.85rem,3vw,2.35rem);line-height:1.15}
.account-heading p{margin-top:8px;font-size:.9375rem}
.account-page .grid-side{grid-template-columns:minmax(0,1fr) 300px;align-items:start}
.account-page .plate{padding:24px}
.account-signin{padding-bottom:18px;margin-bottom:20px;border-bottom:1px solid var(--rule)}
.account-signin > p{margin-top:5px;overflow-wrap:anywhere}
.account-signin .hint{font-size:.8125rem;color:var(--ink-3)}
.account-rooms{list-style:none;margin:0;padding:0;border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--sheet)}
.account-rooms > li{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px}
.account-rooms > li + li{border-top:1px solid var(--rule)}
.account-room-detail{min-width:0}
.account-room-detail h3{font-size:1rem;line-height:1.4;overflow-wrap:anywhere}
.account-room-detail p{margin:3px 0 8px}
.shared-composer-page{--wrap:760px;padding-top:32px}
.shared-composer-page .page-head{margin-bottom:24px;padding-bottom:20px}
.shared-composer-page .lede{font-size:1rem;line-height:1.6;max-width:64ch}
/* Its border is the line under the room's name, across the form: a paragraph's 68ch, counted
   in its small type, stopped it two thirds of the way. */
.shared-composer-context{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 16px;padding-bottom:18px;margin-bottom:24px;border-bottom:1px solid var(--rule);font-size:.8125rem;color:var(--ink-2);max-width:none}
.shared-composer-context > span{overflow-wrap:anywhere}
.shared-composer-page .field > .hint{margin:4px 0 8px}
.shared-composer-page textarea[data-auto-grow]{min-height:112px;max-height:360px}
.shared-composer-page .notice p{font-size:.875rem;line-height:1.6}
.response-portal,.moderation-page{padding-top:32px;--wrap:820px}
.response-portal h1,.moderation-page h1{font-size:clamp(1.85rem,3vw,2.35rem);line-height:1.2}
.response-portal .page-head,.moderation-page .page-head{margin-bottom:24px;padding-bottom:20px}
.response-portal .lede,.moderation-page .lede{font-size:1rem;line-height:1.6}
.response-portal .card{padding:24px}
.portal-request h2{font-size:1.125rem;line-height:1.4;overflow-wrap:anywhere}
.response-portal .letter-preview{padding:16px;font-size:.9375rem;line-height:1.65;border-color:var(--rule);background:var(--stock)}
.response-portal textarea[data-auto-grow]{min-height:150px;max-height:400px}
.response-portal .field > label{font-size:1.125rem;font-weight:650}
.portal-unavailable h1{margin:14px 0 16px;max-width:24ch}
.portal-unavailable p{margin-bottom:16px;max-width:60ch}
.page-response .nav-links,.page-response .nav-user,.page-response .mobile-menu{display:none!important}
.portal-nav-label{margin-left:auto;font-size:.8125rem;color:var(--ink-2)}
.moderation-page .moderation-card{padding:22px}
.moderation-page .moderation-card .badge{max-width:100%;white-space:normal;overflow-wrap:anywhere;line-height:1.5}
.moderation-page .moderation-card .row-between > h3{font-size:1.0625rem;line-height:1.4;overflow-wrap:anywhere;margin:0}
/* Whose words a card holds: the name in full ink, the room after it muted. */
.moderation-page .queue-author{color:var(--ink);font-weight:700}
.moderation-tools{margin-bottom:24px}
.moderation-tools > summary{font-size:.875rem;font-weight:650;color:var(--tide);padding-block:8px;cursor:pointer}
/* A moderator's optional note to the author, folded under the card until wanted. */
.moderation-note > summary{font-size:.875rem;font-weight:650;color:var(--tide);padding-block:11px;cursor:pointer}
.moderation-note > summary .muted{font-weight:500}
.moderation-note textarea{display:block;width:100%;margin-top:4px}
.moderation-note p{margin-top:6px}
.moderation-filter{display:grid;grid-template-columns:minmax(0,1fr) 150px auto;gap:12px;align-items:end;padding:18px;margin-top:8px;border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--sheet)}
.moderation-filter label{font-size:.8125rem}
.moderation-filter .hint{margin-top:6px;font-size:.75rem;line-height:1.5}
.moderation-filter > p{grid-column:1/-1;margin:0}
.moderation-filter .btn{border-color:var(--rule)}
.moderation-group h2{font-size:1.125rem;line-height:1.4}
@media(max-width:600px){
  .moderation-filter{grid-template-columns:minmax(0,1fr) auto}
  .moderation-filter > div:first-child{grid-column:1/-1}
  .moderation-page .moderation-card,.response-portal .card{padding:20px}
  /* A post's two decisions sit side by side under "View context", rather than Block
     wrapping onto a line of its own away from Publish. */
  .moderation-decide{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .moderation-decide > a.btn{grid-column:1 / -1}
  .moderation-decide .inline-form{display:block}
  .moderation-decide .btn{width:100%;justify-content:center}
}
.shared-issue-page{padding-top:32px}
.shared-issue-heading{padding-bottom:18px;border-bottom:1px solid var(--rule)}
.shared-issue-heading h1{margin:0;font-size:clamp(1.5rem,2.8vw,2.1rem);line-height:1.2;overflow-wrap:anywhere}
.shared-issue-heading .meta{display:flex;flex-wrap:wrap;gap:8px 18px;padding-top:12px;margin-top:12px;font-size:.8125rem;color:var(--ink-2)}
.shared-issue-heading .meta b{color:var(--ink);font-weight:600}
.shared-section-nav{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 24px}
.shared-section-nav a{display:flex;align-items:center;gap:8px;min-height:42px;padding:8px 14px;border:1px solid var(--rule);border-radius:4px;background:var(--sheet);font-size:.875rem;font-weight:600;text-decoration:none}
.shared-section-nav a:hover{border-color:var(--tide);background:var(--tide-wash)}
.shared-section-nav span{font-variant-numeric:tabular-nums;color:var(--ink-3)}
.shared-issue-page .grid-side{grid-template-columns:minmax(0,1fr) 350px;gap:28px}
.shared-issue-page .plate,.shared-issue-page .card{padding:24px}
.shared-issue-page #support,.shared-issue-page #discussion,.shared-issue-page #school-copy{scroll-margin-top:90px}
.shared-issue-page #CommentBody{scroll-margin-top:140px}
.shared-support .figure{font-size:2.25rem;line-height:1.1;margin-top:10px;margin-bottom:5px}
.shared-support > .small{line-height:1.55}
.shared-consent-choices{border:0;padding:0;margin:16px 0 0;min-width:0}
.shared-consent-choices legend{font-size:.875rem;font-weight:650;margin-bottom:9px;padding:0}
.shared-consent-choices label{display:flex;align-items:flex-start;gap:10px;margin:0;padding:13px;background:var(--sheet);border:1px solid var(--rule-2);border-radius:4px;cursor:pointer;font-weight:400;line-height:1.5}
.shared-consent-choices label + label{margin-top:8px}
.shared-consent-choices label:hover{border-color:var(--tide)}
.shared-consent-choices label:has(input:checked){border-color:var(--tide);background:var(--tide-field);box-shadow:inset 3px 0 var(--tide)}
.shared-consent-choices label:focus-within{outline:2px solid var(--focus);outline-offset:2px}
.shared-consent-choices input{flex-shrink:0;margin:3px 0 0;width:18px;height:18px;accent-color:var(--tide)}
.shared-consent-choices strong{display:block;font-size:.9375rem}
.shared-consent-choices span > span{display:block;font-size:.8125rem;color:var(--ink-2);margin-top:4px}
.shared-promote{padding-top:14px;border-top:1px solid var(--rule)}
.shared-promote > summary{font-size:.9375rem;font-weight:650;color:var(--tide);padding-block:7px;cursor:pointer}
.shared-replies{list-style:none;padding:0;margin:0}
.shared-replies > li + li{padding-top:20px;margin-top:20px;border-top:1px solid var(--rule)}
.shared-issue-page textarea[data-auto-grow]{min-height:96px;max-height:360px}
.shared-message{display:block;width:100%;min-height:260px;max-height:480px;font-size:.875rem;line-height:1.6;background:var(--stock);resize:vertical}
.shared-delivery > .small{max-width:65ch}
/* Sending a prepared copy: three numbered steps in the order they happen (copy, email, mark it
   sent), the message first since it already ends with the reply link. */
.send-steps{list-style:none;counter-reset:send;margin:12px 0 0;padding:0}
.send-steps > li{counter-increment:send;position:relative;padding-left:36px;margin-bottom:18px}
.send-steps > li::before{content:counter(send);position:absolute;left:0;top:0;width:24px;height:24px;border-radius:50%;
  display:grid;place-items:center;background:var(--tide-field);color:var(--tide-deep);font-weight:700;font-size:.8125rem;line-height:1}
.send-steps > li > p{margin:2px 0 8px;font-size:.9375rem;max-width:62ch}
.send-steps .shared-message{min-height:200px}
.send-link summary{cursor:pointer;color:var(--tide-deep);font-size:.875rem;font-weight:600;padding:4px 0}
.send-link label{display:block}
/* A reply from the school: a label saying whether a parent has checked it, then its own words. */
.school-reply{margin:0;border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--sheet);overflow:hidden}
.school-reply-label{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:8px;padding:8px 12px;font-size:.875rem;font-weight:700;line-height:1.4}
.school-reply-label svg{width:18px;height:18px;margin-top:1px;stroke:currentColor}
.school-reply-when{font-weight:400;white-space:nowrap}
.school-reply.is-unconfirmed .school-reply-label{background:var(--sun-field);color:var(--sun-ink)}
.school-reply.is-confirmed .school-reply-label{background:var(--tide-field);color:var(--tide-deep)}
.school-reply-text{margin:0;padding:12px;font-size:.9375rem;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
@media (forced-colors:active){.send-steps > li::before{border:1px solid CanvasText}.school-reply-label{border-bottom:1px solid CanvasText}}
@media(max-width:960px){
  .shared-issue-page .grid-side{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:480px){
  .shared-issue-page .plate,.shared-issue-page .card{padding:20px}
  .shared-issue-heading .meta{font-size:.75rem;gap:6px 14px}
  .shared-section-nav a{padding-inline:10px}
  .shared-delivery .actions{align-items:stretch;flex-direction:column}
  /* "Confirm it came from the school" and "Reject response" each sit in a form: stacked, they
     run the width of the card like the links beside them, not each to its own words. */
  .shared-delivery .actions > form > .btn{width:100%;justify-content:center}
  /* Next steps: on a phone both buttons run the card's width, the answer to "Already started
     taking it further?" on top, rather than two ragged widths that wrapped. */
  .escalate-actions{flex-direction:column;align-items:stretch;width:100%}
  .escalate-actions > form > .btn{width:100%}
  .escalate-actions .btn{justify-content:center}
}
@media(min-width:1000px){
  .account-edit-fields{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.account-edit-fields .field{min-width:0}
}
@media(max-width:820px){
  .account-page .grid-side{grid-template-columns:minmax(0,1fr)}
  .account-page{padding-top:28px}
}
@media(max-width:480px){
  .account-page .plate,.shared-composer-page .plate{padding:20px}
  .shared-composer-page .actions{align-items:stretch;flex-direction:column}
}
input[type=text],input[type=email],input[type=tel],input[type=password],input[type=date],input[type=number],
input[type=search],textarea,select{border-width:1px;min-height:48px}
textarea{padding:14px 16px}
.btn{min-height:46px;border-radius:5px}
.btn-primary{background:var(--tide-deep);border-color:var(--tide-deep)}
.btn-primary:hover{background:var(--ink);border-color:var(--ink)}
.btn-ghost{border-color:transparent}
.notice{border-color:var(--rule);border-radius:5px}
.empty{border-color:var(--rule);padding:clamp(28px,4vw,48px)}
.nav{background:var(--sheet);border-bottom:1px solid var(--rule)}
.nav-in{min-height:76px;gap:24px}
.brand{letter-spacing:-.025em}
.brand-mark{background:var(--tide-deep);border-radius:5px}
.nav-links{gap:2px}
.nav-links a{padding-inline:10px}
.nav-links a[aria-current]::after{height:2px;background:var(--tide)}
.nav-me{font-size:.875rem}
footer.site{background:var(--stock-2);border-top:1px solid var(--rule);padding-block:40px 24px}
.foot-rose{width:52px;height:52px;margin-top:20px}
.foot-links{gap:clamp(24px,5vw,64px)}
.foot-links a{padding-block:6px}
.foot-base{margin-top:24px;padding-top:16px;font-size:.75rem}
.qa{max-width:72ch}
.qa > article{padding-block:26px}
.qa h2{font-size:1.25rem;line-height:1.35}
.qa p + p{margin-top:12px}
.page-interior .route{border-color:var(--rule)}
.faq-search{margin-bottom:28px;max-width:560px}
.faq-search .hint:empty{display:none}
.faq-answer{border-top:1px solid var(--rule)}
.faq-answer:last-child{border-bottom:1px solid var(--rule)}
.faq-answer > summary{display:flex;align-items:center;gap:20px;list-style:none;cursor:pointer;padding:22px 0}
.faq-answer > summary::-webkit-details-marker{display:none}
.faq-answer > summary::before,.atlas-nearby > summary::before{display:none}

/* Search and guidance: useful content above the fold, with a clear way back. */
.guidance-page{--wrap:1040px;padding-top:32px}
.guidance-page .page-head{padding-bottom:20px;margin-bottom:24px}
.guidance-page .page-head h1{font-size:clamp(1.75rem,3vw,2.25rem);line-height:1.15;max-width:30ch}
.guidance-page .page-head .lede{font-size:1rem;line-height:1.6;max-width:62ch}
.guidance-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:28px;align-items:start}
.guidance-context{border:1px solid var(--rule);border-radius:8px;background:var(--sheet);min-width:0}
.guidance-context > summary{display:flex;align-items:start;gap:12px;cursor:pointer;padding:20px;list-style:none}
.guidance-context > summary::-webkit-details-marker{display:none}
.guidance-context > summary::before,.guidance-context > summary::after{display:none}
.guidance-context > summary > span:first-child{min-width:0;flex:1}
.guidance-context strong{display:block;margin-top:6px;font-size:1rem;line-height:1.4}
.guidance-context-issue{display:block;font-size:.8125rem;line-height:1.5;color:var(--ink-2);margin-top:4px}
.guidance-context-origin{display:block;font-size:.75rem;line-height:1.5;color:var(--ink-3);margin-top:10px}
.guidance-change{display:inline-flex;align-items:center;min-height:44px;font-size:.8125rem;font-weight:650;color:var(--tide);text-decoration:underline;text-underline-offset:3px}
.guidance-context[open] .guidance-change-closed,.guidance-context:not([open]) .guidance-change-open{display:none}
.guidance-form{padding:0 20px 20px}
.guidance-fields{display:grid;gap:20px}
.guidance-fields label{font-size:.875rem}
.guidance-fields select{font-size:.9375rem;min-width:0;width:100%}
.guidance-form .btn{width:100%}
.guidance-results{min-width:0;scroll-margin-top:100px}
/* Shaped like the site's other notices (rounded, no side stripe), so it reads as one of them. */
.guidance-pending{margin-bottom:16px;padding:12px 16px;border:1px solid transparent;border-radius:14px;background:var(--tide-field);color:var(--tide-deep);font-size:.875rem;line-height:1.6}
.guidance-empty{padding:28px;border:1px solid var(--rule);border-radius:8px;background:var(--sheet)}
.guidance-empty h2{font-size:1.5rem;line-height:1.3;margin:8px 0 12px}
.guidance-empty p{font-size:1rem;line-height:1.65;color:var(--ink-2);max-width:60ch}
.guidance-limits{margin-top:24px;padding-top:20px;border-top:1px solid var(--rule);font-size:.8125rem;line-height:1.65;color:var(--ink-2)}
@media(max-width:860px){
  .guidance-layout{grid-template-columns:minmax(0,1fr);gap:20px}
  .guidance-fields{grid-template-columns:1fr 1fr}
  .guidance-fields > .field:last-child{grid-column:1/-1}
  .guidance-form .btn{width:auto}
}
@media(max-width:480px){
  .guidance-fields{grid-template-columns:minmax(0,1fr)}
  .guidance-empty{padding:22px}
  .guidance-empty h2{font-size:1.25rem}
  .guidance-context > summary{padding:16px 20px}
}
.help-page .page-head h1,.reading-page .page-head h1,.room-discovery .page-head h1,.recovery-page .page-head h1{
  font-size:clamp(1.85rem,3.2vw,2.65rem);max-width:30ch}
.help-page .page-head .lede,.reading-page .page-head .lede,.room-discovery .page-head .lede{
  font-size:1.0625rem;line-height:1.6;max-width:65ch}
.help-page .page-head,.reading-page .page-head,.room-discovery .page-head,.recovery-page .page-head{
  padding-bottom:20px;margin-bottom:24px}
.faq-search{max-width:none;margin-bottom:20px}
.faq-search-control,.room-finder-control{display:flex;gap:10px;align-items:stretch}
.faq-search-control input,.room-finder-control input{min-width:0;flex:1}
.faq-search-control .btn,.room-finder-control .btn{flex-shrink:0}
.faq-search .hint{min-height:24px;margin-top:8px}
.help-page .qa{max-width:none}
.faq-answer > summary{padding:20px 0;min-height:64px}
.faq-answer > summary::after{display:none}
.faq-answer > summary :is(h2,h3){flex:1;font-size:1.0625rem}
.faq-toggle{flex:0 0 24px;text-align:center;color:var(--tide);font-size:1.5rem;font-weight:400}
.faq-answer-body{max-width:66ch;padding-bottom:22px}
.faq-empty{margin-block:20px}
.room-finder{margin-bottom:28px}
.room-results-head{gap:12px;margin-bottom:12px;align-items:baseline}
/* "Clear search" stands alone, so it gets a thumb-sized target; the negative margin keeps the row where it was. */
.room-results-head > a{margin-left:auto;font-size:.875rem;padding-block:11px;margin-block:-11px}
.room-results{list-style:none;padding:0;margin:0;border-block:1px solid var(--rule)}
.room-result{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px 0}
.room-result + .room-result{border-top:1px solid var(--rule)}
.room-result > div{min-width:0;flex:1}
.room-result h3{font-size:1.125rem;line-height:1.4;overflow-wrap:anywhere}
.room-result p{margin-top:4px;line-height:1.5}
.room-result > a,.room-result > form{flex-shrink:0}
.room-result .btn{border:1px solid var(--rule);background:var(--sheet);white-space:nowrap}
.room-result .btn:hover{border-color:var(--tide);background:var(--tide-wash)}
.room-membership-note{display:inline-block;margin-top:10px;font-size:.75rem;font-weight:650;color:var(--tide-deep)}
.room-finder-empty h3{overflow-wrap:anywhere}
/* Nothing searched, no room yet: a quiet prompt where the list would be, not an empty card. */
.room-finder-start{padding:18px 20px;border-radius:var(--r-card,18px);background:var(--tide-wash,#EFF7F4)}
.room-finder-start p{margin:6px 0 0;color:var(--ink-2,#46534F)}
.contact-page{padding-top:32px}
.contact-self-service{margin-bottom:24px}
.contact-self-service > p:first-child{font-size:.9375rem;line-height:1.6}
.contact-self-service .hint{margin-top:8px;max-width:none}
.contact-directory{border-top:1px solid var(--rule)}
.contact-channel{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,.8fr);gap:28px;padding-block:22px;border-bottom:1px solid var(--rule)}
.contact-channel h2{font-size:1.0625rem;line-height:1.4;margin:0}
.contact-channel p{font-size:.9375rem;line-height:1.55;color:var(--ink-2);margin-top:6px}
.contact-address{min-width:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:6px}
.contact-address > a{font-size:.9375rem;overflow-wrap:anywhere;max-width:100%;min-height:24px}
.contact-address button{font:inherit;font-size:.8125rem;font-weight:650;color:var(--tide);background:transparent;border:0;padding:6px 0;min-height:32px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.contact-address button:hover{color:var(--ink)}
.contact-address [role=status]{font-size:.8125rem;line-height:1.5;color:var(--ink-2)}
.contact-address [role=status]:empty{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
#account-data{scroll-margin-top:100px}
@media(max-width:600px){
  .contact-channel{grid-template-columns:minmax(0,1fr);gap:12px;padding-block:20px}
}
.reading-page.has-reading-index{--wrap:1100px}
.reading-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:48px;align-items:start}
.reading-content{min-width:0;max-width:740px}
.reading-content .qa{max-width:none}
.reading-content .qa > article:first-child{padding-top:0}
.reading-index{position:sticky;top:100px;max-height:calc(100vh - 120px);overflow:auto;border-bottom:1px solid var(--rule)}
.reading-index > summary{font-size:.8125rem;font-weight:700;cursor:pointer;padding:12px 0;min-height:44px}
.reading-index > summary::before{display:none}
.reading-index-toggle{margin-left:auto;font-size:1.125rem;color:var(--tide)}
.reading-index nav{display:grid;padding-bottom:16px}
.reading-index a{display:block;border-left:2px solid var(--rule);padding:10px 14px;font-size:.8125rem;line-height:1.4;text-decoration:none;color:var(--ink-2)}
.reading-index a:hover,.reading-index a[aria-current]{border-color:var(--tide);color:var(--tide-deep);background:var(--tide-wash)}
.reading-content h2{scroll-margin-top:100px}
.reading-content .process-story > .card:first-child{padding-top:0}
.reading-next{margin-top:28px;padding-top:24px;border-top:1px solid var(--rule)}
.recovery-page{--wrap:560px}
.recovery-page .card{padding:24px}
.recovery-page .card h2{font-size:1.125rem}
.recovery-page .recovery-email{display:block;margin-top:12px;font-size:.875rem;overflow-wrap:anywhere}
@media(max-width:860px){
  .reading-layout{grid-template-columns:minmax(0,1fr);gap:24px}
  .reading-index{position:static;max-height:none}
  .reading-index > summary{padding-block:16px}
  .reading-content{max-width:none}
}
@media(max-width:560px){
  .room-result{display:block;padding-block:20px}
  .room-result > a,.room-result > form{margin-top:16px}
  .room-result .btn{width:100%}
  .room-result > form{display:block}
  .faq-search-control{flex-wrap:wrap}
  .faq-search-control input{flex-basis:100%}
  /* A ghost button is a filled pill now (warmth.css), so it keeps its sides on a phone. */
  .faq-search-control .btn{min-height:40px;padding:6px 18px}
  .recovery-page .card{padding:20px}
}
@media print{
  .reading-index,.faq-search{display:none!important}
  .reading-layout{display:block}
}

/* Private records: the parent's writing leads; supporting context stays beside it. */
.record-editor,.record-detail{--wrap:1100px}
.record-editor .page-head,.record-letter .page-head,.record-routes .page-head{padding-bottom:20px;margin-bottom:24px}
.record-editor .page-head h1,.record-letter .page-head h1,.record-routes .page-head h1{
  font-size:clamp(1.85rem,3.2vw,2.6rem);max-width:30ch}
.record-editor .page-head .lede,.record-letter .page-head .lede,.record-routes .page-head .lede{
  font-size:1rem;line-height:1.6;max-width:65ch}
.record-form-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:32px;align-items:start}
.record-story{padding:26px}
.record-story h2{margin-bottom:24px}
.record-editor .notice ul{padding-left:20px;margin-top:8px}
.record-story .field:last-child,.record-context .field:last-child{margin-bottom:0}
.record-story .hint{margin-block:7px 10px}
.record-story .q-n{border:0;background:var(--tide-wash);color:var(--tide-deep);width:24px;height:24px;border-radius:4px}
/* The number hangs: a question that wraps lines up under the words, not under the number
   (at 390px, step 3's "optional" had dropped beneath the "3"). "optional" is held to the last
   word with a no-break space, so it never sits on a line of its own. */
.q-label{display:flex;align-items:baseline;gap:10px}
.q-label .q-n{margin-right:0}
.record-story textarea[data-auto-grow]{min-height:120px;max-height:420px}
.record-story #Input_WhatHappened{min-height:180px}
.record-context{padding-block:6px}
.record-context .section-head{margin-bottom:24px;padding-bottom:18px}
.record-context .section-head::after{display:none}
.record-context select{max-width:100%}
.record-context .school-picker-selection{grid-template-columns:auto minmax(0,1fr);padding:12px}
.record-context .school-picker-plotted{display:none}
.record-head.title-block{background:transparent;border:0;border-bottom:1px solid var(--rule);padding:0 0 20px;border-radius:0}
.record-head .row-between{align-items:start;gap:16px}
.record-head .row-between h1{max-width:31ch;overflow-wrap:anywhere}
.record-head .badge{white-space:normal;max-width:260px;line-height:1.5}
.record-head .meta{padding-top:0;border:0;margin-top:16px;gap:6px 20px}
.record-audience{font-size:.8125rem;line-height:1.5;color:var(--tide-deep);margin-bottom:12px}
.record-section-nav{margin-top:0}
.record-section-nav a{min-height:44px}
@media(max-width:480px){.record-section-nav a{padding-inline:10px;font-size:.8125rem}}
.record-detail #record-timeline,.record-detail #record-original,.record-detail #record-tools{scroll-margin-top:100px}
.record-next-step{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:32px;row-gap:8px;
  border:1px solid var(--rule);padding:22px 24px;margin-bottom:28px;background:var(--tide-wash)}
.record-next-step > .label,.record-next-step > h2,.record-next-step > p{grid-column:1;margin:0}
.record-next-step > h2{font-size:1.25rem;line-height:1.35}
.record-next-step > p{font-size:.9375rem;line-height:1.6;max-width:64ch}
.record-next-step > .btn,.record-next-step > .actions{grid-column:2;grid-row:1 / span 3;align-self:center;margin:0}
.record-next-step > .actions{flex-direction:column;align-items:stretch;gap:6px;max-width:260px}
.record-next-step > .plot{grid-column:1 / -1}
.record-section-head h2{margin:0}
.record-section-head > a{font-size:.875rem;min-height:32px;display:inline-flex;align-items:center}
.record-detail .grid-side{grid-template-columns:minmax(0,1fr) 272px}
.record-detail aside > .plate,.record-detail aside > .card{padding:20px}
.record-timeline{padding:24px}
.record-detail textarea[data-auto-grow]{min-height:96px;max-height:360px}
/* The stamp under an entry's title is one line: "Recorded 29 Jul 2026, 5:51 am" on a sent letter,
   which had put "Recorded" on a line of its own above a block-level date. */
.record-detail .tl-body > .small{display:block;margin-top:3px;font-size:.75rem}
.record-detail .tl-body p{margin-top:8px;line-height:1.65}
.record-detail .tl-item{padding-bottom:24px}
.record-detail .timeline{margin-bottom:0}
.record-data-value{min-width:0}
.record-data-value > .record-copy{display:block}
.record-copy.is-collapsed{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:10;overflow:hidden}
.record-read{display:inline-flex;align-items:center;min-height:40px;margin-top:6px;font-size:.8125rem;font-weight:680;color:var(--tide-deep)}
.record-read:hover{text-decoration:underline}
[data-record-reading-region]{scroll-margin-top:84px}
.record-letter .letter-preview{border:0;border-radius:0;padding:24px 0 0;border-top:1px solid var(--rule);max-width:none}
.record-letter #Letter_BodyText{font-size:1rem;line-height:1.75;min-height:420px}
.record-letter .card{padding:28px}
.record-letter .card > .grid{margin-bottom:24px}
.record-letter .card > .grid > .field{margin-bottom:0}
.record-routes .official-route{background:var(--tide-wash)}
.record-routes .official-route p{max-width:58ch}
@media(max-width:860px){
  .record-form-grid{grid-template-columns:minmax(0,1fr);gap:28px}
  .record-context{padding:0}
  .record-context-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
  .record-context-fields > [data-non-government-sector]{grid-column:1 / -1}
  .record-detail .grid-side{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:560px){
  .record-editor .page-head,.record-letter .page-head,.record-routes .page-head{margin-bottom:20px}
  .record-story,.record-timeline,.record-letter .card{padding:20px}
  .record-story .opt{font-size:.75rem}
  .record-context-fields{display:block}
  .record-next-step{display:block;padding:20px}
  .record-next-step > h2{margin-block:8px}
  .record-next-step > .btn,.record-next-step > .actions{margin-top:16px;max-width:none}
  .record-next-step > .actions{align-items:stretch}
  .record-head .badge{max-width:100%}
  .record-head .meta{gap:8px}
  .record-head .meta > span{flex-basis:100%}
  .record-head .row-between{flex-direction:column}
  .record-letter .actions > .btn{flex:1 1 100%}
}
.faq-answer > summary :is(h2,h3){font-size:1.0625rem;margin:0;flex:1;text-wrap:pretty;line-height:1.5}
.faq-answer-body{padding:0 32px 24px 0;font-size:1rem;line-height:1.7}
.process-story{counter-reset:steps}
.process-story > .card{border:0;border-radius:0;background:transparent;padding:28px 0;border-top:1px solid var(--rule)}
.process-story > .card:first-child{padding-top:0;border:0}
.process-story .flex{gap:24px}
.process-story .step-num{border:0;background:transparent;font-size:1.5rem;color:var(--tide);height:auto}
.process-story h2{font-size:1.25rem;line-height:1.3;margin-bottom:10px}
.password-control{position:relative}
.password-control input{padding-right:68px}
/* Edge draws its own eye in a password box; the Show button is the one control. */
.password-control input::-ms-reveal{display:none}
.password-control button{position:absolute;right:3px;top:3px;bottom:3px;min-width:60px;
  border:0;background:transparent;color:var(--tide);font:inherit;font-size:.8125rem;font-weight:650;cursor:pointer}
.password-control button:hover{background:var(--tide-wash);border-radius:3px}
/* A new password's rules, ticked off as they're met (site.js). Unmet is a quiet dot, never red,
   and not a ring, which would look like a radio button; met is a teal disc with a tick. Two to a
   row where they fit, one under another on a narrow card. */
.password-rules{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:4px 16px;margin:8px 0 0;padding:0;
  list-style:none;font-size:.875rem;line-height:1.4;color:var(--ink-2)}
.password-rules li{display:flex;align-items:center;gap:7px;min-width:0;margin:0}
.password-rules svg{flex:none;width:16px;height:16px;fill:none;stroke-linecap:round;stroke-linejoin:round}
.password-rules .dot{fill:var(--ink-3)}
.password-rules .ring{fill:transparent;transition:fill .15s}
.password-rules path{stroke:none}
.password-rules .is-met{color:var(--ink)}
.password-rules .is-met .dot{fill:none}
.password-rules .is-met .ring{fill:var(--tide)}
.password-rules .is-met path{stroke:#fff;stroke-width:2}
@media(forced-colors:active){
  .password-rules .dot{fill:CanvasText}
  .password-rules .is-met .ring{fill:Highlight}
  .password-rules .is-met path{stroke:HighlightText}
}
.room-setup,.room-discovery,.rooms-overview{padding-top:32px}
.room-setup .page-head h1{font-size:clamp(1.85rem,3vw,2.35rem);line-height:1.2}
.room-setup .page-head .lede{font-size:1rem;line-height:1.6}
.room-setup .page-head{margin-bottom:24px;padding-bottom:20px}
.room-setup .card,.room-invitation{padding:24px}
.room-setup .grid{gap:20px;margin-bottom:24px}
.room-setup .grid > .field{margin-bottom:0}
.room-invitation h2{font-size:1.25rem;line-height:1.4;overflow-wrap:anywhere}
.room-other-rooms{border-top:1px solid var(--rule);padding-top:12px;margin-top:24px}
.room-other-rooms > summary{padding-block:10px;color:var(--tide);font-size:.9375rem;font-weight:650;cursor:pointer}
.room-other-rooms .room-finder{margin-top:18px}
.membership-requests{list-style:none;padding:0;border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--sheet)}
.membership-requests > li{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px}
.membership-requests > li + li{border-top:1px solid var(--rule)}
.membership-requests > li > div{min-width:0}
.membership-requests h3{font-size:1rem;line-height:1.4;overflow-wrap:anywhere}
.membership-requests p{font-size:.9375rem;margin-top:5px}
.membership-requests .btn{flex-shrink:0;border-color:var(--rule)}
.room-access{--wrap:800px}
.admission-status{padding:24px}
.admission-status h2{font-size:1.3125rem;line-height:1.4}
.admission-status > p{font-size:1rem;line-height:1.65}
.admission-facts{margin-top:20px}
.admission-facts > div{display:grid;grid-template-columns:130px minmax(0,1fr);gap:18px;padding:14px 0;border-top:1px solid var(--rule)}
.admission-facts dt{font-size:.8125rem;color:var(--ink-2)}
.admission-facts dd{margin:0;font-size:.9375rem;line-height:1.65}
@media(max-width:600px){
  .room-setup .card,.room-invitation,.admission-status{padding:20px}
  .membership-requests > li{align-items:start;flex-direction:column;gap:12px}
  .admission-facts > div{grid-template-columns:minmax(0,1fr);gap:5px}
}
/* Export previews share the reading rhythm of a document, not a dashboard. */
.evidence-bundle{--wrap:880px;padding-top:32px}
.bundle-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:14px}
.bundle-toolbar > a{font-size:.875rem;font-weight:600}
.bundle-guidance{font-size:.875rem;line-height:1.6;color:var(--ink-2);margin-bottom:24px;max-width:72ch}
.bundle-sections{margin-top:0}
.bundle-sections a{min-height:44px}
.bundle-sheet h2[id]{scroll-margin-top:100px}
.bundle-sheet{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-sm);padding:clamp(20px,4vw,40px);font-size:1rem;line-height:1.65;overflow-wrap:anywhere}
.bundle-masthead{display:flex;justify-content:space-between;align-items:start;gap:20px;padding-bottom:20px;margin-bottom:24px;border-bottom:2px solid var(--tide)}
.bundle-masthead > b{font-size:1.125rem}
.bundle-masthead > span{font-size:.75rem;line-height:1.6;text-align:right;color:var(--ink-2)}
.bundle-sheet h1{font-size:clamp(1.6rem,2.6vw,2rem);line-height:1.25;margin:0 0 24px;max-width:none}
.bundle-sheet h2{font-size:1.1875rem;line-height:1.4;margin-top:32px!important;margin-bottom:12px}
.bundle-sheet p + p{margin-top:10px}
.bundle-facts{margin:0;padding:0}
.bundle-facts > div{display:grid;grid-template-columns:170px minmax(0,1fr);gap:18px;padding:10px 0;border-bottom:1px solid var(--rule)}
.bundle-facts dt{font-size:.8125rem;color:var(--ink-2);font-weight:500}
.bundle-facts dd{margin:0;font-size:.9375rem}
.bundle-chronology{list-style:none;padding:0;margin:16px 0 0}
/* Wide enough for the longest full date, "29 September 2026", on one line. */
.bundle-chronology > li{display:grid;grid-template-columns:124px minmax(0,1fr);gap:20px;padding:14px 0;border-bottom:1px solid var(--rule)}
.bundle-chronology time{font-size:.8125rem;color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
/* "Recorded" sits over the date in the narrow date column, so the date itself never breaks. */
.bundle-recorded{display:block}
.bundle-chronology b{font-size:.9375rem;line-height:1.5}
.bundle-chronology p{margin-top:4px;font-size:.9375rem;line-height:1.65}
.bundle-note,.bundle-disclaimer{font-size:.8125rem;color:var(--ink-2);line-height:1.6}
.bundle-attachments{padding-left:20px}
.bundle-attachments > li{padding-block:8px}
.bundle-attachments span{display:block;font-size:.8125rem;color:var(--ink-2)}
.bundle-disclaimer{border-top:1px solid var(--rule);padding-top:20px;margin-top:32px}
.bundle-sheet .letter-preview{font:inherit;font-size:.9375rem;line-height:1.7;padding:20px;border-color:var(--rule);overflow-wrap:anywhere;white-space:pre-wrap;max-height:none;overflow:visible}
.bundle-sheet .record-copy.is-collapsed{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:10;overflow:hidden}
@media screen and (max-width:600px){
  .bundle-facts > div,.bundle-chronology > li{grid-template-columns:minmax(0,1fr);gap:3px}
  .bundle-recorded{display:inline}
  .bundle-facts > div{padding-block:12px}
  .bundle-masthead{display:block}
  .bundle-masthead > span{display:block;text-align:left;margin-top:8px}
  /* On a phone the letter is a ruled band across the sheet, so no card shadow either: with one,
     its words ran flush against the edge of what looked like a box. */
  .bundle-sheet .letter-preview{padding:14px 0;border-inline:0;border-radius:0;box-shadow:none}
}
@page assembly-bundle{size:A4;margin:16mm}
@media print{
  /* The named page goes on the body, not the bundle: a box on a differently named page
     starts a new sheet, so naming only the bundle printed an empty first page. */
  body:has(.evidence-bundle){page:assembly-bundle}
  .evidence-bundle{max-width:none;width:100%;margin:0;padding:0}
  .bundle-sheet{border:0;border-radius:0;padding:0;color:#000;font-size:11pt;line-height:1.5}
  .bundle-sheet h1{font-size:21pt}
  .bundle-sheet h2{font-size:13pt;break-after:avoid-page;margin-top:20pt!important}
  .bundle-masthead{border-color:#000;break-after:avoid-page}
  .bundle-sheet p{orphans:3;widows:3}
  .bundle-sheet .letter-preview{border:0;padding:0;font-size:10.5pt;line-height:1.5;white-space:pre-wrap;overflow:visible;max-height:none}
  /* The short fact rows stay whole. A chronology entry may run on to the next sheet: kept
     whole, a long note or reply jumped to a fresh sheet and left a third of one, or nearly all
     of another, blank. Its date and title stay with the start of what it says. */
  .bundle-facts > div{break-inside:avoid-page}
  .bundle-chronology > li{break-inside:auto}
  .bundle-chronology > li > div > b{break-after:avoid-page}
  .bundle-chronology p{orphans:3;widows:3}
  .bundle-sheet .table-wrap{overflow:visible;border:0}
  .bundle-sheet thead{display:table-header-group}
  .bundle-sheet tr{break-inside:avoid-page}
  .bundle-note,.bundle-disclaimer,.bundle-facts dt,.bundle-masthead > span,.bundle-chronology time{color:#333}
  /* Every word prints. The bundle's own fold (".bundle-sheet .record-copy.is-collapsed", above)
     is more specific than a plain ".record-copy.is-collapsed", so it is named here too: without
     it a saved PDF stopped long passages at ten lines with "…" and clipped the letter's edge. */
  .record-copy.is-collapsed,.bundle-sheet .record-copy.is-collapsed{display:block;-webkit-line-clamp:unset;overflow:visible}
  /* A private record printed straight from its page reads as the record: the title, where it
     stands, the dated timeline, what was told and the letters. The next-step advice, the
     section links, the forms and the buttons are for the screen. */
  .record-detail .record-audience,.record-detail .record-next-step,.record-detail .record-section-nav,
  .record-detail .btn{display:none!important}
  .record-detail .grid-side{display:block}
  .record-detail #record-tools{margin-top:24px}
  .record-detail .plate,.record-detail .card{box-shadow:none}
  /* Only the small cards stay whole: a long timeline or entry kept whole would jump to the next
     sheet and leave the first one blank under its heading. Headings stay with what follows. */
  .record-detail #record-tools .card,.record-detail .file-item{break-inside:avoid-page}
  .record-detail h2,.record-detail .tl-body > b,.record-detail .tl-body > .small{break-after:avoid-page}
  .record-detail .record-copy{orphans:3;widows:3}
}
.account-security,.recovery-page{--wrap:640px;padding-top:32px}
.account-security h1,.recovery-page h1{font-size:clamp(1.85rem,3vw,2.35rem);line-height:1.2}
.account-security .page-head,.recovery-page .page-head{padding-bottom:20px;margin-bottom:24px}
.account-security .lede,.recovery-page .lede{font-size:1rem;line-height:1.6}
.account-security .card,.recovery-page .card{padding:24px}
.account-security .field{margin-bottom:20px}
.account-security .hint{margin-top:8px}
.recovery-page .card{font-size:.9375rem;line-height:1.65}
.recovery-steps{padding-left:20px}
.recovery-reference code{display:block;margin-top:6px;overflow-wrap:anywhere;font-size:.8125rem}
@media(max-width:560px){
  .account-security .card,.recovery-page .card{padding:20px}
  .account-security .actions,.recovery-page .actions{gap:10px}
}

/* Hero: independent columns prevent map changes from opening holes in the copy. */
.home-hero{padding-block:clamp(32px,3.5vw,48px) 64px}
.sheet-head{display:grid;grid-template-columns:minmax(0,.94fr) minmax(0,1.06fr);
  align-items:start;gap:clamp(32px,6vw,80px)}
.hero-intro{padding-top:18px;min-width:0}
.sheet-head > .sheet-instrument{grid-column:2;grid-row:auto}
.hero-kicker{font-size:.8125rem;color:var(--tide);font-weight:650;letter-spacing:.02em;margin-bottom:24px}
.hero-claim h1{font-size:clamp(2.5rem,4.6vw,4.1rem);line-height:1.08;max-width:13ch;font-weight:650}
.hero-claim h1 span{color:var(--tide)}
.hero-claim .lede{font-size:1.125rem;line-height:1.65;max-width:39ch;margin-top:24px}
.hero-actions .actions{margin-top:28px}
.hero-assurance{font-size:.8125rem;color:var(--ink-3);margin-top:14px;max-width:35ch}
.hero-secondary{display:inline-flex;align-items:center;gap:16px;min-height:44px;margin-top:14px;
  font-weight:650;font-size:.9375rem;text-decoration:none}
.hero-secondary span{font-size:1.15em}
.hero-intro .creds{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:40px;gap:12px;padding-top:18px}
.hero-intro .creds > div{border:0;padding:0}
.creds dt{font-size:.6875rem;letter-spacing:.07em}
.creds dd{font-size:.8125rem;font-weight:550;line-height:1.5}

/* One explorer: search, map, selected school, optional detail. */
.school-atlas.plate{container:school-atlas / inline-size;background:var(--sheet);border:1px solid var(--rule);padding:22px;
  box-shadow:0 12px 40px -22px #023B4A30;border-radius:10px}
.atlas-head{gap:12px}
.atlas-head .chart-label{font-size:.6875rem;letter-spacing:.09em;color:var(--tide)}
.atlas-head h2{margin-top:6px;font-size:1.5rem;font-weight:650}
.atlas-head p{font-size:.875rem;line-height:1.5;margin-top:6px}
.atlas-source-mark{border:0;padding:0;white-space:nowrap;color:var(--ink-3);font-size:.75rem}
.atlas-source-mark > span{display:none}
.atlas-search{margin-top:20px}
.atlas-search label{font-size:.8125rem;letter-spacing:0;text-transform:none;margin-bottom:8px}
.atlas-search-control{border:1px solid var(--control-rule);border-radius:5px;overflow:hidden}
.atlas-search-control:focus-within{border-color:var(--tide);outline:2.5px solid var(--focus);outline-offset:2px}
/* The control draws the ring, so the field inside doesn't draw a second one. */
.atlas-search-control input:focus{outline:none}
.atlas-search-control input{min-height:50px;font-size:1rem}
.atlas-search-submit{background:var(--tide-deep);border:0;min-width:62px}
.atlas-search-submit:focus-visible{outline:2.5px solid var(--sheet);outline-offset:-5px}
.atlas-location{font-size:.75rem;margin-top:9px;line-height:1.45}
.atlas-location-detail{display:none}
.atlas-search-status{font-size:.75rem;line-height:1.45;color:var(--ink-3);margin-top:7px}
.atlas-search-status:empty{display:none}
.atlas-search-results{top:calc(100% - 2px);border-color:var(--rule-2);border-radius:5px;max-height:310px;
  overflow-y:auto;overscroll-behavior:contain;box-shadow:0 10px 24px -14px #023B4A45}
.atlas-search-results a{padding:12px;min-height:60px}
.atlas-search-results strong{font-size:.875rem}
.atlas-workbench{display:block;border:0;margin-top:16px;border-radius:6px;overflow:hidden}
.atlas-plot-shell{min-height:220px;height:220px;border:1px solid var(--rule);border-radius:6px}
.atlas-workbench.is-empty .atlas-plot-shell{min-height:200px;height:200px}
.atlas-workbench.is-empty .atlas-ledger{display:none}
.atlas-schematic{background-size:32px 32px}
.atlas-schematic::before{opacity:.35}
.atlas-workbench.is-empty .atlas-range,.atlas-workbench.is-empty .atlas-axis{opacity:.45}
.atlas-empty-plot{border:0;background:var(--tide-wash);padding:16px;width:220px}
.atlas-empty-plot strong{font-size:1rem;font-weight:650}
.atlas-empty-plot span:last-child{font-size:.8125rem;line-height:1.5}
.atlas-crosshair{border:0;font-size:1.75rem;color:var(--tide)}
.atlas-map-caption{top:10px;left:10px;font-size:.625rem;letter-spacing:.06em;border-color:var(--rule);border-radius:3px}
.atlas-ledger{display:block;background:var(--sheet)}
.atlas-selected{padding:18px 0 14px;border:0;box-shadow:none;display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.atlas-selected > .chart-label,.atlas-selected h3,.atlas-selected > p,.atlas-school-facts,.atlas-sector-check{grid-column:1/-1}
.atlas-selected h3{font-size:1.1875rem;line-height:1.3;margin-top:4px}
.atlas-selected > p{margin-top:4px;font-size:.8125rem}
.atlas-selected > .atlas-school-overview{font-size:.8125rem;line-height:1.5;margin-top:8px}
.atlas-school-facts{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;padding-top:10px}
.atlas-school-facts > div{gap:6px}
/* Reading text in the school pop-up is 12px at least, sentences 13px (it was 11px). */
.atlas-school-facts dt,.atlas-school-facts dd{font-size:.75rem}
.atlas-save{min-height:42px;margin-top:12px;padding:8px;border-radius:4px;font-size:.75rem}
.atlas-save{background:var(--sheet)}
.atlas-save-form{min-width:0;display:flex}
.atlas-save-form .atlas-save{flex:1}
.atlas-nearby{display:block;border-top:1px solid var(--rule)}
.atlas-nearby-head{min-height:48px;padding:12px 0;gap:8px;list-style:none;cursor:pointer;font-size:.8125rem;font-weight:650}
.atlas-nearby-head::-webkit-details-marker{display:none}
.atlas-nearby-head > b{margin-left:auto;color:var(--ink-3);font-size:.75rem;font-weight:500}
.atlas-nearby-head::after{content:'+';font-size:1.125rem;color:var(--tide);width:16px;text-align:center}
.atlas-nearby[open] > .atlas-nearby-head::after{content:'−'}
.atlas-nearby li > a{display:grid!important;min-height:54px;padding:10px 8px}
.atlas-nearby li.is-anchor{display:none}
.atlas-nearby strong{font-size:.875rem}
.atlas-row-number{border-color:var(--rule);border-radius:3px}
.atlas-distance-note{padding:10px 0;font-size:.8125rem}
.atlas-action{display:block;border-top:1px solid var(--rule);padding-top:12px;margin-top:0}
.atlas-action > [data-atlas-status]{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.atlas-action .atlas-pathway-cta{min-height:44px;border-radius:4px;font-size:.8125rem;padding:10px 12px;gap:10px}
.atlas-action > small{display:block;margin-top:8px;font-size:.8125rem;line-height:1.5}
.school-atlas:not([data-selected-school-id]),.school-atlas[data-selected-school-id='']{--atlas-empty:1}
.school-atlas[data-selected-school-id=''] .atlas-action{display:none}
.atlas-source-details{border-top:1px solid var(--rule);margin-top:12px;padding-top:8px}
.atlas-source-details > summary{font-size:.75rem;color:var(--ink-3);min-height:28px;cursor:pointer}
.atlas-attribution{border:0;padding:0 0 4px;margin:6px 0 0;font-size:.75rem}

.atlas-return{display:block;width:100%;margin-top:14px;padding:10px 12px;min-height:44px;text-align:left;
  font-size:.8125rem;line-height:1.4;font-weight:650;color:var(--tide-deep);background:var(--tide-wash);border:1px solid var(--rule);border-radius:5px}
.atlas-return:hover{border-color:var(--tide)}
.atlas-schematic::before{display:none}
.atlas-schematic{background-image:none;background-color:var(--tide-wash);inset:auto;left:50%;top:calc(50% - 14px);
  width:min(100%,250px);height:auto;aspect-ratio:1;translate:-50% -50%;overflow:visible}
.atlas-schematic .atlas-anchor-label{display:none}
.atlas-plot-shell{height:278px;min-height:278px}
.school-atlas:not([data-google-map-state='ready']) .atlas-map-caption{top:auto;bottom:0;left:0;right:0;
  min-height:28px;display:grid;place-items:center;border:0;border-top:1px solid var(--rule);border-radius:0;background:var(--sheet)}
.atlas-empty-plot{width:min(300px,85%);padding:18px;background:transparent}
.atlas-empty-plot .atlas-crosshair{display:none}
.atlas-empty-plot strong{font-size:1.125rem;line-height:1.3;max-width:23ch}
.atlas-empty-plot span:last-child{max-width:32ch}
.atlas-workbench.is-empty .atlas-range,.atlas-workbench.is-empty .atlas-axis{display:none}
.atlas-workbench.is-empty .atlas-schematic{width:100%;height:100%;aspect-ratio:auto;top:50%}
.atlas-workbench.is-empty .atlas-map-caption{display:none}
.atlas-workbench.is-empty .atlas-plot-shell{min-height:170px;height:170px}
.atlas-search-results strong,.atlas-search-results small{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.atlas-nearby ol{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}
.atlas-nearby li{min-width:0}
.atlas-nearby li > a{height:100%;min-height:68px;padding:12px 0;align-items:start;grid-template-columns:24px minmax(0,1fr);gap:8px}
.atlas-nearby strong{font-size:.8125rem;white-space:normal;line-height:1.35}
.atlas-nearby small{font-size:.8125rem;line-height:1.45;white-space:normal}
.atlas-row-number{font-size:.625rem;width:24px;height:24px;min-width:24px}
.atlas-selected{padding-block:14px 12px}
.atlas-school-facts{margin-top:8px;padding-top:8px}
/* The diagram and the chosen school form one working row when the atlas is wide
   enough. Container sizing also covers the single-column tablet layout. */
@container school-atlas (min-width:500px){
  .atlas-workbench.has-school{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 18px;align-items:start}
  .atlas-workbench.has-school .atlas-ledger{display:contents}
  .atlas-workbench.has-school .atlas-plot-shell{grid-column:1;grid-row:1}
  .atlas-workbench.has-school .atlas-selected{grid-column:2;grid-row:1;grid-template-columns:minmax(0,1fr);padding:6px 0 16px;align-content:start}
  .atlas-workbench.has-school .atlas-selected > *{grid-column:1}
  .atlas-workbench.has-school .atlas-save{margin-top:10px;min-height:44px}
  .atlas-workbench.has-school .atlas-school-facts > div{flex-wrap:wrap}
  .atlas-workbench.has-school .atlas-nearby{grid-column:1/-1;margin-top:12px}
}
/* Pointer exploration takes precedence over another pin's keyboard label;
   its focus outline remains, and the name returns when the pointer leaves. */
.atlas-schematic:has(.atlas-marker:hover) .atlas-marker:not(:hover) .atlas-marker-name{opacity:0;visibility:hidden}
@media(max-width:480px){
  .atlas-nearby ol{grid-template-columns:minmax(0,1fr)}
  .atlas-nearby li > a{min-height:58px}
}
@media(prefers-reduced-motion:no-preference){
  .find-local li{animation:editorial-arrive .25s ease-out both}
  .find-local li:nth-child(2){animation-delay:40ms}
  .find-local li:nth-child(3){animation-delay:80ms}
}

.home-section{padding-bottom:64px}
.home-section .section-head{margin-bottom:28px;padding-bottom:18px}
.home-route{grid-template-columns:repeat(4,minmax(0,1fr));border:0;background:transparent;gap:24px}
.home-route > li{display:flex;flex-direction:column;align-items:start;gap:12px;border:0;border-top:1px solid var(--rule-2);padding:20px 0 0}
.home-route .route-n{border:0;background:transparent;color:var(--tide);font-size:1.5rem;width:auto;height:auto;font-weight:500}
.home-route b{align-self:auto;font-size:1rem}
.home-route p{font-size:.875rem;line-height:1.6}
.home-route .route-owner{margin-top:auto;border:0;padding:0;background:none;color:var(--ink-3);font-size:.625rem}
.home-paths{gap:24px}
.home-paths .plate{padding:32px}
.home-paths h3{max-width:23ch;font-size:1.625rem;line-height:1.25;margin-top:10px}
.home-paths > .plate > p.muted{font-size:.9375rem;line-height:1.65;margin-top:14px}
.home-conversation{padding:20px;background:var(--tide-wash);border-radius:5px}
.home-close{background:var(--tide-deep);color:var(--sheet);padding:clamp(32px,5vw,60px);border-radius:8px}
.home-close h2,.home-close .lede{color:inherit}
.home-close .lede{opacity:.85;max-width:48ch;font-size:1.0625rem}
.home-close .btn-primary{background:var(--sheet);border-color:var(--sheet);color:var(--tide-deep)}
.home-close .btn-primary:hover{background:var(--tide-field)}

@media(max-width:1000px){.sheet-head{gap:32px;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}
  .atlas-source-mark{display:none}.school-atlas.plate{padding:18px}}
@media(max-width:760px){.sheet-head{grid-template-columns:minmax(0,1fr);gap:32px}.sheet-head > .sheet-instrument{grid-column:1;grid-row:auto}
  .hero-intro{padding:0}.hero-claim h1{font-size:clamp(2.6rem,8vw,3.8rem);max-width:17ch}
  .hero-claim .lede{max-width:44ch}.hero-kicker{margin-bottom:16px}.hero-intro .creds{margin-top:28px}
  .home-hero{padding-top:32px;padding-bottom:48px}.home-route{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 22px}
  .home-section{padding-bottom:48px}.home-paths .plate{padding:24px}.nav-in{min-height:64px;gap:12px}}
@media(max-width:480px){.school-atlas.plate{padding:16px}.atlas-search-control{grid-template-columns:32px minmax(0,1fr) auto}
  .atlas-search-submit{grid-column:auto;border:0;min-width:54px}.atlas-search-results{top:calc(100% - 2px)}
  .atlas-head h2{font-size:1.375rem}.atlas-plot-shell{height:238px;min-height:238px}
  .atlas-schematic{width:min(100%,210px)}
  .atlas-school-facts{gap:6px 12px}.atlas-selected{column-gap:8px}.atlas-source-mark{display:none}
  .hero-claim .lede{font-size:1rem}.hero-intro .creds{gap:10px}.creds dd{font-size:.75rem}
  .foot-grid{gap:28px}.foot-links{gap:24px}.home-route{column-gap:20px}.home-route p{font-size:.8125rem}}
@media(prefers-reduced-motion:no-preference){
  .hero-claim{animation:editorial-arrive .65s cubic-bezier(.16,1,.3,1)}
  .school-atlas{animation:editorial-arrive .8s cubic-bezier(.16,1,.3,1)}
  .btn,.card-link,input,select,textarea{transition:background-color .18s,border-color .18s,color .18s}
  .hero-secondary span{transition:transform .2s}.hero-secondary:hover span{transform:translate(2px,-2px)}
  .atlas-selected{animation:editorial-arrive .25s ease-out}
  @keyframes editorial-arrive{from{opacity:.6;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
}
/* Account workspace: a consistent, quiet index, with content doing the work. */
.tabs{border-color:var(--rule);gap:20px;margin-bottom:28px}
.tabs a{border:0;border-bottom:2px solid transparent;border-radius:0;margin:0;padding:10px 0}
.tabs a.active{border-color:var(--tide);background:transparent;box-shadow:none;color:var(--tide-deep)}
.records-overview{max-width:1040px;padding-top:32px}
.workspace-page{--wrap:1040px;padding-top:32px}
.workspace-page > .tabs{flex-wrap:wrap;overflow:visible;column-gap:clamp(12px,2vw,20px);row-gap:0}
.workspace-heading{display:flex;align-items:start;justify-content:space-between;gap:24px;margin-bottom:24px}
.workspace-heading h1{font-size:clamp(1.75rem,3vw,2.25rem);line-height:1.15;margin:0}
.workspace-heading p{margin-top:8px;font-size:.9375rem;line-height:1.6;max-width:62ch;color:var(--ink-2)}
.workspace-heading > .btn,.workspace-heading > .actions{flex-shrink:0}
.workspace-heading > .actions{gap:8px}
.account-edit-fields{display:grid;gap:20px;margin-bottom:24px}
.account-edit-fields > .field{margin-bottom:0}
.record-welcome{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);border:1px solid var(--rule);border-radius:8px;overflow:hidden;background:var(--sheet)}
.record-welcome-intro{padding:32px}
.record-welcome-intro h2{font-size:1.5rem;line-height:1.3;max-width:24ch}
.record-welcome-intro > p{margin-top:12px;font-size:1rem;line-height:1.65;max-width:48ch;color:var(--ink-2)}
.record-welcome-intro > .btn{margin-top:24px}
.record-welcome-intro > .record-welcome-privacy{margin-top:16px;font-size:.8125rem;line-height:1.6;max-width:44ch}
.record-welcome-prep{padding:32px;background:var(--tide-wash);border-left:1px solid var(--rule)}
.record-welcome-prep h3{font-size:1rem;line-height:1.4;margin:0 0 20px}
.record-welcome-prep dl{display:grid;gap:18px;margin:0}
.record-welcome-prep dt{font-size:.9375rem;font-weight:650;color:var(--ink)}
.record-welcome-prep dd{margin:5px 0 0;font-size:.875rem;line-height:1.6;color:var(--ink-2)}
.record-welcome-prep > p{margin-top:20px;font-size:.8125rem;line-height:1.6;color:var(--ink-2)}
.record-welcome-next{margin-top:20px;border-bottom:1px solid var(--rule)}
.record-welcome-next > summary{padding:12px 0;min-height:44px;font-size:.9375rem;font-weight:600;cursor:pointer}
.record-welcome-next > p{max-width:70ch;padding-bottom:20px;font-size:.9375rem;line-height:1.7;color:var(--ink-2)}
.record-welcome-room{margin-top:20px;font-size:.875rem;line-height:1.7;color:var(--ink-2)}
.record-welcome-room a{display:inline-block;min-height:24px}
@media(max-width:680px){
  .workspace-heading{flex-direction:column;gap:16px}
  .record-welcome{grid-template-columns:minmax(0,1fr)}
  .record-welcome-intro,.record-welcome-prep{padding:24px}
  .record-welcome-prep{border-left:0;border-top:1px solid var(--rule)}
}
.record-list > .plate{padding:24px 28px}
.record-list .badge{letter-spacing:.04em}
.record-list .actions{margin-top:12px}
.room-entry-list{display:grid;gap:14px;list-style:none;padding:0;margin:0}
.room-entry-list .card-link{position:relative;display:block;padding:24px 150px 24px 24px}
.room-entry-action{position:absolute;right:24px;top:50%;transform:translateY(-50%);font-size:.875rem;font-weight:650;color:var(--tide)}
.room-entry-action span{margin-left:8px}

/* Conversations first; room administration stays one deliberate disclosure away. */
.community-room{padding-top:28px}
.community-room-head{padding:0 0 20px;border-bottom:1px solid var(--rule)}
.community-room-head h1{font-size:clamp(1.75rem,3vw,2.5rem);margin-top:5px}
.community-room-head .chart-label{color:var(--tide-deep);font-size:.75rem;letter-spacing:.04em;text-transform:none}
.community-room-head .meta{display:flex;flex-wrap:wrap;border:0;padding:8px 0 0;margin:0;gap:8px 20px;font-size:.8125rem;text-transform:none}
.room-member-count{border:0;background:var(--tide-wash);color:var(--ink-2);border-radius:4px;padding:8px 12px}
.community-room-grid{grid-template-columns:minmax(0,1fr) 280px;gap:28px}
.feed-composer{border-color:var(--rule);border-radius:8px;margin-bottom:24px}
.feed-composer > summary{padding:16px 20px;min-height:76px}
.feed-composer > summary::after{display:none}
.composer-open-label{border:0;background:var(--tide-wash);font-size:.8125rem;letter-spacing:0;text-transform:none;border-radius:4px;padding:8px 12px}
.room-avatar{border:0;background:var(--stock-2);color:var(--tide-deep);border-radius:6px}
.room-avatar.is-you{background:var(--tide-deep);color:var(--sheet)}
.feed-heading{border:0;padding:0;margin-bottom:12px}
.feed-heading h2{font-size:1.25rem;margin:0}
.feed-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.feed-filters a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 14px;border:1px solid var(--rule);border-radius:6px;background:var(--sheet);color:var(--ink-2);font-size:.875rem;line-height:1.4;font-weight:600;text-decoration:none}
.feed-filters a:hover{border-color:var(--tide);background:var(--tide-wash);color:var(--tide-deep)}
.feed-filters a[aria-current]{background:var(--tide-deep);border-color:var(--tide-deep);color:var(--sheet)}
.feed-filters a:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.feed-search{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:20px}
.feed-search input{flex:1;min-width:120px;min-height:44px;font-size:.9375rem;background:var(--sheet)}
.feed-search .btn{border:1px solid var(--rule);background:var(--sheet);min-height:44px}
.feed-clear{font-size:.8125rem;min-height:32px;display:inline-flex;align-items:center}
.thread-list > li + li{margin-top:20px}
.thread-card{border-color:var(--rule);border-radius:8px}
.thread-head{padding:20px 20px 12px}
.thread-content{padding:0 20px 18px}
.thread-content h3{font-size:1.125rem;line-height:1.4;max-width:55ch}
.thread-copy{font-size:.9375rem;line-height:1.65;margin-top:8px}
.thread-copy.is-collapsed{max-height:9.9em;overflow:hidden}
.thread-read-toggle{display:block;min-height:44px;margin-top:4px;font-size:.8125rem;text-align:left}
.feed-pagination{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);margin:12px 0 20px}
.feed-pagination > span{grid-column:2;grid-row:1}
.feed-pagination > a{grid-column:1;grid-row:1}
.feed-pagination > a:last-child{grid-column:3}
/* "Newer" stretched across its column while "Older" kept its own width; both now sit at their
   ends at their own size, either side of the page count. */
.feed-pagination > a:first-child{justify-self:start}
@media print{.thread-copy.is-collapsed{max-height:none;overflow:visible}.thread-read-toggle{display:none}}
.thread-outcome{border:0;border-radius:4px;margin-top:14px;padding:12px 14px}
.thread-outcome span{font-size:.75rem;letter-spacing:0;text-transform:none}
.thread-stats{border:0;padding:0 20px 12px;min-height:0}
.thread-review-note{margin:0 20px 14px;border:0;border-radius:4px}
.comment-preview{border:0;background:var(--stock);padding:16px 20px 6px}
.comment-body{border:0;background:transparent;padding:0}
.comment-row{gap:10px;margin-bottom:12px}
.thread-actions{border-bottom:0;padding:4px 8px;gap:4px}
.thread-action{border:0;border-radius:4px}
.inline-reply{border-top:1px solid var(--rule);padding:18px 20px;background:var(--stock)}
.inline-reply-form .reply-context{grid-column:1/-1;grid-row:1;margin:0;font-size:.8125rem;line-height:1.5;color:var(--ink-2);overflow-wrap:anywhere}
.inline-reply-form textarea,.inline-reply-form .btn{grid-row:2}
/* Small notes stop at a readable length on a wide screen (they ran to about 100 characters). */
.reply-review-note{border:0;background:transparent;padding:0;line-height:1.55;max-width:75ch}
.notice > p{max-width:75ch}
.inline-reply-form .reply-close{grid-column:1/-1;justify-self:start;min-height:32px;font-size:.8125rem}
.room-rail{position:static;gap:16px}
.room-roll-card{padding:0}
.room-roll-card > summary{padding:18px 20px;min-height:60px;gap:10px;font-size:.9375rem}
.room-roll-card > summary .feed-count{margin-left:auto}
.room-roll-body{padding:0 20px 20px}
.room-roll-body .roll li{padding:10px 0}
.room-rail .chart-label{font-size:.75rem;letter-spacing:0;text-transform:none;color:var(--ink);font-weight:700}
.room-rail .card-sm{padding:20px}
.empty{background:var(--sheet);border-color:var(--rule);border-radius:8px}
@media(max-width:860px){
  .community-room-grid{grid-template-columns:minmax(0,1fr)}
  .room-rail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
}
@media(max-width:560px){
  .community-room{padding-top:20px}
  .community-room-head .row-between{gap:12px}
  .room-member-count{width:auto;justify-content:flex-start;font-size:.75rem}
  .community-room-head .meta{display:grid;gap:4px;font-size:.75rem}
  .community-room-head .meta > span:last-child{display:none}
  .thread-head{display:grid;grid-template-columns:38px minmax(0,1fr);padding:16px 16px 12px;gap:10px}
  .thread-badges{grid-column:1/-1;max-width:none;justify-content:flex-start}
  .thread-badges:empty,.thread-badges:not(:has(*)){display:none}
  .thread-badges .badge{font-size:.75rem;letter-spacing:.02em;text-align:left}
  .feed-filters{display:grid;grid-template-columns:1fr 1fr}
  .thread-content{padding:0 16px 16px}
  .thread-stats{padding:0 16px 12px}
  .comment-preview{padding:14px 16px 4px}
  .thread-review-note{margin:0 16px 12px}
  .inline-reply{padding:14px 16px}.inline-reply > .room-avatar{display:none}
  .inline-reply-form{grid-template-columns:minmax(0,1fr)}
  .inline-reply-form .btn{grid-column:1;grid-row:auto;justify-self:start}
  .composer-actions .btn-primary{flex:1 1 0;white-space:nowrap}
  .composer-actions .btn-ghost{flex:0 0 auto}
  .composer-actions .key-hint{order:1;flex-basis:100%;margin-top:-3px}
  .composer-actions .composer-request-link{order:2}
  .room-rail{grid-template-columns:minmax(0,1fr)}
  .room-entry-list .card-link{padding:20px}
  .room-entry-action{position:static;display:block;transform:none;margin-top:16px}
  .record-list > .plate{padding:20px}
}
@media(prefers-reduced-motion:no-preference){
  .inline-reply:not([hidden]){animation:reply-unfold .18s ease-out}
  @keyframes reply-unfold{from{opacity:.65;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
}
@media print{.home-close{background:white;color:black}.school-atlas{box-shadow:none!important}.atlas-source-details > *{display:block}}
