/* css/academy.css — NG_TAKHT_CUT4_CSSOUT (13 Sep 2026): the 7 <style> blocks of webapp/index.html, moved out VERBATIM and in
   document order by scripts/ng_takht_cut4_cssout.py — nothing rewritten, the cascade is the same (ng.css stays first).
   Edit the rules HERE from now on; the page only links this file. ?v= is the md5 stamped by publish-webapp.sh. */

/* ==== 1/7 · <style id="-"> · was webapp/index.html line 44 ==== */
html{font-size:calc(17px * var(--ng-fs, 1));}/*NG_TYPE_INK_V1*/ /*NG_FS_REM_V1*//* R-CONTRAST 2026-06-26 *//* NG_THEME_ACAD2B */

html,body{transition:background-color .3s ease,color .3s ease;}
/* R-NAVUNIFY canonical design system (matches hub app-v2 #bottom-nav + .sub-tab) */
.ngu-nav{position:fixed;left:0;right:0;bottom:0;z-index:60;max-width:520px;margin:0 auto;display:grid;grid-template-columns:repeat(5,1fr);background:var(--bg-elev);border-top:1px solid var(--border);padding:8px 8px max(8px,env(safe-area-inset-bottom));}
.ngu-btn{background:none;border:none;font-family:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;border-radius:10px;}
.ngu-btn .ic{font-size:1.3125rem;opacity:.55;line-height:1;}
.ngu-btn .lb{font-size:0.8125rem;font-weight:600;color:var(--text-muted);}
.ngu-btn.active .ic{opacity:1;}
.ngu-btn.active .lb{color:var(--gold-text);}
.ngu-sub{display:flex;gap:5px;padding:6px 8px;background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:45;} /* R-TABFIX-V1 sticky top tabs */
.ngu-sub::-webkit-scrollbar{display:none;}
.ngu-pill{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;border-radius:12px;background:var(--bg-card);border:1px solid var(--border);color:var(--text-dim);cursor:pointer;font-family:inherit;}
.ngu-pill .ic{font-size:1.25rem;line-height:1;opacity:.6;}
.ngu-pill .lb{font-size:0.8125rem;font-weight:600;white-space:nowrap;line-height:1.2;}
.ngu-pill.active{background:var(--gold);border-color:var(--gold);}
.ngu-pill.active .ic{opacity:1;}
.ngu-pill.active .lb{color:var(--bg-page);}
/* R-SUP-REDESIGN-V5 (2026-06-20): robust telegram/instagram-style support.
   Panel fills the gap between the LIVE top-tabs and the LIVE bottom-nav (heights
   measured by _ngSupFit -- no magic numbers); big chat box is the hero;
   summary is collapsible; input bar pinned with attach + textarea + send. */
[data-screen="support"]{position:fixed;left:0;right:0;top:116px;bottom:calc(96px + env(safe-area-inset-bottom));max-width:520px;margin:0 auto;background:var(--bg);z-index:20;flex-direction:column;padding:8px 14px 0;}
[data-screen="support"] .ng-sup-tabs{flex:none;position:static;margin:0 0 8px;}
[data-screen="support"] .ng-sup-sum{flex:none;margin:0 0 8px;}
[data-screen="support"] .ng-sup-sum-head{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;padding:9px 13px;color:var(--text);font-size:0.8125rem;font-weight:600;}
[data-screen="support"] .ng-sup-sum-head .chev{transition:transform .2s;color:var(--text-dim);font-size:0.8125rem;}
[data-screen="support"] .ng-sup-sum.open .ng-sup-sum-head .chev{transform:rotate(180deg);}
[data-screen="support"] .ng-sup-sum-body{display:none;margin-top:8px;}
[data-screen="support"] .ng-sup-sum.open .ng-sup-sum-body{display:block;max-height:38vh;overflow-y:auto;}
[data-screen="support"] .ng-sup-scroll{flex:1 1 auto;min-height:120px;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:8px;-webkit-overflow-scrolling:touch;background:var(--bg-elev);border:1px solid var(--border);border-radius:14px;padding:12px;}
[data-screen="support"] .ng-sup-empty{margin:auto;text-align:center;color:var(--text-dim);font-size:0.8125rem;line-height:2;padding:16px;}
[data-screen="support"] .ng-sup-msg-user{background:var(--gold);color:var(--bg-page);font-weight:400;}
/* R-SUP-INPUTFIX-V52: input bar = ONE row that always fits (textarea min-width:0, no wrap),
   send button width:auto (override .ng-btn width:100% that was crushing the textarea),
   send never pushed off; chip floats above; panel sits above the VISIBLE bottom nav. */
[data-screen="support"] .ng-sup-input{flex:none;position:relative;display:flex;flex-direction:row;align-items:flex-end;gap:8px;margin-top:8px;padding:8px 0 calc(10px + env(safe-area-inset-bottom));background:var(--bg);}
[data-screen="support"] .ng-sup-input #ngSupAttach{flex:0 0 44px;order:1;margin:0;padding:0;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.1875rem;line-height:1;background:var(--bg-card);border:1px solid var(--border);color:var(--gold-text);cursor:pointer;}
[data-screen="support"] .ng-sup-input textarea{flex:1 1 0%;min-width:0;min-height:44px;max-height:120px;margin:0;}
[data-screen="support"] .ng-sup-input #ngSupSend{flex:0 0 auto;order:-1;width:auto;min-width:64px;margin:0;padding:12px 16px;white-space:nowrap;}
/* R-SUP-LAYOUT-V54: summary pinned ABOVE dept tabs; while typing hide both for room */
#ngSupport.kb-open .ng-sup-tabs,#ngSupport.kb-open .ng-sup-sum{display:none;}
[data-screen="support"] .ng-sup-chip{position:absolute;left:0;right:0;bottom:100%;font-size:0.8125rem;color:var(--green);margin:0;padding:0 2px 4px;}
[data-screen="support"] .ng-sup-chip:empty{display:none;}
.ngu-banner{background:var(--gold-a18);border-bottom:1px solid var(--gold-a30);color:var(--gold-text);font-size:0.875rem;text-align:center;padding:7px;}
.ngu-header{padding:14px 18px 12px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);background:var(--gold-a04);} /* R-TABFIX-V1 header static, tabs are the sticky bar */
.ngu-header .greet{font-size:0.90625rem;color:var(--text-dim);}
.ngu-header .greet b{color:var(--text);font-weight:600;}
.ngu-header .brand{font-weight:700;font-size:0.9375rem;color:var(--gold-text);letter-spacing:0.5px;display:flex;align-items:center;gap:13px;}
.ngu-header .brand .ti{color:var(--text-dim);font-size:1.1875rem;cursor:pointer;}


/* R-NAVUNIFY: vip sub-nav uses shared .ngu-sub/.ngu-pill */

/* 2026-06-08 — landscape video fix: header was eating the screen on phones.
   In landscape, float the header as a small overlay and let the video fill. */
@media (orientation: landscape) and (max-height: 540px){
  #ngVideo{ padding:0 !important; }
  #ngVideo .ng-vid-bar{ position:absolute !important; top:0; left:0; right:0; z-index:20;
    background:rgba(0,0,0,.55) !important;
    padding:6px 10px !important; min-height:0 !important; }
  #ngVideo .ng-vid-wrap{ width:100vw !important; height:100vh !important; max-height:100vh !important;
    display:flex !important; align-items:center !important; justify-content:center !important; }
  #ngVideo .ng-vid-wrap video{ width:100% !important; height:100% !important; object-fit:contain !important; }
}
  /* NG_VID_FS_NATIVE_V1_CSS: fullscreen video fills on ANY orientation (kills the tiny-rectangle bug) */
  #ngVidPlayer:fullscreen{ width:100vw !important; height:100vh !important; max-height:100vh !important; object-fit:contain !important; background:var(--bg-page) !important; }
  #ngVidPlayer:-webkit-full-screen{ width:100vw !important; height:100vh !important; max-height:100vh !important; object-fit:contain !important; background:var(--bg-page) !important; }
  #ngVideo .ng-vid-wrap:fullscreen video{ width:100% !important; height:100% !important; object-fit:contain !important; }
  /* NG_VID_FS_FALLBACK_V1_CSS: شبه‌تمام‌صفحه وقتی WebView تلگرام اندروید fullscreen واقعی را رد می‌کند */
  #ngVideo.ng-vid-pseudofs{ position:fixed !important; inset:0 !important; z-index:2147483000 !important; background:var(--bg-page) !important; display:flex !important; flex-direction:column !important; padding:0 !important; margin:0 !important; }
  #ngVideo.ng-vid-pseudofs .ng-vid-bar{ display:none !important; }
  #ngVideo.ng-vid-pseudofs .ng-vid-wrap{ flex:1 1 auto !important; width:100vw !important; height:100% !important; max-height:none !important; background:var(--bg-page) !important; position:relative !important; border-radius:0 !important; }
  #ngVideo.ng-vid-pseudofs #ngVidPlayer{ width:100% !important; height:100% !important; max-height:none !important; object-fit:contain !important; background:var(--bg-page) !important; border-radius:0 !important; }
  #ngVideo .ng-vid-wrap:-webkit-full-screen video{ width:100% !important; height:100% !important; object-fit:contain !important; }
  /* NG_VID_DESKTOP_OVERLAY_V1 — desktop only: lift the video modal above the sticky header (z-index:40) & footer */
@media (min-width:820px){ #ngVideo{ position:fixed !important; inset:0 !important; z-index:99999 !important; background:var(--bg-page) !important; } }
.ng-vid-wrap{ position:relative; }
  .ng-vid-wm{ position:absolute; bottom:14px; left:14px; font-size:0.8125rem; font-weight:600;
    color:rgba(255,255,255,0.5); 
    pointer-events:none; z-index:15; letter-spacing:0.3px; }
/* R-ASGUI-V2 — assignment submit = sticky chat-style input (mirrors support) */
#ngAsgDetail{position:fixed;top:0;left:0;right:0;bottom:0;max-width:520px;margin:0 auto;z-index:70;flex-direction:column;background:var(--bg);}
#ngAsgDetail .ng-ov-bar{position:relative;flex:none;text-align:center;}
#ngAsgDetail .ng-ov-title{display:inline-block;}
#ngAsgDetail .ng-ov-close{position:absolute;left:12px;top:50%;transform:translateY(-50%);margin:0;}
#ngAsgDetail .ng-ov-body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;}
#ngAsgInputBar{flex:none;display:flex;flex-direction:column;gap:4px;padding:8px 12px calc(10px + env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid var(--border);}
#ngAsgMsg{font-size:0.8125rem;color:var(--green);padding:0 2px;}
#ngAsgMsg:empty{display:none;}
#ngAsgMsg.err{color:var(--red);}
#ngAsgInputBar .ng-asgib-row{position:relative;display:flex;flex-direction:row;align-items:flex-end;gap:8px;}
#ngAsgInputBar .ng-asgib-att{flex:0 0 44px;order:1;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.1875rem;line-height:1;background:var(--bg-card);border:1px solid var(--border);color:var(--gold-text);cursor:pointer;padding:0;margin:0;}
#ngAsgInputBar textarea{flex:1 1 0%;min-width:0;min-height:44px;max-height:120px;margin:0;}
#ngAsgInputBar .ng-asgib-send{flex:0 0 auto;order:-1;width:auto;min-width:64px;margin:0;padding:12px 16px;white-space:nowrap;}
#ngAsgInputBar .ng-asgib-chip{position:absolute;left:0;right:0;bottom:100%;font-size:0.8125rem;color:var(--green);padding:0 2px 5px;display:flex;align-items:center;gap:8px;}
#ngAsgInputBar .ng-asgib-chip:empty{display:none;}
#ngAsgInputBar .ng-asgib-chip img{width:34px;height:34px;border-radius:7px;object-fit:cover;border:1px solid var(--border);}
#ngAsgInputBar .ng-asgib-chip .rm{margin-inline-start:auto;color:var(--red);cursor:pointer;font-size:0.9375rem;}

/* ==== 2/7 · <style id="ng-sup-insta"> · was webapp/index.html line 145 ==== */
/* R-SUP-INSTA — academy support chat: club/Instagram look. Append-only override. */
[data-screen="support"] .ng-sup-scroll{background:transparent;border:0;border-radius:0;padding:8px 2px 12px;}
[data-screen="support"] .ng-sup-chat{display:flex;flex-direction:column;gap:10px;}
[data-screen="support"] .ng-sup-msg{max-width:84%;padding:10px 14px;border-radius:16px;font-size:0.90625rem;line-height:1.85;word-wrap:break-word;overflow-wrap:anywhere;white-space:pre-wrap;-webkit-user-select:text;user-select:text;}
[data-screen="support"] .ng-sup-msg-bot{align-self:flex-start;background:var(--bg-card);color:var(--text);border:1px solid var(--border);border-bottom-left-radius:5px;}
[data-screen="support"] .ng-sup-msg-user{align-self:flex-end;background:var(--gold);color:var(--bg-page);font-weight:400;border:1px solid var(--gold-a40);border-bottom-right-radius:5px;}
[data-screen="support"] .ng-sup-msg-loading{align-self:flex-start;color:var(--text-dim);font-style:italic;}
[data-screen="support"] .ng-sup-input textarea{background:var(--bg-card);border:1px solid var(--border);border-radius:22px;padding:11px 16px;line-height:1.7;}
[data-screen="support"] .ng-sup-input textarea:focus{border-color:var(--gold-a50);outline:none;}
[data-screen="support"] .ng-sup-input #ngSupSend{width:46px;min-width:46px;height:46px;padding:0;border-radius:50%;font-size:0;display:flex;align-items:center;justify-content:center;}
[data-screen="support"] .ng-sup-input #ngSupSend::after{content:"\27A4";font-size:1.0625rem;line-height:1;color:var(--bg-page);}
[data-screen="support"] .ng-sup-input #ngSupAttach{border-radius:50%;}

/* ==== 3/7 · <style id="ng-type-ink-v1"> · was webapp/index.html line 158 ==== */
/* NG_TYPE_INK_V1 - bolder + neutral ink */
body{font-weight:400;}
.card-title{font-weight:700;}
.section-title{font-weight:700;}
b,strong{font-weight:700;}

/* ==== 4/7 · <style id="ngNegahTabCss"> · was webapp/index.html line 164 ==== */
/* NG_NEGAH_V1 */.tabgift{position:absolute;top:-3px;right:calc(50% - 26px);font-size:0.9rem;line-height:1;animation:ngGiftPop 2.4s ease-in-out infinite;pointer-events:none;z-index:2}@keyframes ngGiftPop{0%,100%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-3px) rotate(6deg)}}.ngu-btn{position:relative}

/* ==== 5/7 · <style id="ngF2Css"> · was webapp/index.html line 165 ==== */
/* NG_FUNNEL_V2: academy funnel V2 (admin-gated until NG_FUNNEL_V2_FOR_ALL). App tokens only: works in night + champagne. */
.ltr{direction:ltr;unicode-bidi:isolate}
.ngf2-n{unicode-bidi:isolate;white-space:nowrap}
.ngf2-i{unicode-bidi:isolate}
#ngPlansV2{text-align:right}
.ngf2-pick{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:12px 14px 6px;margin:0 0 18px}
.ngf2-pick-t{color:var(--gold-text);font-weight:700;font-size:0.9rem;margin:0 0 6px}
.ngf2-pick-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 2px;border-top:1px solid var(--border-soft,var(--border));cursor:pointer;font-size:0.8125rem;color:var(--text-dim);line-height:1.8}
.ngf2-pick-row b{color:var(--gold-text);font-weight:700;white-space:nowrap;flex:none}
.ngf2-sec{font-size:0.90625rem;color:var(--gold-text);font-weight:700;margin:4px 2px 12px;text-align:center}
.ngf2-card{position:relative;background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:16px;margin:0 0 12px}
.ngf2-card.rec{border:2px solid var(--gold);}
.ngf2-card.closed{opacity:.8}
.ngf2-top{display:flex;align-items:flex-start;gap:12px}
.ngf2-ico{flex:none;width:44px;height:44px;border-radius:12px;background:var(--gold-dim,rgba(212,175,55,.13));display:flex;align-items:center;justify-content:center;font-size:1.375rem}
.ngf2-tt{flex:1;min-width:0}
.ngf2-name{color:var(--text);font-weight:700;font-size:1.0625rem;line-height:1.5}
.ngf2-tag{color:var(--text-dim);font-weight:700;font-size:0.84375rem;line-height:1.7;margin-top:2px;text-wrap:pretty}
.ngf2-chip{flex:none;background:var(--gold);color:var(--accent-ink,var(--bg-page));font-size:0.8125rem;font-weight:700;border-radius:999px;padding:3px 10px;white-space:nowrap;line-height:1.6}
.ngf2-facts{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.ngf2-facts span{font-size:0.8125rem;font-weight:700;color:var(--text);background:var(--bg-card-hi,var(--gold-dim));border:1px solid var(--border);border-radius:8px;padding:3px 10px;line-height:1.7;unicode-bidi:isolate}
.ngf2-who{font-size:0.8125rem;color:var(--text-dim);line-height:1.9;margin-top:10px}
.ngf2-note{font-size:0.8125rem;color:var(--text-muted);line-height:1.8;margin-top:4px}
.ngf2-pricebar{display:flex;align-items:center;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border-soft,var(--border))}
.ngf2-p{flex:none;min-width:96px}
.ngf2-p b{display:block;color:var(--gold-text);font-weight:700;font-size:1.0625rem;line-height:1.4;unicode-bidi:isolate}
.ngf2-p b s{color:var(--text-muted);font-weight:600;font-size:0.8125rem}
.ngf2-p small{display:block;color:var(--text-muted);font-weight:600;font-size:0.8125rem;line-height:1.6}
.ngf2-pricebar .ng-btn{flex:1;width:auto;margin-top:0;padding:12px 8px;font-size:0.875rem}
.ngf2-closed{flex:none;color:var(--text-dim);font-weight:700;font-size:0.8125rem;border:1px solid var(--text-dim);border-radius:999px;padding:2px 10px;white-space:nowrap}
/* V2 product page (inside #ngAcadBody) */
.ngf2-box{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:10px;line-height:2;font-size:0.84375rem;color:var(--text-dim)}
.ngf2-box b{color:var(--text)}
.ngf2-hd{color:var(--gold-text);font-weight:700;margin-bottom:6px;font-size:0.9rem}
.ngf2-for{background:var(--gold-dim);border:1px solid var(--gold);border-radius:12px;padding:12px 14px;margin-bottom:10px;line-height:2;font-size:0.84375rem;color:var(--text)}
.ngf2-key{border-color:var(--gold-a45,var(--gold))}
.ngf2-warn{color:var(--text-dim);border-style:dashed}
.ngf2-meta{font-size:0.84375rem;color:var(--gold-text);font-weight:700;margin-bottom:6px}
.ngf2-meta s{color:var(--text-muted);font-weight:600;font-size:0.8125rem;margin-inline-end:4px}
.ngf2-metabadges{display:flex;gap:6px;margin:0 0 12px}
.ngf2-badge{font-size:0.8125rem;font-weight:700;border-radius:6px;padding:2px 8px;border:1px solid var(--green);color:var(--green);background:transparent}  /* NG_FUNNEL_V2e: restored (dropped by ee6a7705, still used by BADGES on the basics page) */
.ngf2-badge.off{border-color:var(--gold);color:var(--gold-text);background:var(--gold-dim)}
.ngf2-ul{margin:0;padding:0;list-style:none}
.ngf2-ul li{padding:2px 0}

/* ==== 6/7 · <style id="ng-acad-v3-pills"> · was webapp/index.html line 229 ==== */
/* NG_ACAD_V3_PILLS: line icons in the academy pills (no emoji), same look as the hub nav */
.i{display:inline-block;flex:none;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.ngu-pill .ic{opacity:1;color:var(--ink2,var(--text-dim));display:flex}
.ngu-pill.active .ic{color:var(--accent-ink,var(--bg-page))}
.ngu-pill .lb{line-height:1.8}
.ngu-pill{gap:4px;padding:8px 2px;border-radius:12px}

/* ==== 7/7 · <style id="-"> · was webapp/index.html line 4740 ==== */
/* NG_VIDZOOM_V15 */#ngVideo{display:none;}.ng-vid-wrap{position:relative;overflow:hidden;}
/* NG_TAKHT_CUT5_HOME1 — support composer: camera / mic / send one size, one style (Niki, 13 Sep: «یک‌دست نیست، ارسال می‌تونه کوچکتر باشه») */
[data-screen="support"] .ng-sup-input #ngSupAttach,[data-screen="support"] .ng-sup-input #ngSupMic{flex:0 0 40px;order:1;margin:0;padding:0;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:0;line-height:1;background:var(--bg-card);border:1px solid var(--border);color:var(--gold-text);cursor:pointer;}
[data-screen="support"] .ng-sup-input #ngSupAttach svg,[data-screen="support"] .ng-sup-input #ngSupMic svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
[data-screen="support"] .ng-sup-input #ngSupMic[data-rec="1"]{color:#e5484d;border-color:#e5484d;}
[data-screen="support"] .ng-sup-input #ngSupSend{width:40px;min-width:40px;height:40px;min-height:40px!important;}
[data-screen="support"] .ng-sup-input #ngSupSend::after{font-size:.9375rem;}
[data-screen="support"] .ng-sup-input textarea{min-height:40px;padding:9px 14px;}
/* ==== NG_SUPKB_V1 (15 Sep 2026) · the composer never leaves the screen ====
   Root cause of «باکس نوشتن رو نمی‌بینم» (iPhone, keyboard open): the CUT-1 photo hero (168px) sits above the
   sticky sub-tabs, so the fixed support panel starts at y=226; Telegram-iOS shrinks the WebView by the keyboard
   height, the hub shrinks the iframe to ~347px, the panel is 121px tall, its children needed 185px
   (chat min-height 120 + composer 65), overflow was visible and the iframe clipped the composer at y=362..427.
   1) the panel clips itself and the chat shrinks first  2) the hero folds while typing / on a short viewport
   (html.ng-supkb-tight, set by _ngSupTight in academy.js). Measured before: taVisible=false; after: true. */
[data-screen="support"]{overflow:hidden;min-height:0;}
[data-screen="support"] .ng-sup-scroll{min-height:48px;}
#ngSupport.kb-open .ng-sup-scroll{min-height:32px;}
[data-screen="support"] .ng-sup-input{flex:0 0 auto;}
html.ng-supkb-tight .ng.hero-wrap[data-ng-hero="academy"]{display:none!important;}
/* ==== /NG_SUPKB_V1 ==== */
