/* ==========================================================
   ui.css — لایه طراحی سراسری محمدنژاد
   بعد از همه CSSهای قدیمی لود می‌شود؛ همه منابع لوکال هستند.
   ========================================================== */

@font-face{font-family:Vazir;src:url('/static/Vazir-Medium.woff2') format('woff2');font-weight:500 600;font-display:swap}
@font-face{font-family:Vazir;src:url('/static/Vazir-Light.woff2') format('woff2');font-weight:300;font-display:swap}

:root{
  --lime-deep:#7fa83f;
  --navy-2:#123a55;
  --ring:0 0 0 4px rgba(185,215,122,.35);
  --radius:18px;
  --ease:cubic-bezier(.22,1,.36,1);
  --shadow-sm:0 6px 18px rgba(9,34,58,.07);
  --shadow-md:0 16px 40px rgba(9,34,58,.12);
  --header-h:76px;
  color-scheme:light;
}
html[data-theme=dark]{
  --shadow-sm:0 6px 18px rgba(0,0,0,.3);
  --shadow-md:0 16px 40px rgba(0,0,0,.45);
  color-scheme:dark;
}

html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 16px);-webkit-text-size-adjust:100%}
body{
  min-height:100vh;
  display:flex;
  flex-direction:column;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
main{flex:1 0 auto;width:100%}
img,video,iframe,embed{max-width:100%}
img{height:auto}
::selection{background:var(--lime);color:#0c2437}
:focus-visible{outline:3px solid var(--lime);outline-offset:3px;border-radius:6px}

.ico{width:1.15em;height:1.15em;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}

.skip-link{position:fixed;top:-60px;right:16px;z-index:1000;padding:10px 16px;border-radius:10px;background:var(--lime);color:#0c2437;font-weight:800;transition:top .2s}
.skip-link:focus{top:12px}

/* ---------- Scroll progress ---------- */
.scroll-progress{position:fixed;top:0;right:0;left:0;height:3px;z-index:60;pointer-events:none}
.scroll-progress span{display:block;height:100%;transform-origin:right;transform:scaleX(var(--p,0));background:linear-gradient(270deg,#d8ef9f,var(--lime),var(--lime-deep));box-shadow:0 0 10px rgba(185,215,122,.7)}

/* ---------- Header ---------- */
header.site-header{
  position:sticky;top:0;z-index:50;
  height:var(--header-h);
  padding:0 max(4vw,18px);
  display:flex;align-items:center;justify-content:space-between;gap:18px;
  background:color-mix(in srgb,var(--paper) 82%,transparent);
  backdrop-filter:blur(16px) saturate(160%);
  -webkit-backdrop-filter:blur(16px) saturate(160%);
  border-bottom:1px solid transparent;
  transition:box-shadow .3s ease,border-color .3s ease,height .3s var(--ease),background .3s ease;
}
.is-scrolled header.site-header{height:66px;border-color:var(--line);box-shadow:0 10px 30px rgba(9,34,58,.08)}
header.site-header .brand{font-size:25px;flex:none;transition:transform .3s var(--ease)}
header.site-header .brand:hover{transform:scale(1.03)}
header.site-header .brand img{width:44px;height:44px;transition:transform .5s var(--ease)}
header.site-header .brand:hover img{transform:rotate(-8deg)}

.site-header #main-nav{
  display:flex;align-items:center;gap:4px;
  padding:5px;border-radius:999px;
  background:var(--mist);border:1px solid var(--line);
}
.site-header #main-nav a:not(.btn){
  position:relative;padding:7px 14px;border-radius:999px;
  font-size:13.5px;font-weight:700;color:var(--ink);opacity:.85;
  transition:background .25s ease,color .25s ease,opacity .25s ease;
}
.site-header #main-nav a:not(.btn):hover,
.site-header #main-nav a.is-current{opacity:1;background:var(--paper);color:var(--lime-deep);box-shadow:var(--shadow-sm)}
html[data-theme=dark] .site-header #main-nav a:not(.btn):hover,
html[data-theme=dark] .site-header #main-nav a.is-current{color:var(--lime)}
.site-header #main-nav .staff-only-link{color:#4f7a2b}
html[data-theme=dark] .site-header #main-nav .staff-only-link{color:#c7e690}
.site-header #main-nav .btn.small{
  padding:8px 16px;border-radius:999px;font-size:13px;
  background:linear-gradient(135deg,var(--navy),var(--navy-2));color:#fff;
  box-shadow:0 8px 18px rgba(9,34,58,.22);transition:transform .25s var(--ease),box-shadow .25s ease;
}
html[data-theme=dark] .site-header #main-nav .btn.small{background:var(--lime);color:#0c2437}
.site-header #main-nav .btn.small:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(9,34,58,.3)}
.site-header .logout-form button{border-radius:999px;padding:7px 14px;font-size:12.5px}

.header-tools{display:flex;align-items:center;gap:8px;flex:none}
#theme{
  width:42px;height:42px;display:grid;place-items:center;padding:0;
  border:1px solid var(--line);border-radius:14px;background:var(--mist);color:var(--ink);
  cursor:pointer;font-size:0;transition:transform .35s var(--ease),background .25s ease;
}
#theme:hover{transform:rotate(-20deg) scale(1.05)}
#theme .ico{width:20px;height:20px}
#theme .ico-moon{display:none}
html[data-theme=dark] #theme .ico-sun{display:none}
html[data-theme=dark] #theme .ico-moon{display:block}

.header-tools .menu-toggle{margin:0;border-radius:14px;width:42px;height:42px;padding:10px 11px}
.header-tools .menu-toggle span{margin:4px 0}

@media (max-width:800px){
  :root{--header-h:64px}
  .is-scrolled header.site-header{height:60px}
  header.site-header .brand{font-size:21px}
  header.site-header .brand img{width:38px;height:38px}
  .site-header #main-nav{
    display:flex!important;
    position:fixed;top:calc(var(--header-h) + 8px);right:12px;left:12px;
    flex-direction:column;align-items:stretch;gap:2px;
    max-height:calc(100dvh - var(--header-h) - 24px);overflow-y:auto;
    padding:10px;border-radius:22px;
    background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow-md);
    opacity:0;visibility:hidden;transform:translateY(-10px) scale(.98);transform-origin:top center;
    transition:opacity .25s ease,transform .3s var(--ease),visibility .25s;
  }
  .site-header #main-nav.is-open{opacity:1;visibility:visible;transform:none}
  .site-header #main-nav a:not(.btn){display:block;padding:12px 14px;border-radius:14px;font-size:15px;opacity:1;color:var(--ink)}
  .site-header #main-nav a:not(.btn):hover{box-shadow:none;background:var(--mist)}
  .site-header #main-nav .btn.small{display:block;margin-top:6px;padding:12px;text-align:center;font-size:15px}
  .site-header .logout-form{display:block;margin-top:6px}
  .site-header .logout-form button{display:block;width:100%;padding:12px;font-size:14px;border-radius:14px}
  .header-tools .menu-toggle{display:block}
  body.menu-open::after{content:"";position:fixed;inset:0;z-index:40;background:rgba(6,20,36,.35);backdrop-filter:blur(2px)}
}
/* drawer menu also for logged-in users (more links) on mid widths */
@media (min-width:801px) and (max-width:1024px){
  body.is-auth .site-header #main-nav{
    display:flex!important;
    position:fixed;top:calc(var(--header-h) + 8px);right:12px;left:12px;
    flex-direction:column;align-items:stretch;gap:2px;
    max-height:calc(100dvh - var(--header-h) - 24px);overflow-y:auto;
    padding:10px;border-radius:22px;
    background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow-md);
    opacity:0;visibility:hidden;transform:translateY(-10px) scale(.98);transform-origin:top center;
    transition:opacity .25s ease,transform .3s var(--ease),visibility .25s;
  }
  body.is-auth .site-header #main-nav.is-open{opacity:1;visibility:visible;transform:none}
  body.is-auth .site-header #main-nav a:not(.btn){display:block;padding:12px 14px;border-radius:14px;font-size:15px;opacity:1;color:var(--ink)}
  body.is-auth .site-header #main-nav a:not(.btn):hover{box-shadow:none;background:var(--mist)}
  body.is-auth .site-header #main-nav .btn.small{display:block;margin-top:6px;padding:12px;text-align:center;font-size:15px}
  body.is-auth .site-header .logout-form{display:block;margin-top:6px}
  body.is-auth .site-header .logout-form button{display:block;width:100%;padding:12px;font-size:14px;border-radius:14px}
  body.is-auth .header-tools .menu-toggle{display:block}
  body.is-auth.menu-open::after{content:"";position:fixed;inset:0;z-index:40;background:rgba(6,20,36,.35);backdrop-filter:blur(2px)}
}
@media (min-width:1025px) and (max-width:1240px){
  body.is-staff .site-header #main-nav{
    display:flex!important;
    position:fixed;top:calc(var(--header-h) + 8px);right:12px;left:12px;
    flex-direction:column;align-items:stretch;gap:2px;
    max-height:calc(100dvh - var(--header-h) - 24px);overflow-y:auto;
    padding:10px;border-radius:22px;
    background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow-md);
    opacity:0;visibility:hidden;transform:translateY(-10px) scale(.98);transform-origin:top center;
    transition:opacity .25s ease,transform .3s var(--ease),visibility .25s;
  }
  body.is-staff .site-header #main-nav.is-open{opacity:1;visibility:visible;transform:none}
  body.is-staff .site-header #main-nav a:not(.btn){display:block;padding:12px 14px;border-radius:14px;font-size:15px;opacity:1;color:var(--ink)}
  body.is-staff .site-header #main-nav a:not(.btn):hover{box-shadow:none;background:var(--mist)}
  body.is-staff .site-header #main-nav .btn.small{display:block;margin-top:6px;padding:12px;text-align:center;font-size:15px}
  body.is-staff .site-header .logout-form{display:block;margin-top:6px}
  body.is-staff .site-header .logout-form button{display:block;width:100%;padding:12px;font-size:14px;border-radius:14px}
  body.is-staff .header-tools .menu-toggle{display:block}
  body.is-staff.menu-open::after{content:"";position:fixed;inset:0;z-index:40;background:rgba(6,20,36,.35);backdrop-filter:blur(2px)}
}

/* ---------- Buttons & forms (global polish) ---------- */
.btn,.navy-btn,button.btn{transition:transform .25s var(--ease),box-shadow .25s ease,filter .25s ease}
.btn:hover,.navy-btn:hover{transform:translateY(-2px);box-shadow:0 10px 22px rgba(9,34,58,.2)}
.btn:active,.navy-btn:active{transform:translateY(0)}

input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),select,textarea{
  border-radius:12px;
  transition:border-color .2s ease,box-shadow .2s ease,background .2s ease;
}
input:not([type=checkbox]):not([type=radio]):not([type=file]):focus,select:focus,textarea:focus{
  outline:none;border-color:var(--lime-deep)!important;box-shadow:var(--ring)!important;
}
input[type=checkbox],input[type=radio]{accent-color:var(--lime-deep)}
input[type=file]{max-width:100%}
textarea{max-width:100%}
select{max-width:100%}
label{overflow-wrap:anywhere}

/* ---------- Generic content polish ---------- */
.work-card,.dash-card{transition:transform .35s var(--ease),box-shadow .35s ease,border-color .3s ease}
.work-card:hover,.dash-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-md)}
.notice{border-radius:12px}

/* ---------- Login page ---------- */
.auth:not(.major-choice-page){position:relative;max-width:460px;margin:clamp(40px,8vw,90px) auto;padding:0 18px}
.auth:not(.major-choice-page)::before{content:"";position:absolute;inset:-60px 0;z-index:-1;background:radial-gradient(circle at 70% 20%,rgba(185,215,122,.28),transparent 55%),radial-gradient(circle at 20% 90%,rgba(18,58,85,.18),transparent 55%);filter:blur(10px)}
.auth:not(.major-choice-page) form{position:relative;overflow:hidden;padding:42px 36px 34px;border:1px solid var(--line);border-radius:28px;box-shadow:var(--shadow-md);gap:14px}
.auth:not(.major-choice-page) form::before{content:"";position:absolute;top:0;right:0;left:0;height:5px;background:linear-gradient(90deg,var(--lime),var(--navy-2),var(--lime))}
.auth:not(.major-choice-page) h1{margin:0 0 10px;font-size:30px}
.auth:not(.major-choice-page) .eyebrow{margin:0;color:var(--lime-deep)}
.auth:not(.major-choice-page) input{margin-top:0;min-height:52px}
.auth:not(.major-choice-page) .btn{min-height:52px;font-size:16px;cursor:pointer;background:linear-gradient(135deg,var(--navy),var(--navy-2))}
html[data-theme=dark] .auth:not(.major-choice-page) .btn{background:var(--lime);color:#0c2437}
.auth:not(.major-choice-page) .errorlist,.auth:not(.major-choice-page) .form-error{margin:0;padding:10px 12px;border-radius:12px;background:#fde7ea;color:#9f2338;list-style:none;font-size:13px}

/* ---------- Responsive fixes for panels ---------- */
.password-form{flex-wrap:wrap}
.password-form input{flex:1 1 120px;min-width:0}
.student-actions{flex-wrap:wrap}
@media (max-width:700px){
  main table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .password-form{width:100%}
  .password-form input{width:auto}
  .records-head{display:none}
  .section{padding-right:16px;padding-left:16px}
}

/* ---------- Footer ---------- */
footer.ui-footer{margin-top:auto}
footer.ui-footer::after{content:"";position:absolute;top:0;right:12%;left:12%;height:1px;background:linear-gradient(90deg,transparent,var(--lime),transparent)}
.ui-footer-grid{display:grid;grid-template-columns:1.1fr .7fr 1.6fr;gap:40px;align-items:start}
.ui-footer .footer-contact{min-width:0;grid-template-columns:1fr;gap:10px}
.ui-footer .footer-contact b{max-width:none}
.ui-footer .footer-icon{transition:transform .35s var(--ease)}
.ui-footer .footer-contact a:hover .footer-icon{transform:rotate(-10deg) scale(1.08)}
.ui-footer .footer-icon .ico{width:19px;height:19px}
.ui-footer-links{display:grid;gap:9px;align-content:start}
.ui-footer-links h4{margin:0 0 6px;color:#fff;font-size:15px}
.ui-footer-links a{color:#b9c9d7;font-size:14px;width:max-content;transition:color .2s ease,transform .3s var(--ease)}
.ui-footer-links a:hover{color:var(--lime);transform:translateX(-4px)}
.ui-footer .footer-bottom{flex-wrap:wrap;gap:10px}
.ui-footer .footer-bottom a{color:#c7e690}
@media (max-width:900px){
  .ui-footer-grid{grid-template-columns:1fr 1fr}
  .ui-footer .footer-contact{grid-column:1/-1;grid-template-columns:repeat(3,1fr);margin-top:0}
}
@media (max-width:640px){
  .ui-footer-grid{grid-template-columns:1fr;gap:28px}
  .ui-footer .footer-contact{grid-template-columns:1fr}
  .ui-footer .footer-bottom{display:grid;justify-items:center;text-align:center}
}

/* ---------- Back to top ---------- */
.back-to-top{
  position:fixed;left:18px;bottom:18px;z-index:45;
  width:50px;height:50px;display:grid;place-items:center;border-radius:50%;
  background:var(--paper);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow-md);
  opacity:0;transform:translateY(16px) scale(.85);pointer-events:none;
  transition:opacity .3s ease,transform .35s var(--ease);
}
.show-top .back-to-top{opacity:1;transform:none;pointer-events:auto}
.back-to-top:hover{color:var(--lime-deep)}
.back-to-top .ico{width:20px;height:20px}
.back-to-top .ring{position:absolute;inset:-1px;transform:rotate(-90deg)}
.back-to-top .ring circle{fill:none;stroke:var(--lime);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:132;stroke-dashoffset:calc(132 - 132 * var(--p,0))}
.is-chat .back-to-top{display:none}

/* ---------- Reveal ---------- */
.js .reveal{opacity:0;transform:translateY(26px);transition:opacity .8s var(--ease),transform .8s var(--ease);transition-delay:calc(var(--i,0) * 90ms)}
.js .reveal.is-visible{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-delay:0s!important;transition-delay:0s!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .js .reveal{opacity:1;transform:none}
}

/* ---------- Error pages ---------- */
.ui-error{display:grid;justify-items:center;gap:10px;padding:clamp(60px,12vw,130px) 20px;text-align:center}
.ui-error-code{font-size:clamp(90px,22vw,170px);font-weight:900;line-height:1;background:linear-gradient(100deg,var(--navy-2),var(--lime) 50%,var(--lime-deep));-webkit-background-clip:text;background-clip:text;color:transparent;animation:ui-float 6s ease-in-out infinite}
.ui-error h1{margin:6px 0 0;font-size:clamp(24px,4vw,34px)}
.ui-error p{margin:0 0 14px;color:var(--muted)}
.ui-error-actions{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:16px}
.ui-error-actions .btn{padding:13px 22px;border-radius:14px}
.ui-error-link{font-weight:800;border-bottom:1px solid var(--lime)}
@keyframes ui-float{50%{transform:translateY(-12px)}}

/* drawer on wide screens: compact panel next to the toggle (left side in RTL) */
@media (min-width:801px) and (max-width:1024px){
  body.is-auth .site-header #main-nav{right:auto;width:340px}
}
@media (min-width:1025px) and (max-width:1240px){
  body.is-staff .site-header #main-nav{right:auto;width:340px}
}
.header-tools .menu-toggle span{transition:transform .3s var(--ease),opacity .2s ease}
.header-tools .menu-toggle.is-open span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.header-tools .menu-toggle.is-open span:nth-child(2){opacity:0}
.header-tools .menu-toggle.is-open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

/* lesson-plan admin forms: switch to the two-column layout earlier (row layout overflowed at ~1024px) */
@media (max-width:1180px){
  main .lesson-admin-grid .record-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}
  main .lesson-admin-grid .form-title{grid-column:1/-1;width:auto;min-height:0;padding:0 0 10px;border-left:0;border-bottom:1px solid var(--line)}
  main .lesson-admin-grid label,.lesson-admin-grid label.wide{min-width:0}
  main .lesson-admin-grid .record-form>button{width:100%;min-width:0}
}
@media (max-width:620px){
  main .lesson-admin-grid .record-form{grid-template-columns:1fr}
}
