:root {
  --ink:#1d1d1f; --ink2:#2c2c2e; --paper:#f5f5f7; --cream:#e8e8ed;
  --coral:#7657ff; --gold:#ff9f0a; --cyan:#32ade6; --green:#30a46c;
  --muted:#6e6e73; --line:rgba(0,0,0,.09);
}
html { background:var(--paper); }
body { background:var(--paper); color:var(--ink); font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue",Arial,sans-serif; -webkit-font-smoothing:antialiased; }
h1,h2,h3,h4,.hero-copy h1,.sign-in-copy h1,.sign-in-card h2,.panel-heading h2,.rehearsal-heading h3,.group-title h2,.score-card h3,.future-sections h2,.family-card b,.viewer-head h2,.why-pulse h3,.card-heading h3,.recommendation h3,.form-heading h3,.bug-intro h3,.bug-help h3,.ticket-body h3,.tickets-empty h3,.maintenance-control b,.metric strong,.pulse-score strong,.date-block b { font-family:inherit!important; font-style:normal!important; letter-spacing:-.04em; }
button,a,input,select,textarea { -webkit-tap-highlight-color:transparent; }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible { outline:3px solid rgba(0,113,227,.28); outline-offset:2px; }

.library-header,.portal-header { position:sticky; z-index:50; top:0; height:52px; padding:0 clamp(1rem,2vw,2.5rem); border-bottom:1px solid var(--line); background:rgba(250,250,252,.86); color:var(--ink); backdrop-filter:saturate(180%) blur(20px); }
.library-brand,.portal-brand { gap:.65rem; font-size:.72rem; font-weight:700; letter-spacing:-.01em; }
.portal-brand { min-width:0; max-height:44px; overflow:hidden; }
.portal-brand .official-logo,.library-brand .official-logo { display:block; width:46px; height:46px; max-width:46px; max-height:46px; flex:0 0 46px; object-fit:contain; }
.portal-brand>span { min-width:0; white-space:nowrap; }
.library-brand b,.portal-brand b { display:inline; margin:0 0 0 .2rem; color:var(--muted); font-size:.7rem; font-weight:500; text-transform:none; }
.brand-wave,.wave { height:22px; gap:2px; }.brand-wave i,.wave i { width:3px!important; border-radius:5px; background:linear-gradient(#7657ff,#ff5f7e)!important; }
.library-header .header-actions,.portal-header nav { gap:1.35rem; color:#3b3b3d; font-size:.68rem; font-weight:400; letter-spacing:0; text-transform:none; }
.member-pill { padding:.35rem .65rem; border:0; background:#e9f7ef; color:#24744f; }
.portal-header nav button { padding:.42rem .7rem; border:0; border-radius:999px; background:var(--blue,#0071e3); color:#fff; font-size:.66rem; }

/* Score library */
.library-hero { width:100%; min-height:520px; align-items:center; max-width:none; margin:0; padding:clamp(4rem,7vw,7rem) clamp(1.25rem,3vw,3.5rem); border-radius:0 0 36px 36px; color:var(--ink); background:radial-gradient(circle at 82% 28%,rgba(255,95,126,.2),transparent 24%),radial-gradient(circle at 62% 74%,rgba(118,87,255,.25),transparent 30%),linear-gradient(145deg,#fff 0%,#f1efff 100%); }
.library-hero::after { opacity:.28; background:linear-gradient(120deg,transparent 35%,rgba(255,255,255,.7)); }
.hero-copy { position:relative; z-index:2; }.eyebrow { color:var(--coral); font-size:.75rem; letter-spacing:0; text-transform:none; }
.hero-copy h1 { font-size:clamp(3.8rem,8vw,7.8rem); font-weight:700; line-height:.88; }
.hero-copy h1 em { background:linear-gradient(90deg,#7657ff,#ef5a91,#ff7a40); -webkit-background-clip:text; background-clip:text; color:transparent; font-style:normal; }
.hero-copy>p:last-child { color:var(--muted); font-size:1.02rem; line-height:1.5; }
.library-stats { overflow:hidden; min-width:390px; gap:0; border:1px solid rgba(255,255,255,.7); border-radius:22px; background:rgba(255,255,255,.58); box-shadow:0 16px 44px rgba(66,48,130,.12); backdrop-filter:blur(22px); }
.library-stats div { background:transparent; }.library-stats strong { color:var(--coral); font-size:2.5rem; font-weight:700; }.library-stats span { color:var(--muted); font-size:.62rem; letter-spacing:0; text-transform:none; }
.hero-rings { opacity:.45; }
.library-view-tabs { padding-inline:clamp(1rem,2vw,2.5rem); }
.library-workspace { width:100%; grid-template-columns:clamp(250px,15vw,320px) minmax(0,1fr); max-width:none; padding:2rem clamp(.75rem,1.5vw,2rem); }
.filters { margin:0 0 2rem; padding:1.3rem; border:0; border-radius:24px; background:#fff; box-shadow:0 8px 28px rgba(0,0,0,.05); }
.filter-heading p { font-size:.7rem; letter-spacing:0; text-transform:none; }.filter-heading button,[data-reset] { color:#0071e3; font-size:.65rem; letter-spacing:0; text-transform:none; }
.instrument-button { border-radius:12px; color:#55555a; }.instrument-button:hover,.instrument-button.active { background:#eceafc; color:#332873; }.instrument-button .chair-icon { background:#f1efff; color:var(--coral); font-family:inherit; font-style:normal; font-weight:700; }.instrument-button.active .chair-icon { background:#7657ff; color:#fff; }
.committee-card,.piascore-note { border:0; border-radius:16px; background:#f5f5f7; }.piascore-note { border-left:0; }.piascore-note b { font-size:1rem; font-weight:700; }.piascore-note a { color:#0071e3; border:0; font-size:.62rem; letter-spacing:0; text-transform:none; }
.switch input:checked+span { background:#34c759; }
.score-content { padding:1.3rem clamp(1rem,2vw,2.5rem) 6rem; }.score-search,.sort-select,.filter-drawer-button { border:0; border-radius:14px; background:#fff; box-shadow:0 4px 18px rgba(0,0,0,.05); }.score-search input { padding:1rem .5rem; }.sort-select { border-radius:14px; letter-spacing:0; text-transform:none; }
.event-chip { border:0; background:#e8e8ed; color:#55555a; }.event-chip:hover,.event-chip.active { background:var(--ink); color:#fff; }
.results-meta { border-color:var(--line); }.results-meta b { color:var(--coral); }.group-title h2 { font-size:1.7rem; font-weight:700; }
.score-grid { gap:1rem; }.score-card { padding:1.2rem; border:0; border-radius:20px; box-shadow:0 7px 24px rgba(0,0,0,.06); }.score-card:hover { border:0; box-shadow:0 16px 35px rgba(0,0,0,.11); }.score-card h3 { font-size:1.12rem; font-weight:650; }.score-card .instrument { color:var(--coral); letter-spacing:0; text-transform:none; }.file-type { border-radius:7px; background:#f0edff; color:#5d42d8; }
.preview-button,.download-button { border-radius:999px; letter-spacing:0; text-transform:none; }.preview-button { background:#0071e3; }.preview-button:hover { background:#0077ed; color:#fff; }.download-button { background:#ededf1; }
.future-sections { max-width:none; margin:0 clamp(1rem,2vw,2rem) 3rem; border-radius:36px; background:#111; }.future-sections>p { color:#a58cff; letter-spacing:0; text-transform:none; }.future-sections h2 { font-weight:700; }.future-sections h2 em { background:linear-gradient(90deg,#9f84ff,#ff6590); -webkit-background-clip:text; background-clip:text; color:transparent; font-style:normal; }
.master-workspace { width:100%; max-width:none; padding-inline:clamp(1rem,3vw,3.5rem); }

@media(min-width:1500px) { .score-grid { grid-template-columns:repeat(4,minmax(0,1fr)); } }
@media(min-width:2200px) { .score-grid { grid-template-columns:repeat(5,minmax(0,1fr)); } }
.family-grid { gap:1rem; background:transparent; }.family-card { min-height:190px; border-radius:22px; background:#202022; }.family-card.active { background:linear-gradient(145deg,#7256ee,#b66fff); color:#fff; }
.score-viewer { overflow:hidden; border-radius:24px; background:var(--paper); }.viewer-head { height:82px; background:rgba(28,28,30,.96); }.viewer-head p { color:#b7a7ff; letter-spacing:0; text-transform:none; }.viewer-actions a { border:0; border-radius:999px; background:#0071e3; text-transform:none; }.viewer-foot a { color:#0071e3; }.toast { border-radius:999px; background:rgba(28,28,30,.92); backdrop-filter:blur(16px); }

/* Portal */
.sign-in { min-height:calc(100svh - 52px); max-width:1500px; margin:auto; padding:clamp(2rem,6vw,6rem); color:var(--ink); background:radial-gradient(circle at 15% 15%,rgba(118,87,255,.21),transparent 28%),radial-gradient(circle at 72% 70%,rgba(255,98,139,.18),transparent 28%),var(--paper); }
.sign-in-copy>p:first-child,.panel-heading p,.rehearsal-heading p,.card-heading p,.form-heading p { color:var(--coral); font-size:.72rem; letter-spacing:0; text-transform:none; }
.sign-in-copy h1 { font-size:clamp(3.8rem,8vw,7.8rem); font-weight:700; line-height:.88; }.sign-in-copy h1 em { background:linear-gradient(90deg,#7657ff,#ef5a91,#ff7a40); -webkit-background-clip:text; background-clip:text; color:transparent; font-style:normal; }.sign-in-copy>p:last-child { color:var(--muted); font-size:1rem; line-height:1.55; }
.sign-in-card { overflow:hidden; max-width:520px; border:1px solid rgba(118,87,255,.13); border-radius:28px; background:rgba(255,255,255,.9); box-shadow:0 28px 70px rgba(58,44,110,.15); backdrop-filter:blur(24px); }.step-label { color:#6850e8; font-size:.78rem; letter-spacing:0; text-transform:none; }.sign-in-card h2 { font-size:2.4rem; font-weight:700; }.sign-in-card label,.broadcast-fields label,.pulse-card>label { color:var(--muted); font-size:.78rem; letter-spacing:0; text-transform:none; }.sign-in-card input,.sign-in-card select,.broadcast-fields input,.broadcast-fields select,.pulse-card select,.pulse-card textarea,.broadcast-fields textarea { width:100%; min-height:52px; padding:.85rem 1rem; border:1px solid #d9dee7; border-radius:14px; background:#f7f8fb; color:#182234; outline:none; transition:border-color .18s ease,box-shadow .18s ease,background .18s ease; }.sign-in-card input:focus,.sign-in-card select:focus,.broadcast-fields input:focus,.broadcast-fields select:focus,.pulse-card select:focus,.pulse-card textarea:focus,.broadcast-fields textarea:focus { border-color:#7657ff; background:#fff; box-shadow:0 0 0 4px rgba(118,87,255,.13); }
.tenancy-card label { gap:.65rem; margin-top:1.25rem; }
.tenancy-card label small,.tenancy-card>small { color:#768398; font-size:.875rem; font-weight:500; line-height:1.5; letter-spacing:0; text-transform:none; }
.sign-in-card button,.primary-action { border-radius:999px; background:#0071e3; color:#fff; letter-spacing:0; text-transform:none; }.sign-in-card button:hover,.primary-action:hover { background:#0077ed; }
.portal-app { grid-template-columns:250px 1fr; min-height:calc(100svh - 52px); gap:1rem; padding:1rem; }.portal-sidebar { top:68px; height:calc(100vh - 84px); padding:1rem; border-radius:24px; background:#fff; color:var(--ink); box-shadow:0 8px 30px rgba(0,0,0,.06); }.profile { padding:.6rem; }.profile>span { background:linear-gradient(145deg,#7657ff,#b86dff); color:#fff; font-family:inherit; font-style:normal; font-weight:700; }.profile small { color:var(--muted); }.portal-nav { gap:.25rem; }.portal-nav button,.portal-nav a { border-radius:12px; color:#68686d; }.portal-nav button:hover,.portal-nav button.active,.portal-nav a:hover { background:#eeecfc; color:#44358b; }.portal-nav span { color:var(--coral); }.sidebar-note { border:0; border-radius:14px; background:#f5f5f7; }.sidebar-note p { color:var(--muted); }
.portal-main { border-radius:24px; background:var(--paper); }.portal-panel { padding:clamp(2rem,5vw,4rem); }.panel-heading h2 { font-size:clamp(2.7rem,5vw,5rem); font-weight:700; }.today-chip { border:0; background:#e8e8ed; letter-spacing:0; text-transform:none; }
.notice { border:0; border-radius:16px; background:#fff4db; }.member-notices article { border:0; border-radius:14px; background:#edf8fb; }
.event-signups { gap:1rem; }.signup-card { border-radius:24px; background:linear-gradient(145deg,#24234c,#6e55df); box-shadow:0 14px 35px rgba(63,48,132,.16); }.signup-card:nth-child(2) { background:linear-gradient(145deg,#351e35,#a54473); }.signup-card h3 { font-size:clamp(1.8rem,3vw,3rem); font-weight:700; }.response-control { border-radius:999px; }.response-control button { border-radius:999px; letter-spacing:0; text-transform:none; }
.rehearsal-heading h3 { font-size:2rem; font-weight:700; }.rehearsal-list { border:0; }.rehearsal-row { margin-bottom:.5rem; border:0; border-radius:16px; background:#fff; }.rehearsal-row.changed { background:#fff4db; }.date-block b { font-size:1.05rem; font-weight:700; }.mini-response button { border:0; border-radius:999px; background:#e8e8ed; }
.pulse-card,.why-pulse,.dashboard-card,.recommendation,.broadcast-form,.message-preview,.bug-form,.bug-help,.ticket-metrics article,.ticket-card { border:0; border-radius:24px; box-shadow:0 8px 28px rgba(0,0,0,.06); }.why-pulse,.primary-rec,.bug-help,.api-explainer { background:#111; color:#fff; }.why-pulse h3,.bug-help h3 { font-weight:700; }.why-pulse h3 em,.bug-help h3 em { color:#a58cff; font-style:normal; }.rating button { border:0; border-radius:12px; background:#f2f2f7; font-family:inherit; font-style:normal; }.rating button.active { background:#7657ff; color:#fff; }
.metric-grid,.dashboard-grid,.recommendation-grid { gap:1rem; }.metric { border:0; border-radius:20px; background:#fff; box-shadow:0 7px 24px rgba(0,0,0,.05); }.metric strong { font-weight:700; }.dashboard-card { background:#fff; }.card-heading h3 { font-weight:700; }.trend-bar { border-radius:6px 6px 0 0; }.trend-bar.actual { background:#7657ff; }.trend-bar.planned { background:#32ade6; }.pulse-score strong { color:#7657ff; font-weight:700; }.recommendation h3 { font-weight:700; }.confidence i { background:#a58cff; }.research-note { border:0; border-radius:16px; background:#ececf1; }.research-note a { color:#0071e3; border:0; }
.export-button,.ticket-filters button,.ticket-actions select,.ticket-actions button { border:0; border-radius:999px; }.export-button { background:#fff; box-shadow:0 4px 14px rgba(0,0,0,.05); text-transform:none; }.form-heading>span,.bug-intro>span { background:#7657ff; color:#fff; font-family:inherit; font-style:normal; }.form-heading h3,.bug-intro h3 { font-weight:700; }.phone-chat { border-radius:18px; }.api-explainer { border-radius:24px; }.api-explainer h3 { font-weight:700; }.screenshot-drop { border-radius:18px; background:#f5f5f7; }.screenshot-drop>b { font-weight:700; }.device-capture { border-radius:14px; }.ticket-filters { background:#e8e8ed; }.ticket-card { background:#fff; }.ticket-shot { border-radius:14px; }.ticket-actions button { background:#0071e3; color:#fff; }.maintenance-control { border:0; border-radius:18px; background:#fff1ee; }
.past-lock-note { margin:1rem 0 0; padding:1rem; border-radius:14px; background:#eaf2ff; color:#56708c; font-size:.66rem; line-height:1.5; }
.attendance-analysis { display:grid; grid-template-columns:1.3fr .8fr; gap:1rem; margin-top:1rem; }.section-attendance-table { margin-top:1.2rem; }.section-attendance-row { display:grid; grid-template-columns:minmax(110px,1.3fr) .55fr .55fr 1fr .65fr; align-items:center; gap:.6rem; padding:.75rem 0; border-top:1px solid var(--line); font-size:.66rem; }.section-attendance-row.header { color:#8b8b91; font-size:.57rem; font-weight:650; }.section-attendance-row>strong { color:#d53d47; text-align:center; }.section-attendance-row>span:nth-child(4) { display:flex; align-items:center; gap:.5rem; }.attendance-rate { width:58px; height:7px; overflow:hidden; display:block; border-radius:999px; background:linear-gradient(90deg,#34c759 var(--rate),#e8e8ed var(--rate)); }.attendance-rate.danger { background:linear-gradient(90deg,#ff453a var(--rate),#e8e8ed var(--rate)); }
.danger-list { display:grid; gap:.55rem; margin-top:1.2rem; }.danger-member { display:grid; grid-template-columns:auto 1fr auto auto; align-items:center; gap:.65rem; padding:.7rem; border-radius:14px; background:#f5f5f7; }.danger-member.danger { background:#fff0ef; }.danger-avatar { width:34px; height:34px; display:grid; place-items:center; border-radius:50%; background:#e8e4ff; color:#5741c9; font-size:.62rem; font-weight:700; }.danger-member>div,.danger-member>p { display:flex; flex-direction:column; gap:.12rem; margin:0; }.danger-member b { font-size:.66rem; }.danger-member small { color:#88888e; font-size:.55rem; }.danger-member>p { text-align:right; }.danger-member>p strong { font-size:.85rem; }.danger-member>i { padding:.3rem .48rem; border-radius:999px; background:#fff1cf; color:#916800; font-size:.5rem; font-style:normal; font-weight:700; white-space:nowrap; }.danger-member.danger>i { background:#ffdcd8; color:#b52c27; }.decision-note { margin:1rem 0 0; padding-top:1rem; border-top:1px solid var(--line); color:#88888e; font-size:.58rem; line-height:1.55; }.analytics-empty { padding:2rem; border-radius:14px; background:#f5f5f7; color:#78787e; font-size:.68rem; text-align:center; }
.register-explainer { display:flex; align-items:center; gap:1rem; margin-bottom:1rem; padding:1rem 1.2rem; border-radius:16px; background:#ece9ff; color:#50447e; }.register-explainer span { flex:0 0 auto; font-size:.64rem; font-weight:700; }.register-explainer p { flex:1; margin:0; font-size:.67rem; line-height:1.5; }.register-explainer .attendance-sheet-link { flex:0 0 auto; min-height:40px; padding:.55rem .8rem; font-size:.7rem; }.register-toolbar { display:grid; grid-template-columns:1.2fr .8fr auto; align-items:end; gap:1rem; padding:1.2rem; border-radius:20px 20px 0 0; background:#fff; }.register-toolbar label { display:flex; flex-direction:column; gap:.45rem; color:var(--muted); font-size:.62rem; }.register-toolbar select { min-height:42px; padding:.65rem .8rem; border:0; border-radius:12px; background:#f2f2f7; }.lock-register { min-height:42px; padding:.65rem 1rem; border:0; border-radius:999px; background:#0071e3; color:#fff; cursor:pointer; font-size:.66rem;font-weight:650; }.lock-register:disabled { background:#e6f4ec; color:#24744f; cursor:default; }.register-summary { display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); }.register-summary article { padding:1rem 1.2rem; background:#fff; }.register-summary strong { display:block; font-size:1.7rem; }.register-summary span { color:var(--muted); font-size:.58rem; }.register-summary .alert strong { color:#ff453a; }.register-table { overflow-x:auto; border-radius:0 0 20px 20px; background:#fff; }.register-row { min-width:720px; display:grid; grid-template-columns:1.2fr .8fr .7fr 1.6fr; align-items:center; gap:1rem; padding:.75rem 1.2rem; border-top:1px solid var(--line); font-size:.66rem; }.register-row.header { color:#88888e; font-size:.57rem; font-weight:650; }.register-member { display:flex; align-items:center; gap:.65rem; }.register-member>span { width:32px; height:32px; display:grid; place-items:center; border-radius:50%; background:#ece9ff; color:#5741c9; font-size:.58rem; font-weight:700; }.self-status { width:max-content; padding:.3rem .5rem; border-radius:999px; background:#eeeeF2; color:#68686d; font-size:.54rem; font-style:normal; text-transform:capitalize; }.self-status.yes { background:#e5f6ed; color:#24744f; }.self-status.no { background:#ffe4e1; color:#a93630; }.final-control { display:grid; grid-template-columns:repeat(3,1fr); gap:.25rem; padding:.2rem; border-radius:999px; background:#f2f2f7; }.final-control button { padding:.5rem; border:0; border-radius:999px; background:transparent; color:#77777c; cursor:pointer; font-size:.56rem; }.final-control button.active.present { background:#30a46c; color:#fff; }.final-control button.active.absent { background:#ff453a; color:#fff; }.final-control button.active.excused { background:#ff9f0a; color:#fff; }.final-control button:disabled { cursor:default; }

@media(max-width:1050px) { .library-hero { align-items:flex-start; }.library-workspace { grid-template-columns:230px 1fr; }.sign-in { grid-template-columns:1fr; }.portal-app { grid-template-columns:210px 1fr; }.attendance-analysis { grid-template-columns:1fr; } }
@media(max-width:760px) {
  .library-header,.portal-header { height:48px; }.library-header .header-actions a:last-child,.portal-header nav a:last-of-type { display:none; }.library-brand b,.portal-brand b { display:none; }
  .portal-brand .official-logo,.library-brand .official-logo { width:42px; height:42px; max-width:42px; max-height:42px; flex-basis:42px; }
  .library-hero { min-height:620px; border-radius:0 0 26px 26px; }.library-stats { width:100%; min-width:0; }.library-stats strong { font-size:1.8rem; }.library-workspace { display:block; padding:1rem; }.filters { inset:48px 0 0; border-radius:0 24px 24px 0; }.score-content { padding:1rem 0 4rem; }.score-card { border-radius:18px; }.future-sections { margin:0 1rem 2rem; padding:4rem 1.2rem; border-radius:26px; }.family-card { border-radius:18px; }
  .portal-app { display:block; padding:0; }.portal-sidebar { position:sticky; z-index:30; top:48px; height:auto; padding:.45rem; border-radius:0; box-shadow:0 1px 0 var(--line); }.portal-nav button,.portal-nav a { border-radius:10px; }.portal-main { border-radius:0; }.portal-panel { padding:2rem 1rem; }.sign-in { padding:3rem 1rem; }.sign-in-card { border-radius:22px; }.signup-card,.pulse-card,.why-pulse,.dashboard-card,.recommendation,.broadcast-form,.message-preview,.bug-form,.bug-help,.api-explainer,.ticket-card { border-radius:20px; }
  .section-attendance-row { grid-template-columns:minmax(90px,1.3fr) .5fr .5fr 1fr .6fr; gap:.3rem; font-size:.58rem; }.attendance-rate { width:34px; }.danger-member { grid-template-columns:auto 1fr auto; }.danger-member>i { grid-column:2/-1; width:max-content; }.register-explainer { align-items:flex-start; flex-direction:column; }.register-toolbar { grid-template-columns:1fr; }.register-summary { grid-template-columns:1fr 1fr; }
}
@media(min-width:900px) and (max-width:1050px) {
  .sign-in { grid-template-columns:minmax(0,.85fr) minmax(400px,.72fr); gap:2rem; padding:3rem 2.5rem; }
  .sign-in-copy h1 { font-size:clamp(3.5rem,7vw,5.2rem); }
}
@media(max-width:720px) {
  .sign-in { gap:1.75rem; padding:1.5rem 1rem 2.5rem; }
  .sign-in-copy { padding:.75rem .25rem 0; }
  .sign-in-copy h1 { font-size:clamp(3.25rem,15vw,5rem); line-height:.9; }
  .sign-in-copy>p:last-child { margin-top:1.25rem; }
  .sign-in-card { width:100%; padding:1.5rem; }
  .sign-in-card h2 { margin-bottom:1.5rem; font-size:clamp(2rem,9vw,2.6rem); line-height:1.05; }
}
@media(max-height:520px) and (orientation:landscape) { .library-header,.portal-header { height:48px; }.sign-in { min-height:calc(100vh - 48px); padding:2rem; }.portal-sidebar { top:48px; height:calc(100vh - 64px); } }
@media(prefers-reduced-motion:reduce) { * { scroll-behavior:auto!important; transition-duration:.01ms!important; } }

/* Readable type floor for rehearsal conditions and smaller devices. */
body { font-size:17px; }
.library-header .header-actions,.portal-header nav,.library-brand,.portal-brand { font-size:.78rem; }
.hero-copy>p:last-child,.sign-in-copy>p:last-child { font-size:1.08rem; }
.instrument-button b,.score-search input,.sort-select select,.signup-top>span,.event-meta,.rehearsal-info b,.profile b { font-size:.82rem; }
.instrument-button small,.results-meta,.score-card .instrument,.file-meta,.preview-button,.download-button,.portal-nav button,.portal-nav a,.notice p,.rehearsal-info span,.rehearsal-heading>span,.panel-heading p,.card-heading p,.metric small,.recommendation p,.recommendation li,.research-note,.register-row,.section-attendance-row { font-size:.74rem; }
.score-card h3 { font-size:1.2rem; }.group-title span,.event-chip,.today-chip,.status,.event-status,.changed-pill,.self-status,.final-control button { font-size:.68rem; }
.piascore-note p,.committee-card small,.viewer-foot,.viewer-head span,.sign-in-card small,.member-notices p,.member-notices small,.danger-member small,.decision-note { font-size:.7rem; }
.sign-in-card label,.broadcast-fields label,.pulse-card>label,.register-toolbar label { font-size:.75rem; }
.sign-in-card select,.broadcast-fields input,.broadcast-fields select,.pulse-card select,.pulse-card textarea,.broadcast-fields textarea { font-size:.9rem; }
.metric>span,.coverage-row.header,.section-attendance-row.header,.register-row.header { font-size:.7rem; }.coverage-row { font-size:.8rem; }.card-heading>span { font-size:.72rem; }
.pulse-response-row { font-size:.78rem; }.pulse-response-row.header,.pulse-member small,.pulse-response-row time,.pulse-response-row em { font-size:.7rem; }

/* Rehearsal runway: show exact figures instead of requiring bar-height estimates. */
.trend-chart {
  height:auto;
  min-height:330px;
  display:grid;
  grid-template-columns:repeat(7,minmax(100px,1fr));
  align-items:end;
  gap:clamp(.65rem,1.5vw,1.2rem);
  overflow-x:auto;
  padding:2rem .25rem .75rem;
  scrollbar-gutter:stable;
}
.trend-controls { display:flex; flex-direction:column; align-items:flex-end; gap:.45rem; min-width:180px; }
.trend-controls label { display:flex; align-items:center; gap:.55rem; color:#657384; font-size:.74rem; font-weight:700; }
.trend-controls select { min-height:40px; max-width:220px; padding:.55rem 2rem .55rem .7rem; border:1px solid #d9dee5; border-radius:10px; background:#fff; color:#253142; font-size:.78rem; }
.trend-controls>span { color:#8591a0; font-size:.72rem; }
.trend-scope-summary { margin:1rem 0 0; color:#657384; font-size:.8rem; line-height:1.45; }
.trend-scope-summary b { color:#253142; text-transform:capitalize; }
.trend-scope-summary strong { color:#5741c9; font-size:1rem; font-variant-numeric:tabular-nums; }
.trend-column {
  min-width:100px;
  height:285px;
  display:grid;
  grid-template-rows:minmax(110px,1fr) auto auto;
  align-items:end;
  gap:.55rem;
}
.trend-bars { width:100%; height:100%; min-height:110px; }
.trend-bar { width:clamp(10px,1.1vw,14px); }
.trend-column time {
  display:block;
  color:#59697a;
  font-size:.78rem;
  font-weight:750;
  line-height:1.25;
  text-align:center;
  white-space:nowrap;
}
.trend-figures { display:grid; gap:.28rem; width:100%; }
.trend-figure {
  display:grid;
  grid-template-columns:7px minmax(0,1fr) auto;
  align-items:center;
  gap:.35rem;
  min-height:25px;
  padding:.28rem .38rem;
  border-radius:8px;
  background:#f5f5f7;
  color:#657384;
  font-size:.7rem;
  line-height:1.2;
}
.trend-figure>i { width:7px; height:7px; border-radius:50%; background:#7657ff; }
.trend-column:has(.trend-bar.planned) .trend-figure.primary>i { background:#32ade6; }
.trend-figure.pending>i { background:#cfd5dc; }
.trend-figure.no>i { background:#ff6457; }
.trend-figure b { color:#1f2c3b; font-size:.78rem; font-variant-numeric:tabular-nums; }
.chart-legend .no { background:#ff6457; }
@media(max-width:760px) {
  .trend-card .card-heading { align-items:flex-start; flex-direction:column; }
  .trend-controls { width:100%; align-items:flex-start; }
  .trend-controls label { width:100%; justify-content:space-between; }
  .trend-controls select { flex:1; max-width:none; }
  .trend-chart { grid-template-columns:repeat(7,112px); min-height:350px; padding-top:1.25rem; }
  .trend-column { min-width:112px; height:305px; }
  .trend-figure { font-size:.72rem; }
}

/* Coverage figures stay physically grouped with the event they describe. */
.coverage-row { grid-template-columns:minmax(120px,1fr) minmax(190px,1.35fr) minmax(190px,1.35fr); gap:1.2rem; }
.coverage-row.header span:not(:first-child) { text-align:center; }
.coverage-event-cell { display:grid; grid-template-columns:minmax(70px,1fr) minmax(68px,auto); align-items:center; gap:.75rem; }
.coverage-figures { min-width:68px; display:flex; flex-direction:column; align-items:flex-start; line-height:1.1; }
.coverage-figures strong { color:#253142; font-size:1rem; line-height:1; }
.coverage-figures span { margin-top:.22rem; color:#7a8795; font-size:.64rem; white-space:normal; }
.coverage-figures em { margin-top:.24rem; color:#a5651f; font-size:.62rem; font-style:normal; font-weight:750; white-space:normal; }
@media(max-width:720px){.coverage-table{overflow-x:auto}.coverage-row{min-width:540px;grid-template-columns:105px 1fr 1fr;gap:.8rem}.coverage-event-cell{grid-template-columns:minmax(62px,1fr) 68px;gap:.55rem}}
@media(max-width:640px){body{font-size:16px}.library-header .header-actions,.portal-header nav{font-size:.74rem}.hero-copy>p:last-child,.sign-in-copy>p:last-child{font-size:1rem}}

/* Responsive safety: readable labels, usable touch targets and non-blocking navigation. */
.portal-sidebar { overflow-y:auto; overscroll-behavior:contain; }
.sidebar-note { position:static; margin-top:1rem; }
.portal-nav button,.portal-nav a,.primary-action,.sign-in-card button,.lock-register,.export-button,.ticket-filters button,.ticket-actions button,.ticket-actions select,.filter-drawer-button,.event-chip,.preview-button,.download-button { min-height:44px; }
.mini-response button { width:44px; height:44px; }
.ticket-top { flex-wrap:wrap; }
.ticket-id,.ticket-kind,.priority,.application-details span,.ticket-metrics span,.ticket-actions select,.ticket-actions button,.ticket-actions textarea,.approved-strength span,.approved-strength p,.ticket-body p,.ticket-device,.maintenance-control small,.maintenance-actions a { font-size:.72rem!important; line-height:1.4; }
.application-details b { font-size:.78rem; line-height:1.4; }
.ticket-actions textarea { padding:.75rem; }
.danger-member>i,.danger-member small,.register-summary span,.register-explainer p,.register-explainer span,.self-status,.final-control button,.section-attendance-row,.section-attendance-row.header,.register-row,.register-row.header,.register-member>span { font-size:.7rem; }
.rating button small,.trend-column small,.chart-legend,.delivery-path b,.delivery-path small,.chat-date,.api-status b,.preview-top,.send-note,.device-capture span,.device-capture p,.bug-help>small { font-size:.7rem; line-height:1.4; }
.toggle-row { min-height:44px; font-size:.75rem; }
.dashboard-actions { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:.65rem; }
.attendance-sheet-link { display:inline-flex; align-items:center; justify-content:center; gap:.45rem; min-height:44px; padding:.72rem 1rem; border-radius:999px; background:#1677d2; color:#fff; font-size:.78rem; font-weight:750; line-height:1.25; text-align:center; box-shadow:0 8px 20px rgba(22,119,210,.18); }
.attendance-sheet-link:hover { background:#0d65b8; }
.attendance-sheet-link:focus-visible { outline:3px solid rgba(22,119,210,.35); outline-offset:3px; }
.live-sheet-sync { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin:1rem 0 1.25rem; padding:.85rem 1rem; border:1px solid #cfe5d9; border-radius:16px; background:#f2fbf6; }
.live-sheet-sync p { display:flex; align-items:center; gap:.65rem; margin:0; color:#315b44; font-size:.78rem; line-height:1.45; }
.live-sheet-sync p i { flex:0 0 auto; width:9px; height:9px; border-radius:50%; background:#26a269; box-shadow:0 0 0 5px rgba(38,162,105,.12); }
.live-sheet-sync[data-state="error"] { border-color:#f0d2a3; background:#fff8ec; }
.live-sheet-sync[data-state="error"] p { color:#79571d; }
.live-sheet-sync[data-state="error"] p i { background:#d89520; box-shadow:0 0 0 5px rgba(216,149,32,.12); }
.live-sheet-sync a { display:inline-flex; align-items:center; justify-content:center; gap:.4rem; min-height:44px; padding:.68rem .9rem; border-radius:999px; background:#1677d2; color:#fff; font-size:.76rem; font-weight:750; text-align:center; }
.live-sheet-sync a,.rehearsal-info b,.rehearsal-info span,.date-block span { font-size:.875rem; }
.live-response { display:flex; align-items:center; flex-wrap:wrap; gap:.35rem; }
.live-response span { display:inline-flex; align-items:center; justify-content:center; min-height:34px; padding:.42rem .65rem; border:1px solid rgba(255,255,255,.16); border-radius:999px; color:#aeb9c7; font-size:.875rem; font-weight:750; }
.live-response span.active.yes { border-color:#35ad7d; background:#35ad7d; color:#fff; }
.live-response span.active.no { border-color:#ff6457; background:#ff6457; color:#071426; }
.live-response span.active.tbc { border-color:#f5bc5b; background:#f5bc5b; color:#071426; }
.live-response span.active.pending { border-color:#778493; background:#778493; color:#fff; }
.live-response.compact span { min-width:44px; min-height:44px; padding:.45rem; border-color:var(--line); color:#7d8997; }
.live-response.compact span.active.yes { color:#fff; }
.live-response.compact span.active.no,.live-response.compact span.active.tbc { color:#071426; }
.committee-password-field input { width:100%; min-height:46px; padding:.8rem .9rem; border:1px solid var(--line); border-radius:12px; background:#fff; color:var(--ink); font-size:1rem; letter-spacing:.08em; outline:none; }
.committee-password-field input:focus { border-color:#1677d2; box-shadow:0 0 0 3px rgba(22,119,210,.14); }
.committee-password-field small { color:#8a5d16; font-size:.7rem; font-weight:600; letter-spacing:0; line-height:1.45; text-transform:none; }
.login-error { margin:.8rem 0 0; padding:.7rem .8rem; border-radius:10px; background:#fff0ee; color:#a93630; font-size:.78rem; line-height:1.4; }
.sign-in-card button:disabled { opacity:.65; cursor:wait; }
.security-desk-grid { display:grid; grid-template-columns:minmax(260px,.7fr) minmax(0,1.3fr); gap:1rem; align-items:start; }
.security-admin-card,.security-incident-card { padding:1.4rem; border-radius:20px; background:#fff; box-shadow:0 10px 30px rgba(31,35,48,.06); }
.security-admin-card>span,.security-incident-top span { color:#d8473f; font-size:.68rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.security-admin-card h3,.security-incident-card h3 { margin:.65rem 0; font-size:1.35rem; }
.security-admin-card>p,.security-incident-card>p { color:#6e7480; font-size:.78rem; line-height:1.55; }
.security-admin-card label { display:flex; flex-direction:column; gap:.45rem; margin-top:1rem; color:#6e7480; font-size:.72rem; font-weight:700; }
.security-admin-card input { min-height:46px; padding:.8rem; border:1px solid var(--line); border-radius:12px; font-size:1rem; }
.security-admin-error { padding:.7rem!important; border-radius:10px; background:#fff0ee; color:#a93630!important; }
.security-incident-list { display:grid; gap:1rem; }
.security-incident-card { border-left:4px solid #ff453a; }
.security-incident-top { display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.security-incident-top b { color:#636a75; font-size:.72rem; }
.security-incident-card dl { display:grid; grid-template-columns:1fr 1fr; gap:.75rem; margin:1rem 0; }
.security-incident-card dl div { padding:.75rem; border-radius:12px; background:#f5f5f7; }
.security-incident-card dt { color:#888e98; font-size:.64rem; font-weight:700; text-transform:uppercase; }
.security-incident-card dd { margin:.25rem 0 0; font-size:.8rem; font-weight:700; overflow-wrap:anywhere; }
.security-incident-card button { min-height:44px; padding:.7rem 1rem; border:0; border-radius:999px; background:#111827; color:#fff; cursor:pointer; font-weight:750; }

@media(max-width:900px) {
  .security-desk-grid { grid-template-columns:1fr; }
  .portal-app { display:block; padding:0; }
  .portal-sidebar { position:sticky; z-index:30; top:52px; height:auto; max-height:none; padding:.4rem; overflow-y:visible; border-radius:0; box-shadow:0 1px 0 var(--line); }
  .portal-sidebar .profile,.portal-sidebar .sidebar-note { display:none; }
  .portal-nav { display:flex; flex-direction:row; gap:.25rem; margin:0; overflow-x:auto; overscroll-behavior-x:contain; scrollbar-width:none; }
  .portal-nav::-webkit-scrollbar { display:none; }
  .portal-nav button,.portal-nav a { flex:0 0 auto; width:auto; min-width:44px; min-height:44px; padding:.65rem .75rem; white-space:nowrap; }
  .portal-main { border-radius:0; }
  .portal-panel { padding:2rem clamp(1rem,4vw,2rem); }
  .rehearsal-heading { scroll-margin-top:116px; }
}
@media(max-width:720px) {
  .portal-sidebar { top:48px; }
  .panel-heading h2 { font-size:clamp(2.2rem,11vw,3.4rem); }
  .dashboard-actions { width:100%; justify-content:flex-start; }
  .dashboard-actions .attendance-sheet-link,.dashboard-actions .export-button { flex:1 1 190px; }
  .live-sheet-sync { align-items:stretch; flex-direction:column; }
  .live-sheet-sync a { width:100%; }
  .rehearsal-heading { align-items:flex-start; flex-direction:column; gap:.5rem; }
  .rehearsal-row { grid-template-columns:82px minmax(0,1fr); }
  .date-block span,.rehearsal-info b,.rehearsal-info span { font-size:.875rem; }
  .rehearsal-row .live-response.compact { grid-column:1/-1; width:100%; justify-content:flex-start; flex-wrap:nowrap; }
  .rehearsal-row .live-response.compact span { flex:0 0 44px; }
  .ticket-filters { width:100%; overflow-x:auto; }
  .ticket-filters button { flex:1 0 auto; }
  .maintenance-actions { width:100%; flex-wrap:wrap; }
}
@media(max-width:420px) {
  .portal-header nav a:nth-of-type(2) { display:none; }
  .application-details { grid-template-columns:1fr; }
  .panel-heading h2 { overflow-wrap:anywhere; }
  .security-incident-card dl { grid-template-columns:1fr; }
}
@media(max-height:520px) and (orientation:landscape) {
  .portal-sidebar { height:auto; max-height:none; overflow-y:visible; }
  .portal-panel { padding-top:1.25rem; }
  .sign-in { min-height:auto; }
  .score-viewer { width:100vw; height:100svh; border-radius:0; }
}

/* White on amber does not meet comfortable reading contrast. */
.final-control button.active.excused { color:#2b1900; }

/* Bandsmen sign-in readability and polish must survive all shared type rules. */
.portal-header .portal-brand,.portal-header nav { font-size:14px; }
.sign-in-copy>p:first-child { font-size:16px; }
.sign-in-copy>p:last-child { font-size:17px; }
.tenancy-card .step-label { font-size:14px; }
.tenancy-card label { font-size:15px; }
.tenancy-card input,.tenancy-card select { font-size:16px; }
.tenancy-card label small,.tenancy-card>small { font-size:14px; }
.tenancy-card button { font-size:16px; }
