/* Rahyar UI/UX v13: Gemini visual language on existing production contracts.
   RAHYAR_UI_T0_DESIGN_FOUNDATION_v1: this file now sources its own short
   --rh-* names from the locked token contract (rh_ds_tokens_contract.css)
   instead of its own literal hex values, so every panel that loads this
   file (student, admin, private reports, private student) draws from one
   palette. The @import is loaded here (not duplicated in phase3_polish.css
   for pages that only load this file, e.g. admin) — see MERGE_NOTES_FA.md
   "بارگذاری" for the one extra cached request this costs on pages that
   load both files. No token NAME below is renamed or removed; only the
   right-hand side now points at --rh-ds-*. Values are therefore identical
   to the locked contract, which already passed every contrast pair. */
@import url("rh_ds_tokens_contract.css");
@import url("rh_ds_components.css");
:root{--rh-canvas:var(--rh-ds-canvas);--rh-surface:var(--rh-ds-surface);--rh-raised:var(--rh-ds-raised);--rh-ink:var(--rh-ds-ink);--rh-muted:var(--rh-ds-muted);--rh-action:var(--rh-ds-action);--rh-on:var(--rh-ds-on-action);--rh-action-soft:var(--rh-ds-action-soft);--rh-border:var(--rh-ds-border);--rh-teal:var(--rh-ds-teal);--rh-success:var(--rh-ds-teal-soft);--rh-danger:var(--rh-ds-danger);--rh-danger-soft:var(--rh-ds-danger-soft);--rh-warning:var(--rh-ds-amber-soft);--rh-shadow:var(--rh-ds-shadow-md)}
/* Legacy dark-mode triggers (data-appearance, data-ps-theme) predate the
   contract's own data-rh-theme switch. They must keep working, so they set
   the SAME dark values the contract already declares for data-rh-theme —
   copied here, not edited there (rh_ds_tokens_contract.css stays locked). */
@media(prefers-color-scheme:dark){:root:not([data-rh-theme=light]):not([data-appearance=light]):not([data-ps-theme=light]){--rh-ds-canvas:#0d1724;--rh-ds-surface:#152336;--rh-ds-raised:#1c2e46;--rh-ds-ink:#edf4fd;--rh-ds-muted:#b3c6de;--rh-ds-action:#8cc8ff;--rh-ds-on-action:#08213a;--rh-ds-action-soft:#1f3a58;--rh-ds-teal:#6fe0c8;--rh-ds-teal-soft:#12392f;--rh-ds-amber:#f2cf86;--rh-ds-amber-soft:#3d3119;--rh-ds-danger:#ffb4c0;--rh-ds-danger-soft:#4a2430;--rh-ds-border:#3a506b;--rh-ds-focus:#b6dcff;--rh-ds-shadow-sm:none;--rh-ds-shadow-md:none;color-scheme:dark}}
:root[data-rh-theme=dark],:root[data-appearance=dark],:root[data-ps-theme=dark]{--rh-ds-canvas:#0d1724;--rh-ds-surface:#152336;--rh-ds-raised:#1c2e46;--rh-ds-ink:#edf4fd;--rh-ds-muted:#b3c6de;--rh-ds-action:#8cc8ff;--rh-ds-on-action:#08213a;--rh-ds-action-soft:#1f3a58;--rh-ds-teal:#6fe0c8;--rh-ds-teal-soft:#12392f;--rh-ds-amber:#f2cf86;--rh-ds-amber-soft:#3d3119;--rh-ds-danger:#ffb4c0;--rh-ds-danger-soft:#4a2430;--rh-ds-border:#3a506b;--rh-ds-focus:#b6dcff;--rh-ds-shadow-sm:none;--rh-ds-shadow-md:none;color-scheme:dark}
html:root,html:root body,html:root body.rh-dashboard{--bg:var(--rh-canvas);--sf:var(--rh-surface);--surface:var(--rh-surface);--raised:var(--rh-raised);--tx:var(--rh-ink);--text:var(--rh-ink);--mu:var(--rh-muted);--muted:var(--rh-muted);--ac:var(--rh-action);--accent:var(--rh-action);--primary:var(--rh-action);--on:var(--rh-on);--acb:var(--rh-action-soft);--soft:var(--rh-action-soft);--bd:var(--rh-border);--line:var(--rh-border);--ok:var(--rh-teal);--okb:var(--rh-success);--danger:var(--rh-danger);--danger-bg:var(--rh-danger-soft);--notice:var(--rh-warning);--rh-shadow:0 6px 24px rgb(20 42 66 / .055)}
html:root body{background:var(--rh-canvas);color:var(--rh-ink);font-family:Vazirmatn,Tahoma,sans-serif;line-height:1.85;overflow-wrap:anywhere}
body [hidden]{display:none!important}body :is(button,input,select,textarea){font:inherit}body :is(input,select,textarea){color:var(--rh-ink);background:var(--rh-surface)}body :is(button,.button){min-height:44px}body :is(a,button,input,select,textarea,summary):focus-visible{outline:3px solid var(--rh-action);outline-offset:3px}body :is(main,.content,.rh-stack,.ps-card,.card,.rh-card){min-width:0}body :is(.card,.rh-card,.ps-card){border-color:var(--rh-border);border-radius:18px;box-shadow:var(--rh-shadow)}
body .rh-logo-image{display:block;width:46px;height:46px;object-fit:contain;background:#000;border:1px solid #256a88;border-radius:14px;padding:3px;flex-shrink:0}body .brand-mark.rh-logo-frame{padding:0;width:auto;height:auto;background:none}
body .rh-app-header,body .topbar{background:var(--rh-surface);border-color:var(--rh-border)}body .rh-app-header{max-width:none}body .rh-app-header small{display:block}body .rh-primary-nav{background:var(--rh-surface)}
body .rh-card--intro{position:relative;border-inline-start:5px solid var(--rh-action);background:linear-gradient(110deg,var(--rh-surface),var(--rh-action-soft));padding:28px;border-radius:22px}body .rh-card--intro h1{font-size:clamp(24px,3vw,36px);margin:.3em 0}body .rh-section-kicker{color:var(--rh-action);font-size:13px;font-weight:700}body .rh-quick-actions{display:flex;flex-wrap:wrap;gap:10px;margin-block-start:20px}body .rh-quick-actions a:first-child{background:var(--rh-action);color:var(--rh-on);border-color:var(--rh-action)}body .rh-card--activity{border-block-start:3px solid var(--rh-action)}body .rh-grid{gap:20px}
body .rh-private-main{max-width:1200px;margin-inline:auto;padding:24px 20px 40px}body .rh-private-nav{display:flex;gap:8px;flex-wrap:wrap;padding:8px;margin:12px 0 22px;background:var(--rh-surface);border:1px solid var(--rh-border);border-radius:16px;justify-content:flex-start}body .rh-private-nav>a,body .rh-private-nav>details>summary{display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;min-height:44px;cursor:pointer;border-radius:11px;color:var(--rh-muted);text-decoration:none;font-size:14px;font-weight:650}body .rh-private-nav>a[aria-current]{color:var(--rh-action);background:var(--rh-action-soft)}body .rh-private-nav details{position:relative}body .rh-private-nav .rh-private-more{display:flex;flex-direction:column;gap:10px;padding:14px;border:1px solid var(--rh-border);background:var(--rh-surface);border-radius:12px}body .rh-private-nav .rh-private-more a{min-height:36px}
body.rh-private .ps-layout{display:block;padding:0;max-width:none}body.rh-private main{max-width:1200px;margin-inline:auto}body.rh-private .ps-heading{border-inline-start:4px solid var(--rh-action);padding-inline-start:16px;margin-block-end:18px}body.rh-private .ps-heading h1{font-size:28px;margin:0}body.rh-private .ps-heading p{font-size:13px;color:var(--rh-action);margin:0}body.rh-private .ps-grid{gap:16px}body.rh-private .ps-status{display:inline-block;border:1px solid var(--rh-border);background:var(--rh-raised);padding:6px 12px;border-radius:20px;font-size:13px}body.rh-private .ps-card a{min-height:40px;display:inline-flex;align-items:center}
body.rh-report .activity-grid{align-items:start;gap:16px}body.rh-report .activity-card{background:var(--rh-surface);border-radius:18px;padding:20px;gap:10px}body.rh-report .activity-card.is-done{border-color:var(--rh-teal)}body.rh-report .done-label{padding:12px;background:var(--rh-action-soft);border-radius:12px}body.rh-report .rh-report-details{border-block-start:1px solid var(--rh-border);padding-block-start:10px}body.rh-report .rh-report-details>summary{font-weight:650;color:var(--rh-action);font-size:14px;min-height:44px;cursor:pointer;display:flex;align-items:center;gap:8px}body.rh-report .rh-report-details>summary::before{content:'＋';font-size:19px}body.rh-report .rh-report-details[open]>summary::before{content:'−'}body.rh-report .rh-report-details>div{display:grid;gap:12px;padding-block:8px}body.rh-report .rh-actual-hint{color:var(--rh-teal);font-size:12px;margin:0}body.rh-report #actual-total{position:sticky;top:10px;z-index:2;background:var(--rh-action-soft);color:var(--rh-ink);border-color:var(--rh-border);font-weight:650}body.rh-report .wellbeing{gap:16px}body.rh-report #daily-report>button[type=submit]{min-width:220px;width:auto;background:var(--rh-action);color:var(--rh-on);padding:12px 24px;border-radius:13px}body.rh-report .extra-row fieldset{background:var(--rh-raised)}body.rh-report .activity-card legend{font-size:14px;font-weight:800}body.rh-report .activity-caption{font-size:14px}body.rh-report .activity-caption small{font-size:12px}
body .access-login{max-width:510px;margin:clamp(24px,6vh,70px) auto;padding:32px;border-block-start:4px solid var(--rh-action)}body .access-login h1{font-size:26px}body .access-login form{display:grid;gap:10px}body .access-login label{margin:0}body .access-login .rh-login-kicker{color:var(--rh-action);font-size:13px;font-weight:700}body .access-login .rh-portal-links{display:flex;flex-wrap:wrap;gap:14px;margin-block-start:20px;border-block-start:1px solid var(--rh-border);padding-block-start:16px;font-size:13px}body .access-login .rh-portal-note{font-size:13px;color:var(--rh-muted)}
body .rh-workspace-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-block:16px}body .rh-workspace-meta details{background:var(--rh-surface);border:1px solid var(--rh-border);border-radius:14px;padding:14px}body .rh-workspace-meta summary{cursor:pointer;font-weight:700;min-height:40px}body .rh-workspace-meta .detail-grid{grid-template-columns:minmax(80px,.6fr) minmax(0,1fr);font-size:13px}body .pw-overview .detail-grid{grid-template-columns:120px minmax(0,1fr)}
body #wp-editor{width:min(900px,calc(100% - 24px));max-height:calc(100dvh - 32px);padding:0;border-radius:20px;border:1px solid var(--rh-border);background:var(--rh-surface);color:var(--rh-ink)}body #wp-form{padding:24px}body #wp-form>.wp-fields{display:block}body #wp-form .rh-editor-group{padding:18px;margin:16px 0;border:1px solid var(--rh-border);border-radius:14px;background:var(--rh-raised)}body #wp-form .rh-editor-group>legend{font-size:13px;font-weight:800;color:var(--rh-action);padding:0 8px}body #wp-form .rh-editor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}body #wp-form .wp-activity-fields{margin:14px 0;background:var(--rh-surface)}body #wp-form .rh-editor-footer{position:sticky;bottom:-24px;margin:16px -24px -24px;padding:12px 24px;background:var(--rh-surface);border-block-start:1px solid var(--rh-border);box-shadow:0 -5px 20px rgb(0 0 0 / .04)}body #wp-form #wp-day-estimate{font-size:13px;font-weight:700;margin:0 0 10px}body #wp-form #wp-form-error{margin:6px 0;color:var(--rh-danger)}body #wp-form .rh-editor-footer .actions{justify-content:space-between}body #wp-form .wp-category-tabs{grid-column:1/-1}body #wp-form .rh-editor-stepnav{display:flex;gap:8px;flex-wrap:wrap}body #wp-form .rh-editor-stepnav a{font-size:12px;padding:6px 12px;border-radius:20px;background:var(--rh-action-soft);color:var(--rh-action);text-decoration:none;min-height:38px}
body .rh-pinned-budget{position:fixed;inset-block-start:100px;inset-inline-start:16px;width:min(360px,calc(100vw - 32px));max-height:calc(100dvh - 116px);overflow:auto;z-index:25;border:1px solid var(--rh-border);background:var(--rh-surface);color:var(--rh-ink);border-radius:18px;padding:16px;box-shadow:0 10px 40px rgb(0 0 0 / .16)}body .rh-pinned-budget h3{font-size:15px;margin:0}body .rh-pinned-budget .rh-budget-controls{display:flex;justify-content:space-between;align-items:center;gap:8px}body .rh-pinned-budget iframe{width:100%;height:360px;border:1px solid var(--rh-border);border-radius:10px}body .rh-pinned-budget a{font-size:13px}body .rh-pinned-budget p{font-size:13px}body .rh-budget-mini{padding:10px 14px;background:var(--rh-action-soft);border:1px solid var(--rh-border);border-radius:12px;font-size:13px;margin:12px 0}body .rh-budget-mini strong{display:block}body .rh-budget-mini .rh-budget-scope{white-space:pre-wrap;margin:5px 0;max-height:115px;overflow:auto}body .rh-pinned-budget .rh-budget-scope{white-space:pre-wrap;max-height:220px;overflow:auto}
@media(min-width:1200px){body.rh-budget-open #weekly-planner{padding-inline-start:370px}body.rh-budget-open #wp-board .wp-cards{grid-template-columns:repeat(3,minmax(0,1fr))}body.rh-budget-open #wp-editor{margin-inline-end:24px;width:calc(100vw - 430px);max-width:900px}}
@media(max-width:700px){body .rh-private-main{padding:18px 12px 30px}body .rh-private-nav{gap:4px;padding:4px}body .rh-private-nav>a,body .rh-private-nav>details>summary{padding:9px 10px;font-size:12px}body #wp-form{padding:16px}body #wp-form .rh-editor-grid{grid-template-columns:1fr}body #wp-form .rh-editor-footer{bottom:-16px;margin:12px -16px -16px;padding:12px 16px}body #wp-form .rh-editor-group{padding:12px}body .rh-workspace-meta{grid-template-columns:1fr}body .rh-pinned-budget{inset-block-start:auto;inset-block-end:12px;max-height:45dvh}body .access-login{padding:22px}body .rh-card--intro{padding:20px}}
@media(prefers-reduced-motion:reduce){body *,body *::before,body *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{body .rh-pinned-budget,body .rh-budget-mini,body .rh-private-nav,body .rh-primary-nav,body .rh-app-header{display:none!important}}
body .rh-icon{width:22px;height:22px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8}body .rh-header-tools .rh-tool{width:auto;max-width:none}body.rh-report .rh-app-header{padding:12px 16px}body.rh-report .rh-header-tools{gap:6px}

/* ---- nav shell polish (RAHYAR_UI_T0_DESIGN_FOUNDATION_v1, task 6) ----
   Reserves a numeric badge slot per destination (hidden until a real
   notification count exists — PROMPT_FA #6 "جای نشانک عددی"). Does not
   change the five stable destinations, their hrefs, or phase3_shell.js. */
body nav.rh-primary-nav .rh-primary-links a{position:relative}
body .rh-nav-badge{position:absolute;inset-block-start:2px;inset-inline-end:calc(50% - 20px);min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--rh-warning);color:#231a00;font-size:10px;font-weight:800;line-height:16px;text-align:center;border:2px solid var(--rh-surface)}
@media(min-width:1100px){body .rh-nav-badge{inset-inline-end:auto;inset-inline-start:34px;inset-block-start:4px}}
/* :focus-visible already uses --ac (=--rh-action) above; keep the contract's
   dedicated focus color in sync for any element styled only with rh-ds- vars */
:root{--rh-ds-focus-ring:0 0 0 3px var(--rh-ds-focus)}
