/* Modern platform components: one owner for common elements across all app modules. */
/* Chrome/Android standalone PWA: suppress browser pull-to-refresh without cancelling touch scrolling.
   Applied on both root scrollers to cover html-scroll and body-scroll layouts. */
html,body{overscroll-behavior-y:none}
*,*::before,*::after{box-sizing:border-box}
html{min-height:100%;font-size:var(--fs);scroll-behavior:smooth;direction:rtl}
body{margin:0;min-height:100vh;padding-bottom:86px;color:var(--ui-ink);font-size:var(--fs);font-family:system-ui,"Segoe UI",Tahoma,Arial,sans-serif;line-height:1.6;overflow-x:hidden;background:radial-gradient(ellipse 72% 420px at 88% -170px,rgba(22,152,103,.095),transparent 78%),radial-gradient(ellipse 65% 390px at 5% 5%,rgba(194,146,66,.065),transparent 70%),var(--ui-canvas)}
[hidden],.hidden{display:none!important}
img,svg{max-width:100%}
button,input,select,textarea{font:inherit;box-sizing:border-box;max-width:100%}
button{cursor:pointer;touch-action:manipulation}
button:disabled,[aria-disabled="true"]{opacity:.55;cursor:not-allowed}
:where(button,input,select,textarea,[tabindex],a):focus-visible{outline:3px solid color-mix(in srgb,var(--ui-primary) 40%,transparent);outline-offset:3px;box-shadow:var(--ui-focus)}
::selection{background:color-mix(in srgb,var(--ui-primary) 26%,transparent);color:var(--ui-ink)}
.hdr,body.v11-ready .hdr{position:sticky;top:0;z-index:100;min-height:var(--ui-top-height);padding:11px clamp(13px,2.1vw,27px)!important;background:linear-gradient(110deg,#0a3934,#0c4b41)!important;border-bottom:1px solid rgba(250,224,174,.18)!important;color:#fff;box-shadow:0 9px 30px rgba(9,48,45,.16)!important;backdrop-filter:blur(20px) saturate(1.3);-webkit-backdrop-filter:blur(20px) saturate(1.3)}
.hdr-top{max-width:1480px;margin-inline:auto;display:flex;align-items:center;justify-content:space-between;gap:14px}
.v11-brand{display:flex;align-items:center;gap:12px;min-width:0}.v11-brand-copy{min-width:0}
.v11-brand-logo{width:46px;height:46px;flex:none;object-fit:cover;border-radius:15px;box-shadow:0 6px 18px rgba(12,88,53,.15);border:1px solid color-mix(in srgb,var(--ui-gold) 30%,var(--ui-line))}
.hdr-title,body.v11-ready .hdr-title{font-size:clamp(14px,1.4vw,18px);font-weight:850;line-height:1.4;color:#fff!important;letter-spacing:-.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:340px}
.hdr-sub,body.v11-ready .hdr-sub{font-size:11px!important;color:#d4e9de!important;font-weight:600;opacity:1;margin-top:2px}
.hdr-actions{display:flex;align-items:center;gap:7px;flex-shrink:0}
.hdr-btn,.back-btn,body.v11-ready .hdr-btn,body.v11-ready .back-btn{width:43px;height:43px;min-width:43px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--ui-line)!important;border-radius:14px!important;background:rgba(255,255,255,.1)!important;color:#fff!important;box-shadow:none!important;padding:0 9px!important;transition:background var(--ui-ease),border-color var(--ui-ease),transform var(--ui-ease)}
.back-btn{width:auto;display:none;gap:5px;padding-inline:12px!important}
.hdr-btn:hover,.back-btn:hover{background:rgba(255,255,255,.22)!important;border-color:rgba(255,255,255,.5)!important;transform:translateY(-1px)}
.hdr-btn svg{width:20px;height:20px;stroke:currentColor;stroke-width:1.85;fill:none}
.nav{position:sticky;top:var(--ui-top-height);z-index:99;display:flex;gap:5px;padding:7px 10px;border-bottom:1px solid var(--ui-line);background:var(--ui-surface)}
.nav-t{flex:1;min-height:48px;display:flex;align-items:center;justify-content:center;gap:7px;padding:9px 10px;border-radius:12px;border:1px solid transparent;color:var(--ui-muted);font-size:12px;font-weight:650;text-align:center;cursor:pointer;transition:background var(--ui-ease),color var(--ui-ease)}
.nav-t .ni{font-size:17px;display:inline-flex}.nav-t:hover{background:var(--ui-soft)}.nav-t.on{background:var(--ui-soft);color:var(--ui-primary);font-weight:850;border-color:color-mix(in srgb,var(--ui-primary) 13%,transparent)}
.pg{display:none;width:min(100%,1500px);margin-inline:auto;min-height:calc(100vh - 150px);padding:clamp(14px,2vw,28px) clamp(12px,2.4vw,30px) 110px}
.pg.on{display:block;animation:imam-page-in .24s ease both}
@keyframes imam-page-in{from{opacity:.65;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
.card,.sc,.stc,.v9-section,.v10-library-card,.v10-accordion{border:1px solid var(--ui-line);background:var(--ui-surface);border-radius:var(--ui-radius);box-shadow:0 12px 32px rgba(11,54,45,.07);margin-bottom:16px}
.card{padding:clamp(15px,1.75vw,23px)}
.ch{font-size:14px;font-weight:850;color:var(--ui-ink);margin-bottom:13px;display:flex;align-items:center;gap:8px}
.sg{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.sc{padding:18px;text-align:right;min-width:0;position:relative;overflow:hidden}
.sc::before{content:"";position:absolute;top:14px;right:0;width:3px;height:36px;border-radius:4px;background:var(--ui-primary)}
.sn{font-size:clamp(24px,2.8vw,36px);font-weight:900;color:var(--ui-primary);letter-spacing:-1px;line-height:1.35}
.sl{font-size:12px;color:var(--ui-muted);margin-top:6px;font-weight:600}
.stc{display:flex;gap:13px;align-items:center;padding:13px 16px;cursor:pointer;border-right:3px solid var(--ui-primary);transition:transform var(--ui-ease),border-color var(--ui-ease)}
.stc:hover{transform:translateY(-2px);border-color:var(--ui-primary)}
.btn,.v92-start,.v9-start-session{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;border-radius:var(--ui-radius-sm);min-height:46px;padding:10px 17px;font-size:13px;font-weight:800;text-align:center;line-height:1.5;transition:filter var(--ui-ease),transform var(--ui-ease),background var(--ui-ease),box-shadow var(--ui-ease)}
.btn{width:100%}.btn-sm,.btn-xs{width:auto;min-height:36px;padding:7px 12px;font-size:12px}
.btn-g,.v92-start,.v9-start-session{background:var(--ui-primary);color:#fff;box-shadow:0 7px 16px rgba(8,87,56,.14)}
.btn-out{border-color:var(--ui-line);background:var(--ui-surface);color:var(--ui-primary)}
.btn-red{background:var(--ui-danger);color:#fff}.btn-gold{background:var(--ui-gold);color:#28200e}.btn-wa{background:#208653;color:#fff}
.btn:not(:disabled):hover,.v92-start:hover,.v9-start-session:hover{filter:brightness(1.05);transform:translateY(-1px)}
.fld{margin-bottom:14px}.fld label{display:block;font-size:12px;color:var(--ui-muted);font-weight:750;margin-bottom:6px}
.fld input,.fld select,.fld textarea,input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),select,textarea{color:var(--ui-ink);background:var(--ui-surface);border:1px solid var(--ui-line);border-radius:12px;min-height:43px;padding:10px 12px;font-size:14px;direction:rtl}
.fld input,.fld select,.fld textarea{width:100%}
.fld textarea,textarea{min-height:78px;resize:vertical}
.fld input:focus,.fld select:focus,.fld textarea:focus{border-color:var(--ui-primary);box-shadow:var(--ui-focus)}
.mo-box{border:1px solid var(--ui-line);border-radius:24px;background:var(--ui-surface);box-shadow:var(--ui-shadow-high);max-width:min(96vw,780px)}

/* beta.27 student modal layout hotfix: restore the dedicated scroll boundary.
   Only the student editor is scoped: other modals and session UI stay untouched. */
#stModal > .mo-box{
  box-sizing:border-box;
  width:100%;
  max-height:88vh;
  max-height:88dvh;
  overflow-y:auto;
  overscroll-behavior-y:contain;
  -webkit-overflow-scrolling:touch;
  padding:20px 16px 32px;
}
@media (max-width:899px){
  #stModal > .mo-box{
    max-height:92vh;
    max-height:92dvh;
    border-radius:20px 20px 0 0;
    padding:16px 14px calc(16px + env(safe-area-inset-bottom));
  }
}

/* beta.27 More navigation sheet: bound its own scroll container, not any
   lesson/editor panel. Long grids must remain reachable on small phones. */
#v9MoreSheet > .mo-box{
  width:100%;
  max-height:88vh;
  max-height:88dvh;
  min-height:0;
  overflow-y:auto;
  overscroll-behavior-y:contain;
  -webkit-overflow-scrolling:touch;
}
@media (max-width:799px){
  #v9MoreSheet > .mo-box{
    max-height:92vh;
    max-height:92dvh;
  }
}

/* Canonical toast geometry. Legacy edition stylesheets no longer load, so
   notifications must never participate in the document flow. */
.toast{position:fixed;inset-inline:16px;bottom:calc(86px + env(safe-area-inset-bottom));
  width:max-content;max-width:min(420px,calc(100vw - 32px));margin-inline:auto;
  z-index:1500;display:none;padding:11px 17px;border-radius:14px;
  background:#183b30;color:#fff;text-align:center;line-height:1.55;
  font-size:13px;box-shadow:var(--ui-shadow-high);overflow-wrap:anywhere;
  pointer-events:none}
.toast.show{display:block}
.toast.t-success{background:#236946}.toast.t-error{background:#a43332}
.toast.t-info{background:#173e69}.toast.t-gold{background:#75530b}
@media(max-width:799px){.toast{bottom:calc(90px + env(safe-area-inset-bottom));font-size:12px}}

.v9-nav{position:fixed;z-index:850;display:none;background:linear-gradient(115deg,#0d3936,#123e39);border:1px solid rgba(255,255,255,.14);box-shadow:0 16px 38px rgba(6,51,47,.24);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)}
body.v9-shell-ready .v9-nav{display:flex}
.v9-nav-btn{border:0;background:transparent;color:rgba(255,255,255,.8);display:flex;align-items:center;justify-content:center;gap:5px;cursor:pointer;font-size:12px;font-weight:750;position:relative;transition:background var(--ui-ease),color var(--ui-ease)}
.v9-nav-btn svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.v9-nav-label{font-size:10px;line-height:1.3}.v9-nav-btn.on:not(.session-primary){background:rgba(255,255,255,.16);color:#f5d390}
.v9-nav-btn.session-primary{background:linear-gradient(140deg,#f5d997,#d9ac57);color:#153b33;border:1px solid rgba(255,255,255,.35);box-shadow:0 8px 20px rgba(0,0,0,.23)}
.v9-nav-btn.session-primary.on{color:#153b33}
.v92-primary-card{border-radius:26px;border:1px solid color-mix(in srgb,var(--ui-gold) 40%,var(--ui-primary));background:radial-gradient(ellipse 50% 90% at 3% 8%,rgba(248,210,138,.16),transparent 90%),linear-gradient(124deg,#0a4242 0%,#0b5950 66%,#08775e 100%);color:#fff;box-shadow:0 19px 46px rgba(7,63,47,.16);padding:clamp(18px,2.1vw,29px);position:relative;overflow:hidden}
.v92-primary-card h1{color:#fff}.v92-primary-card p{color:rgba(255,255,255,.8)}.v92-primary-card .v92-kicker{color:#f3d496}
.v92-primary-card .v92-start{background:#f3c777;color:#273827;box-shadow:0 9px 20px rgba(0,0,0,.13);font-weight:900}
.v92-stats>div,.v92-actions button,.v9-section,.v9-recent-student,.v10-library-card{background:var(--ui-surface);border:1px solid var(--ui-line);border-radius:17px;box-shadow:0 7px 23px rgba(10,63,43,.037)}
.v92-actions button,.v9-recent-student,.v9-quick,.portal-quick-nav button{transition:transform var(--ui-ease),box-shadow var(--ui-ease)}
.v92-actions button:hover,.v9-recent-student:hover,.v9-quick:hover{transform:translateY(-2px);box-shadow:var(--ui-shadow)}
.v9-hero{background:linear-gradient(115deg,#073c33,#0d6b49 86%);border-radius:26px;box-shadow:0 18px 45px rgba(8,73,51,.17)}
.v9-section{padding:16px}.v9-summary-item{border-radius:15px;border:1px solid var(--ui-line);background:var(--ui-soft)}
.v9-quick{border-radius:15px}
.v11-connectivity{border-radius:999px;background:var(--ui-soft);border-color:var(--ui-line);color:var(--ui-muted)}
/* Conserve Quran text flow and diacritics: never apply global letter-spacing or text-transform to recitation surfaces. */
:is(.ayah-text,.quran-text,.ib-quran-text,.portal-correction-verse-text,[data-quran-ayah]){font-kerning:normal;letter-spacing:normal;word-break:normal}
@media print{.v9-nav,.nav,.hdr-actions,#install-banner,#update-banner{display:none!important}.pg{width:100%;padding:0!important;animation:none}body{padding:0!important;background:#fff!important;color:#000}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.pg.on{animation:none}.btn,.v9-nav-btn,.v92-actions button,.stc{transition:none}}
/* Original horizontal navigation is a no-script fallback only when premium navigation is unavailable. */
body.v9-shell-ready #mainNav{display:none!important}
/* No surprises on the production data side: purely presentational shell. */
/* Signature learning workspace hero: single documented owner (not an edition override). */
.v92-primary-card::after{content:"";position:absolute;inset:auto auto -145px -80px;width:340px;height:340px;border-radius:50%;border:42px solid rgba(231,198,126,.13);pointer-events:none}
.v92-primary-card>div,.v92-primary-card>.v92-start{position:relative;z-index:1}
.v92-primary-card.overdue{border-color:var(--ui-gold);box-shadow:0 16px 42px rgba(137,83,22,.20)}
:root[data-theme="dark"] .btn-g,:root[data-theme="dark"] .v9-start-session{background:#166045;color:#fff}
:root[data-theme="dark"] .v92-primary-card{background:linear-gradient(125deg,#082c25,#134e3a)}

/* Workspace page anatomy: shared semantic headings across existing pages, without affecting Quran text. */
.ui-workspace-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:clamp(18px,2.3vw,30px);margin-block:0 19px;border:1px solid var(--ui-line);border-radius:22px;background:linear-gradient(126deg,var(--ui-surface),var(--ui-soft));box-shadow:var(--ui-shadow)}
.ui-workspace-kicker{font-size:12px;font-weight:750;color:var(--ui-primary)}
.ui-workspace-heading h1{font-size:clamp(23px,2.6vw,34px);line-height:1.35;margin:6px 0;color:var(--ui-ink);font-weight:900;letter-spacing:-.4px}
.ui-workspace-heading p{margin:0;color:var(--ui-muted);font-size:14px;line-height:1.8;max-width:650px}
.ui-workspace-assist{flex-shrink:0;display:block;font-size:12px;color:var(--ui-muted);max-width:210px;text-align:center;border:1px solid var(--ui-line);padding:9px;border-radius:12px}
.ui-network-note{max-width:1440px;margin:8px auto;padding:11px 18px;background:var(--ui-gold-soft);color:var(--ui-ink);border-inline-start:4px solid var(--ui-gold);border-radius:10px;font-weight:800}
.ui-session-section-nav{display:flex;align-items:center;gap:8px;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;padding:3px 1px 13px;margin-bottom:8px;max-width:100%}
.ui-session-section-link{flex:none;white-space:nowrap;min-height:44px;padding:9px 15px;border:1px solid var(--ui-line);border-radius:999px;background:var(--ui-surface);color:var(--ui-ink);font-size:13px;font-weight:750}
.ui-session-section-link:hover,.ui-session-section-link:focus-visible{border-color:var(--ui-primary);background:var(--ui-soft)}
#pg-session.on{padding-bottom:220px}
#pg-session .card{scroll-margin-top:85px}
#pg-session .status-btns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
#pg-session .status-btns .st-btn{min-height:48px;min-width:0}
#pg-session .error-chip-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
#pg-session .error-chip-grid button{min-height:46px;white-space:normal;line-height:1.4}
#pg-session .direction-btn{min-height:44px;min-width:44px}
#pg-session .session-errors-card{border-inline-start:4px solid var(--ui-info)}
#pg-session .fld>label{color:var(--ui-ink);font-weight:750;font-size:13px}
#pg-session :is(input,select,textarea):focus-visible{outline:3px solid var(--ui-focus-color,rgba(16,133,90,.4));outline-offset:2px}
.ui-session-action-dock{position:fixed;z-index:740;inset-inline-start:clamp(105px,8vw,150px);inset-inline-end:18px;bottom:14px;max-width:1100px;margin-inline:auto;display:flex;align-items:center;gap:20px;padding:12px 16px;background:color-mix(in srgb,var(--ui-surface) 94%,transparent);color:var(--ui-ink);border:1px solid var(--ui-line);border-radius:21px;box-shadow:0 12px 42px rgba(9,38,30,.19);backdrop-filter:blur(18px)}
body:not(.ui-session-active) .ui-session-action-dock{display:none}
.ui-session-action-caption{flex:1;min-width:130px;display:grid;gap:2px}
.ui-session-action-caption b{font-size:13px}
.ui-session-action-state{color:var(--ui-muted);font-size:12px;line-height:1.4;max-width:250px;overflow-wrap:anywhere}
.ui-session-action-buttons{display:flex;gap:9px;flex:2;align-items:center}
.ui-session-action-buttons .btn{min-height:50px;margin:0;flex:1;white-space:normal}
.ui-session-action-buttons .ui-save-secondary{flex:.85}
:root[data-theme="dark"] .ui-workspace-heading{background:linear-gradient(120deg,var(--ui-raised),var(--ui-soft))}
@media print{.ui-session-action-dock,.ui-session-section-nav,.ui-network-note{display:none}}

/* Internal workspace refresh. Existing controls stay inside their current module/permission boundaries. */
#pg-students .stc,#pg-tasks .stc,#pg-followup .stc{border-radius:18px;border:1px solid var(--ui-line);border-inline-start:4px solid var(--ui-primary);min-height:75px;box-shadow:var(--ui-shadow);background:var(--ui-surface)}
#pg-students .stc:focus-within,#pg-tasks .stc:focus-within{border-color:var(--ui-primary)}
#pg-reports .card,#pg-settings .card,#pg-checkin .card,#pg-profile .card,#pg-compare .card{box-shadow:var(--ui-shadow);border:1px solid var(--ui-line);border-radius:19px}
#pg-reports .ch,#pg-settings .ch,#pg-checkin .ch,#pg-profile .ch,#pg-compare .ch{font-size:15px;line-height:1.5;min-height:28px}
#pg-students .ch,#pg-session .ch{font-size:15px}
.pg :is(.frow,.voice-row,.fb){min-width:0;gap:9px}
.pg :is(input[type="date"],input[type="number"],input[type="search"],select){min-width:0}
.pg :is(.table-wrap,.table-scroll,.report-table-wrap,.finance-table,.comp-tbl){max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}
.pg :is(.table-wrap,.table-scroll,.report-table-wrap) table{min-width:540px}
.pg :is(.sec-div){font-weight:850;font-size:15px;color:var(--ui-primary);padding-block:12px;margin-block:12px;line-height:1.7}
.pg :is(.empty-state,.empty-msg,.no-data){line-height:1.8;color:var(--ui-muted)}
#pg-session .note-templates{display:flex;flex-wrap:wrap;gap:8px}
#pg-session .note-templates button{min-height:44px;border-radius:12px;padding-inline:12px}
#pg-session #sesNotes{min-height:98px;line-height:1.85}
#pg-session .direction-picker{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
#pg-session .direction-picker small{line-height:1.5}
#pg-session :is(.status-btns,.error-chip-grid,.note-templates) button:focus-visible{outline:3px solid color-mix(in srgb,var(--ui-primary) 45%,transparent);outline-offset:2px}
@media(max-width:550px){
 .pg :is(.frow,.voice-row)>*{min-width:0}
 #pg-students .stc{min-height:76px}
 #pg-session .note-templates button{flex:1 1 135px}
 #pg-session .direction-picker small{flex:1 1 100%}
}

#pg-settings .ui-important-settings{border-inline-start:5px solid var(--ui-primary);background:var(--ui-soft)}
#pg-settings .ui-important-settings .ch{font-size:17px;color:var(--ui-primary)}

/* === Unified application workspaces — canonical components, not edition overrides. ===
   Screen ownership stays with each feature module; this contract only handles
   legibility, rhythm, controls, overflow and hierarchy for every existing tab. */
:root{
 --ui-space-1:4px;--ui-space-2:8px;--ui-space-3:12px;--ui-space-4:16px;
 --ui-space-5:20px;--ui-space-6:24px;--ui-space-8:32px;
 --ui-control-height:44px;--ui-page-width:1280px;
 --ui-border-strong:color-mix(in srgb,var(--ui-primary) 34%,var(--ui-line));
}
body{font-size:15px;line-height:1.75;background:var(--ui-canvas)}
.pg.on{max-width:var(--ui-page-width);margin-inline:auto;scroll-margin-top:95px;overflow:visible}
.pg.on>*{min-width:0}
.pg :is(.card,.v9-section,.v10-card,.cm-panel,.aa-card,.analytics-card,.finance-card,.goal-card,.stc){
 border-color:var(--ui-line);background-color:var(--ui-surface);color:var(--ui-ink);
 box-shadow:0 5px 26px rgba(8,49,38,.045);
}
.pg .card{border-radius:16px;padding:clamp(13px,1.6vw,20px);margin-block-end:14px}
.pg .card .ch{font-size:17px;line-height:1.5;font-weight:800;color:var(--ui-ink);margin-block-end:12px}
.pg :is(.fld,.form-field){min-width:0;margin-block-end:12px}
.pg :is(.fld>label,.form-field>label){display:block;color:var(--ui-ink);font-size:13px;font-weight:750;line-height:1.6;margin-block-end:6px}
.pg :is(input:not([type="checkbox"]):not([type="radio"]),select,textarea){
 border:1px solid var(--ui-border-strong);min-height:var(--ui-control-height);
 background-color:var(--ui-surface);color:var(--ui-ink);border-radius:11px;
 padding-block:8px;max-width:100%;font-size:clamp(14px,1vw,16px);
}
.pg textarea{line-height:1.8;resize:vertical}
.pg :is(button,.btn,[role="button"]){scroll-margin-block:110px;touch-action:manipulation}
.pg :is(.btn,.quick-action,.session-btn,.tab-btn){min-height:var(--ui-control-height);border-radius:11px;font-size:14px;font-weight:750}
.pg .btn-g{background:var(--ui-primary);color:#fff;border-color:var(--ui-primary)}
.pg :is(button,input,select,textarea,a):focus-visible{outline:3px solid color-mix(in srgb,var(--ui-primary) 45%,transparent);outline-offset:2px}
.pg :is(.frow,.fb,.flex-row,.form-row){gap:10px;flex-wrap:wrap}
.pg :is(.frow,.fb,.flex-row,.form-row)>*{min-width:0}
.pg :is(.sg,.insight-grid,.goal-grid,.role-home-actions)>*{min-width:0}
.pg :is(.sn,.stat-value,.metric-value){font-variant-numeric:tabular-nums}
.pg :is(.sl,.stat-label,.metric-label){font-size:13px;color:var(--ui-muted);line-height:1.55}
.pg :is(.badge,.chip,.tag){max-width:100%;overflow-wrap:anywhere}
.pg :is(table,.comp-tbl,.finance-table){border-collapse:separate;border-spacing:0;width:100%}
.pg :is(th,td){vertical-align:middle;line-height:1.65;padding:11px 12px}
.pg :is(th){background:var(--ui-soft);color:var(--ui-primary);font-weight:800}
.pg :is(tr):focus-within{background:color-mix(in srgb,var(--ui-soft) 52%,transparent)}
.pg :is(.table-wrap,.table-scroll,.v10-table,.report-table-wrap,.finance-table,.comp-tbl){max-width:100%;overflow:auto;overscroll-behavior-inline:contain}
.pg :is(.card,.table-wrap,.v10-card) :is(img,svg,canvas){max-width:100%}
.pg :is(.sec-div,.section-heading){font-size:16px;line-height:1.65;color:var(--ui-primary);margin-block:13px}
.pg :is(.empty,.empty-state,.no-results,.no-data){color:var(--ui-muted);line-height:1.8}
.pg :is(.mo-box,.modal-content){max-width:min(680px,calc(100vw - 24px));max-height:min(88vh,760px);overflow:auto}
.pg :is(.status-btns,.note-templates,.cm-tabs,.academic-exam-tabs,.pc-tabs){gap:8px;min-width:0}
.pg :is(.status-btns,.note-templates,.cm-tabs,.academic-exam-tabs,.pc-tabs)>button{min-height:42px;min-width:0;white-space:normal}
/* One compact contextual heading in each tab. Keep all original controls and IDs. */
.ui-workspace-heading{padding:16px 20px;border:1px solid var(--ui-line);background:linear-gradient(105deg,var(--ui-surface),var(--ui-soft));border-radius:17px;margin-block:4px 15px;box-shadow:none}
.ui-workspace-heading h1{font-size:clamp(20px,2vw,24px);line-height:1.4;color:var(--ui-primary-deep)}
.ui-workspace-heading p{font-size:13px;color:var(--ui-muted);line-height:1.7}
.ui-workspace-kicker{font-size:12px;color:var(--ui-muted)}
.ui-session-section-nav{display:flex;align-items:center;gap:7px;max-width:100%;overflow-x:auto;padding:5px 0 10px;scrollbar-width:thin;overscroll-behavior-inline:contain}
.ui-session-section-link{flex:none;min-height:40px;padding:8px 13px;border-radius:11px;font-size:13px;background:var(--ui-surface);color:var(--ui-ink);border:1px solid var(--ui-line)}
.ui-session-section-link:hover{background:var(--ui-soft);border-color:var(--ui-primary)}
/* The official session save buttons are only moved, never cloned. */
.ui-session-action-dock{border:1px solid var(--ui-border-strong);box-shadow:0 10px 35px rgba(8,53,37,.16)}
.ui-session-action-buttons .ui-save-primary{background:var(--ui-primary);color:#fff}
.ui-session-action-state{font-size:13px;line-height:1.5}
/* Common feature tab rhythm: students, attendance, session, reports, analytics, settings,
   tasks, followup, compare, placements, circle and exams, Quran and teacher board. */
#pg-students :is(.v9-student-card,.stc),#pg-checkin .ci-row,#pg-tasks .task-row,#pg-followup .followup-row{border-radius:13px;min-height:66px}
#pg-reports :is(.report-filter,.report-summary),#pg-analytics :is(.analysis-filter,.insight-item),#pg-compare :is(.compare-controls,.card){min-width:0}
#pg-settings :is(.card,.settings-group){max-width:100%}
#pg-mushaf .quran-text,#pg-session .quran-text,#pg-session .quran-verse-content{line-height:2.3;letter-spacing:0}
#pg-session .note-templates button{font-size:13px;min-height:44px}
#pg-session #sesNotes{min-height:108px;font-size:16px}
#pg-circle-manager .cm-header,#pg-academic-exams .ae-header{border-radius:16px;padding:14px 18px;background:var(--ui-soft);border:1px solid var(--ui-line)}
#pg-circle-manager :is(.cm-tabs,.cm-toolbar),#pg-academic-exams :is(.ae-tabs,.ae-toolbar){max-width:100%;overflow-x:auto}
/* Content modals and dynamic feature panels need safe scroll boundaries. */
:is(.mo-box,.role-report-card,.imam-board-panel,.supervision-modal,.academy-analytics-panel){max-width:calc(100vw - 20px)}
:is(.mo-box,.role-report-card,.imam-board-panel) :is(input,select,textarea){font-size:16px}
/* Prevent floating application controls from obscuring focused form fields. */
:where(.pg,.mo-box) :is(input,textarea,select,button,[tabindex]){scroll-margin-block-end:180px}
:root[data-theme="dark"] .pg .btn-g{color:#082719;background:var(--ui-primary)}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.pg *, .pg *::before, .pg *::after{animation-duration:.01ms;transition-duration:.01ms}}
/* Search in mobile More: querying only rendered, permission-scoped actions. */
.imam-more-search{display:block;width:calc(100% - 24px);height:45px;margin:9px 12px;padding:8px 14px;border-radius:12px;background:var(--ui-surface);color:var(--ui-ink);border:1px solid var(--ui-border-strong);font-size:16px}
.v9-more-grid .v9-more-item[hidden]{display:none!important}
#pg-students .st-add-inline{position:static;display:inline-flex;align-items:center;justify-content:center;min-height:44px;margin-block:8px 12px}

/* beta.27: visible, accessible edit action in the student list. */
.v9-edit-student-link{display:inline-flex;align-items:center;justify-content:center;min-height:36px;border:1px solid var(--ui-primary,#246b4f);border-radius:11px;background:transparent;color:var(--ui-primary,#246b4f);font-size:12px;font-weight:750;padding:6px 10px;cursor:pointer;white-space:nowrap;touch-action:manipulation}
.v9-edit-student-link:focus-visible{outline:3px solid var(--ui-primary,#246b4f);outline-offset:2px}
