/* ===========================================================================
   ВЕТЕРАН PRO — mobile prototype styles
   Visual source of truth: deputy-minister mockups (dark, coral + olive) +
   veteranpro.gov.ua brand (e-Ukraine type, boxed "PRO" stamp).
   =========================================================================== */

@font-face { font-family:'e-Ukraine'; src:url('../assets/fonts/e-Ukraine/e-Ukraine-Thin.otf') format('opentype'); font-weight:100; font-display:swap; }
@font-face { font-family:'e-Ukraine'; src:url('../assets/fonts/e-Ukraine/e-Ukraine-UltraLight.otf') format('opentype'); font-weight:200; font-display:swap; }
@font-face { font-family:'e-Ukraine'; src:url('../assets/fonts/e-Ukraine/e-Ukraine-Light.otf') format('opentype'); font-weight:300; font-display:swap; }
@font-face { font-family:'e-Ukraine'; src:url('../assets/fonts/e-Ukraine/e-Ukraine-Regular.otf') format('opentype'); font-weight:400; font-display:swap; }
@font-face { font-family:'e-Ukraine'; src:url('../assets/fonts/e-Ukraine/e-Ukraine-Medium.otf') format('opentype'); font-weight:500; font-display:swap; }
@font-face { font-family:'e-Ukraine'; src:url('../assets/fonts/e-Ukraine/e-Ukraine-Bold.otf') format('opentype'); font-weight:700; font-display:swap; }

:root{
  --bg:#15130f; --bg2:#1c1a16; --card:#262320; --card2:#2f2b25; --card3:#383229;
  --line:rgba(245,241,234,.08); --line2:rgba(245,241,234,.14);
  --coral:#e8633a; --coral-2:#ff7a4d; --coral-soft:rgba(232,99,58,.15);
  --olive:#c7c07f; --olive-2:#b0a85f; --olive-soft:rgba(199,192,127,.16);
  --text:#f5f1ea; --text2:#9c948a; --text3:#6c655b;
  --good:#74c27a; --warn:#e0a93a;
  --r-card:22px; --r-lg:26px; --r-btn:16px;
  --ease:cubic-bezier(.16,1,.3,1);
  --shadow:0 18px 40px -22px rgba(0,0,0,.8);
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
body{
  font-family:'e-Ukraine',system-ui,sans-serif;
  background:#0c0b09;color:var(--text);
  -webkit-font-smoothing:antialiased;
  display:flex;align-items:center;justify-content:center;
  min-height:100dvh;
}

/* ---- Device frame (desktop) ; full-bleed on phones / when embedded ---- */
.device{
  width:390px;height:844px;flex:0 0 auto;position:relative;
  border-radius:46px;background:#000;
  padding:11px;box-shadow:0 50px 110px -40px rgba(0,0,0,.9),0 0 0 1px rgba(255,255,255,.05);
}
.device::after{ /* notch */
  content:"";position:absolute;top:11px;left:50%;transform:translateX(-50%);
  width:125px;height:30px;background:#000;border-radius:0 0 18px 18px;z-index:60;
}
.screen{
  width:100%;height:100%;border-radius:36px;overflow:hidden;position:relative;
  background:var(--bg);display:flex;flex-direction:column;
}
body.bare{display:block;}
body.bare .device{width:100vw;height:100dvh;border-radius:0;padding:0;}
body.bare .device::after{display:none;}
body.bare .screen{border-radius:0;}
@media (max-width:440px){
  body{display:block;}
  .device{width:100vw;height:100dvh;border-radius:0;padding:0;}
  .device::after{display:none;}
  .screen{border-radius:0;}
}

/* ---- iOS status bar ---- */
.statusbar{
  height:46px;flex:0 0 auto;display:flex;align-items:flex-end;justify-content:space-between;
  padding:0 28px 6px;font-size:15px;font-weight:500;letter-spacing:.2px;z-index:40;position:relative;
}
.statusbar .sb-r{display:flex;align-items:center;gap:7px;}
.statusbar svg{display:block;}

/* ---- View / scroll area ---- */
.view{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;position:relative;-webkit-overflow-scrolling:touch;}
.view::-webkit-scrollbar{width:0;}
.pad{padding:6px 20px 120px;}
.pad-tight{padding:0 20px 120px;}

/* screen swap animation */
.tabpane{animation:fade .4s var(--ease);}
@keyframes fade{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}

/* ---- App header (logo + gear) ---- */
.appbar{display:flex;align-items:flex-start;justify-content:space-between;padding:8px 20px 4px;}
.brand{display:flex;align-items:center;gap:0;font-weight:700;font-size:25px;line-height:.9;letter-spacing:-.5px;}
.brand .vt,.logo-xl .vt{color:rgba(245,241,234,.16);}
.pro{
  color:#1a1812;background:var(--olive);font-size:15px;font-weight:700;
  padding:3px 7px 2px;margin-left:8px;border-radius:5px;letter-spacing:0;
  display:inline-block;transform:translateY(-3px);box-shadow:2px 2px 0 rgba(0,0,0,.35);
}
.iconbtn{
  width:42px;height:42px;border-radius:50%;border:1px solid var(--line);
  background:var(--card);display:grid;place-items:center;color:var(--text2);
  cursor:pointer;transition:transform .15s var(--ease),background .2s;
}
.iconbtn:active{transform:scale(.92);}

/* ---- Home greeting ---- */
.greet{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 20px 6px;}
.greet h1{font-size:26px;font-weight:500;margin:0;letter-spacing:-.4px;min-width:0;}
/* level chip: labelled badge + thin XP progress (replaces the muddy ring) */
.level-chip{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;cursor:pointer;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:9px 13px;transition:transform .15s var(--ease),background .2s;}
.level-chip:active{transform:scale(.96);background:var(--card2);}
.level-chip .top{display:flex;align-items:center;gap:7px;white-space:nowrap;}
.level-chip .top .lb{width:24px;height:24px;border-radius:7px;background:var(--coral);color:#1a1310;display:grid;place-items:center;font-weight:700;font-size:13px;flex:0 0 auto;}
.level-chip .top .lt{font-size:13.5px;font-weight:500;color:var(--text);}
.level-chip .pbar{height:3px;border-radius:3px;background:rgba(255,255,255,.1);overflow:hidden;}
.level-chip .pbar i{display:block;height:100%;border-radius:3px;background:var(--coral);transition:width .6s var(--ease);}

/* ---- Generic card ---- */
.card{background:var(--card);border-radius:var(--r-card);padding:18px;border:1px solid var(--line);}
.section-label{font-size:13px;color:var(--text2);font-weight:500;margin:26px 4px 12px;letter-spacing:.2px;}
.section-label.upper{text-transform:uppercase;font-size:12px;letter-spacing:1.4px;color:var(--text3);}

/* ---- "Твій шлях" path card ---- */
.path-card{
  position:relative;background:linear-gradient(150deg,#2b2720,#211e18);
  border-radius:var(--r-lg);padding:20px 20px 16px;margin-top:8px;overflow:hidden;
  border:1px solid var(--line);box-shadow:var(--shadow);
}
.path-card::before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:4px;border-radius:4px;background:var(--coral);}
.path-top{display:flex;justify-content:space-between;align-items:baseline;}
.path-top .lbl{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--olive);}
.path-top .cnt{font-size:14px;color:var(--text2);font-weight:500;}
.path-top .cnt b{color:var(--coral);font-size:16px;}
.path-card h2{font-size:30px;font-weight:700;margin:6px 0 14px;letter-spacing:-.5px;}
.bar{height:8px;border-radius:8px;background:rgba(255,255,255,.09);overflow:hidden;}
.bar > i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,var(--coral),var(--coral-2));transition:width .7s var(--ease);}
.week{display:flex;gap:7px;margin:16px 0 14px;}
.week .d{flex:1;text-align:center;font-size:12px;color:var(--text2);padding:9px 0;border-radius:11px;background:rgba(255,255,255,.04);font-weight:500;}
.week .d.on{background:var(--coral-soft);color:var(--coral);}
.link-row{display:flex;align-items:center;gap:7px;color:var(--coral);font-weight:500;font-size:15px;cursor:pointer;width:max-content;}
.link-row:active{opacity:.6;}

/* ---- proactive banner ---- */
.nba{
  display:flex;align-items:center;gap:13px;margin-top:12px;cursor:pointer;
  background:linear-gradient(135deg,rgba(199,192,127,.16),rgba(199,192,127,.05));
  border:1px solid var(--olive-soft);border-radius:var(--r-card);padding:14px 16px;
  transition:transform .15s var(--ease);
}
.nba:active{transform:scale(.985);}
.nba .spark{width:36px;height:36px;border-radius:11px;background:var(--olive-soft);color:var(--olive);display:grid;place-items:center;flex:0 0 auto;}
.nba .t{flex:1;min-width:0;}
.nba .t .k{font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--olive-2);}
.nba .t .v{font-size:15px;font-weight:500;margin-top:2px;line-height:1.3;}
.nba{align-items:flex-start;}
.nba .spark{margin-top:1px;}
.nba .xp{margin-top:1px;}
.nba .xp{color:var(--coral);font-weight:500;font-size:14px;flex:0 0 auto;}

/* ---- mission / list rows ---- */
.row{
  display:flex;align-items:center;gap:14px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r-card);padding:15px 16px;margin-bottom:11px;
  cursor:pointer;transition:transform .15s var(--ease),background .2s;
}
.row:active{transform:scale(.985);background:var(--card2);}
.row .ic{width:46px;height:46px;border-radius:14px;flex:0 0 auto;display:grid;place-items:center;background:var(--card3);color:var(--olive);}
.row .ic.coral{background:var(--coral-soft);color:var(--coral);}
.row .tx{flex:1;min-width:0;}
.row .tx .ti{font-size:16px;font-weight:500;line-height:1.2;}
.row .tx .su{font-size:13px;color:var(--text2);margin-top:3px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.row .xp{color:var(--coral);font-weight:500;font-size:15px;white-space:nowrap;}
.row .chev{color:var(--text3);flex:0 0 auto;}
.row.done .ic{background:rgba(116,194,122,.14);color:var(--good);}
.row.done .xp{color:var(--good);}

/* ---- specialist card ---- */
.spec{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px;cursor:pointer;transition:transform .15s var(--ease);}
.spec:active{transform:scale(.99);}
.spec .head{display:flex;align-items:center;gap:14px;}
.avatar{width:56px;height:56px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-weight:700;font-size:19px;color:#1a1812;background:var(--olive);border:3px solid var(--coral);}
.spec .nm{font-size:18px;font-weight:500;}
.spec .rl{font-size:13px;color:var(--text2);margin-top:2px;}
.spec .q{font-size:15px;line-height:1.45;color:var(--text);margin-top:14px;}
.spec .chev{margin-left:auto;color:var(--text3);}

/* ---- bottom nav ---- */
.tabbar{
  flex:0 0 auto;display:flex;background:rgba(20,18,15,.92);backdrop-filter:blur(18px);
  border-top:1px solid var(--line);padding:10px 6px calc(8px + env(safe-area-inset-bottom,6px));
  position:relative;z-index:30;container-type:inline-size;
}
.tab{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:5px;color:var(--text2);cursor:pointer;font-size:11.5px;font-weight:500;position:relative;padding-top:7px;transition:color .2s;}
.tab>span:last-child{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;}
/* Narrow embeds (landing iframe phone) shrink the labels so 4 tabs never collide */
@container (max-width:360px){ .tab{font-size:10.5px;gap:4px;} }
@container (max-width:320px){ .tab{font-size:9.5px;} .tabbar{padding-left:4px;padding-right:4px;} }
@container (max-width:288px){ .tab{font-size:8.8px;} }
.tab .dot{position:absolute;top:-1px;width:22px;height:3px;border-radius:3px;background:var(--coral);opacity:0;transition:opacity .2s;}
.tab.on{color:var(--coral);}
.tab.on .dot{opacity:1;}
.tab:active{transform:scale(.93);}

/* ---- page title (sub screens) ---- */
.ptitle{display:flex;align-items:center;gap:14px;padding:10px 20px 8px;}
.ptitle .back{width:42px;height:42px;border-radius:50%;background:var(--card);border:1px solid var(--line);display:grid;place-items:center;cursor:pointer;color:var(--text);flex:0 0 auto;transition:transform .15s var(--ease);}
.ptitle .back:active{transform:scale(.9);}
.ptitle h1{font-size:23px;font-weight:500;margin:0;letter-spacing:-.3px;line-height:1.1;}
.lede{font-size:15px;color:var(--text2);line-height:1.5;padding:2px 20px 4px;}

/* ---- big head (Можливості / Мої послуги) ---- */
.bighead{padding:6px 20px 2px;}
.bighead h1{font-size:30px;font-weight:700;margin:6px 0 0;letter-spacing:-.5px;}

/* ---- filter chips ---- */
.chips{display:flex;flex-wrap:wrap;gap:9px;padding:14px 20px 6px;}
.chip{padding:9px 16px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--text2);font-size:14px;font-weight:500;cursor:pointer;transition:all .18s var(--ease);}
.chip:active{transform:scale(.95);}
.chip.on{background:var(--text);color:#1a1812;border-color:var(--text);}

/* ---- offer card ---- */
.offer{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:14px;margin-bottom:11px;cursor:pointer;transition:transform .15s var(--ease);}
.offer:active{transform:scale(.99);}
.offer .logo{width:52px;height:52px;border-radius:14px;flex:0 0 auto;display:grid;place-items:center;font-weight:700;font-size:13px;background:#fff;color:#111;overflow:hidden;}
.offer .mid{flex:1;min-width:0;}
.offer .mid .b{font-size:16px;font-weight:500;}
.offer .mid .s{font-size:13px;color:var(--text2);margin-top:2px;}
.offer .mid .qr{display:flex;align-items:center;gap:6px;color:var(--text2);font-size:12.5px;margin-top:7px;font-weight:500;}
.offer .val{font-size:17px;font-weight:700;color:var(--coral);text-align:right;white-space:nowrap;}
.offer.locked{opacity:.72;}
.offer.locked .val{color:var(--text2);font-size:13px;font-weight:500;display:flex;align-items:center;gap:5px;}

/* ---- QR modal / bottom sheet ---- */
.scrim{position:absolute;inset:0;background:rgba(0,0,0,.62);opacity:0;pointer-events:none;transition:opacity .3s var(--ease);z-index:50;display:flex;align-items:flex-end;}
.scrim.show{opacity:1;pointer-events:auto;}
.sheet{width:100%;background:var(--bg2);border-radius:28px 28px 0 0;border-top:1px solid var(--line2);padding:10px 20px calc(26px + env(safe-area-inset-bottom,0px));transform:translateY(100%);transition:transform .42s var(--ease);max-height:92%;overflow-y:auto;}
.scrim.show .sheet{transform:none;}
.grab{width:42px;height:5px;border-radius:5px;background:var(--line2);margin:6px auto 16px;}
.sheet h3{font-size:21px;font-weight:500;margin:0 0 4px;}
.sheet .sub{font-size:14px;color:var(--text2);line-height:1.5;}

.qrwrap{display:flex;flex-direction:column;align-items:center;text-align:center;padding:6px 0 4px;}
.qrbox{background:#fff;border-radius:20px;padding:16px;margin:6px 0 14px;}
.qrbox canvas{display:block;border-radius:6px;}
.qrcode{font-family:'e-Ukraine';font-weight:500;letter-spacing:2px;font-size:18px;background:var(--card);border:1px dashed var(--line2);border-radius:12px;padding:11px 18px;color:var(--olive);}
.qrnote{font-size:13px;color:var(--text2);line-height:1.5;margin-top:14px;max-width:300px;}

/* ---- buttons ---- */
.btn{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;padding:16px;border-radius:var(--r-btn);border:none;font-family:inherit;font-size:16px;font-weight:500;cursor:pointer;transition:transform .14s var(--ease),filter .2s;}
.btn:active{transform:scale(.97);}
.btn.primary{background:var(--coral);color:#1a1310;}
.btn.primary:active{filter:brightness(1.06);}
.btn.ghost{background:var(--card);color:var(--text);border:1px solid var(--line2);}
.btn.olive{background:var(--olive);color:#1a1812;}
.btn[disabled]{opacity:.4;pointer-events:none;}
.btn-row{display:flex;gap:11px;}
.btn-row .btn{flex:1;}

/* ---- detail blocks ---- */
.detail-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:8px 20px 4px;}
.detail-hero .big-ic{width:84px;height:84px;border-radius:24px;display:grid;place-items:center;background:var(--coral-soft);color:var(--coral);margin-bottom:6px;}
.tagrow{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0 4px;}
.tag{font-size:12px;font-weight:500;padding:5px 11px;border-radius:999px;background:var(--olive-soft);color:var(--olive);}
.steps-list{counter-reset:s;margin:8px 0 0;padding:0;list-style:none;}
.steps-list li{counter-increment:s;display:flex;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);font-size:15px;line-height:1.4;color:var(--text);}
.steps-list li:last-child{border-bottom:none;}
.steps-list li::before{content:counter(s);flex:0 0 auto;width:28px;height:28px;border-radius:50%;background:var(--card3);color:var(--olive);font-size:13px;font-weight:500;display:grid;place-items:center;}
.xp-pill{display:inline-flex;align-items:center;gap:7px;background:var(--coral-soft);color:var(--coral);font-weight:500;font-size:15px;padding:9px 16px;border-radius:999px;}

/* ---- category grid ---- */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:4px 20px 0;}
.cat{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:16px;min-height:128px;display:flex;flex-direction:column;justify-content:space-between;cursor:pointer;transition:transform .15s var(--ease),background .2s;}
.cat:active{transform:scale(.97);background:var(--card2);}
.cat .ci{width:44px;height:44px;border-radius:13px;background:var(--card3);color:var(--olive);display:grid;place-items:center;}
.cat .cn{font-size:15px;font-weight:500;line-height:1.25;}

/* active request card */
.req{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);padding:16px;margin-bottom:11px;}
.req .top{display:flex;align-items:center;gap:14px;}
.req .ic{width:46px;height:46px;border-radius:14px;background:var(--card3);color:var(--olive);display:grid;place-items:center;flex:0 0 auto;}
.req .tx{flex:1;}
.req .tx .ti{font-size:16px;font-weight:500;}
.req .tx .st{font-size:13px;color:var(--text2);margin-top:2px;}
.req .badge{font-size:12px;font-weight:500;padding:6px 12px;border-radius:999px;background:var(--coral-soft);color:var(--coral);white-space:nowrap;}
.req .bar{margin-top:14px;}

/* ---- onboarding & auth ---- */
.flow{flex:1;display:flex;flex-direction:column;padding:8px 24px calc(20px + env(safe-area-inset-bottom,0));overflow-y:auto;}
.flow .top{display:flex;align-items:center;gap:14px;padding:6px 0 18px;}
.steps-dots{display:flex;gap:6px;flex:1;}
.steps-dots i{height:4px;flex:1;border-radius:4px;background:rgba(255,255,255,.1);transition:background .3s;}
.steps-dots i.on{background:var(--coral);}
.flow h2{font-size:25px;font-weight:500;margin:6px 0 6px;letter-spacing:-.3px;line-height:1.15;}
.flow p.hint{font-size:15px;color:var(--text2);line-height:1.5;margin:0 0 18px;}
.flow .grow{flex:1;}
.opt{display:flex;align-items:center;gap:13px;padding:16px;border-radius:var(--r-card);background:var(--card);border:1.5px solid var(--line);margin-bottom:10px;cursor:pointer;transition:all .18s var(--ease);}
.opt:active{transform:scale(.99);}
.opt.sel{border-color:var(--coral);background:var(--coral-soft);}
.opt .rc{width:24px;height:24px;border-radius:50%;border:2px solid var(--line2);flex:0 0 auto;display:grid;place-items:center;transition:all .2s;}
.opt.sel .rc{border-color:var(--coral);background:var(--coral);}
.opt.sel .rc::after{content:"";width:9px;height:9px;border-radius:50%;background:#1a1310;}
.opt .ot{flex:1;}
.opt .ot .a{font-size:16px;font-weight:500;}
.opt .ot .b{font-size:13px;color:var(--text2);margin-top:2px;}
.opt .code{font-size:12px;font-weight:500;color:var(--olive);background:var(--olive-soft);padding:3px 9px;border-radius:7px;}
.field{margin-bottom:14px;}
.field label{display:block;font-size:13px;color:var(--text2);margin:0 2px 7px;font-weight:500;}
.field .val-box{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:15px 16px;font-size:16px;display:flex;align-items:center;justify-content:space-between;}
select.field-select{width:100%;background:var(--card);border:1.5px solid var(--line);border-radius:14px;padding:15px 16px;font-size:16px;color:var(--text);font-family:inherit;appearance:none;cursor:pointer;}
.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:16px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);margin-bottom:10px;}
.toggle-row .tt{font-size:16px;font-weight:500;}
.toggle-row .ts{font-size:13px;color:var(--text2);margin-top:2px;max-width:220px;line-height:1.35;}
.sw{width:50px;height:30px;border-radius:30px;background:rgba(255,255,255,.14);position:relative;flex:0 0 auto;cursor:pointer;transition:background .25s;}
.sw::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:transform .25s var(--ease);}
.sw.on{background:var(--coral);}
.sw.on::after{transform:translateX(20px);}

/* BankID landing */
.auth{flex:1;display:flex;flex-direction:column;justify-content:space-between;padding:30px 28px calc(28px + env(safe-area-inset-bottom,0));text-align:center;}
.auth .logo-xl{font-size:46px;font-weight:700;letter-spacing:-1.5px;line-height:.86;margin-top:30px;}
.auth .logo-xl .pro{font-size:24px;padding:4px 10px 3px;margin-left:10px;transform:translateY(-8px);}
.auth .tagline{font-size:18px;color:var(--text2);line-height:1.5;margin-top:22px;max-width:300px;align-self:center;}
.auth .ill{flex:1;display:grid;place-items:center;}
.auth .shield{width:128px;height:128px;border-radius:38px;background:linear-gradient(150deg,var(--coral-soft),transparent);display:grid;place-items:center;color:var(--coral);}
.bankid-note{font-size:13px;color:var(--text3);line-height:1.5;margin-top:14px;}
.bank-list{display:flex;flex-direction:column;gap:10px;}
.bank{display:flex;align-items:center;gap:14px;padding:15px 16px;border-radius:var(--r-card);background:var(--card);border:1px solid var(--line);cursor:pointer;transition:transform .15s var(--ease);}
.bank:active{transform:scale(.98);}
.bank .bk{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:#fff;font-weight:700;font-size:16px;flex:0 0 auto;}
.bank .bn{font-size:16px;font-weight:500;flex:1;text-align:left;}
.spinner{width:46px;height:46px;border-radius:50%;border:4px solid var(--card3);border-top-color:var(--coral);animation:spin 1s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
.center-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;padding:0 30px;}
.ok-check{width:96px;height:96px;border-radius:50%;background:rgba(116,194,122,.15);color:var(--good);display:grid;place-items:center;animation:pop .5s var(--ease);}
@keyframes pop{0%{transform:scale(.5);opacity:0;}60%{transform:scale(1.08);}100%{transform:scale(1);opacity:1;}}

/* ---- chat ---- */
.chat-view{flex:1;display:flex;flex-direction:column;overflow:hidden;}
.chat-scroll{flex:1;overflow-y:auto;padding:8px 18px 12px;display:flex;flex-direction:column;gap:12px;}
.chat-scroll::-webkit-scrollbar{width:0;}
.msg{max-width:84%;padding:13px 16px;border-radius:20px;font-size:15px;line-height:1.5;animation:fade .35s var(--ease);}
.msg.bot{align-self:flex-start;background:var(--card);border:1px solid var(--line);border-bottom-left-radius:7px;}
.msg.me{align-self:flex-end;background:var(--coral);color:#1a1310;border-bottom-right-radius:7px;}
.msg.bot .who{display:flex;align-items:center;gap:8px;margin-bottom:7px;color:var(--coral);font-size:13px;font-weight:500;}
.msg.bot .who .sp{width:24px;height:24px;border-radius:8px;background:var(--coral-soft);display:grid;place-items:center;}
.typing{align-self:flex-start;background:var(--card);border:1px solid var(--line);border-radius:20px;border-bottom-left-radius:7px;padding:15px 18px;display:flex;gap:5px;}
.typing i{width:7px;height:7px;border-radius:50%;background:var(--text3);animation:blink 1.2s infinite;}
.typing i:nth-child(2){animation-delay:.2s;}
.typing i:nth-child(3){animation-delay:.4s;}
@keyframes blink{0%,60%,100%{opacity:.3;transform:translateY(0);}30%{opacity:1;transform:translateY(-3px);}}
.qprompts{display:flex;flex-wrap:wrap;gap:8px;padding:4px 18px 8px;}
.qprompt{padding:10px 15px;border-radius:999px;background:var(--card);border:1px solid var(--line2);color:var(--text);font-size:14px;font-weight:500;cursor:pointer;transition:transform .15s var(--ease);}
.qprompt:active{transform:scale(.95);}
.chat-input{display:flex;align-items:center;gap:10px;padding:10px 16px calc(12px + env(safe-area-inset-bottom,0));border-top:1px solid var(--line);background:var(--bg);}
.chat-input input{flex:1;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:14px 18px;font-size:15px;color:var(--text);font-family:inherit;outline:none;}
.chat-input input::placeholder{color:var(--text3);}
.send{width:48px;height:48px;border-radius:50%;background:var(--coral);border:none;display:grid;place-items:center;cursor:pointer;flex:0 0 auto;color:#1a1310;transition:transform .15s var(--ease);}
.send:active{transform:scale(.9);}
.chat-disc{font-size:11.5px;color:var(--text3);text-align:center;padding:0 24px 8px;line-height:1.4;}
.msg.bot .who .sp.ini{font-size:10px;font-weight:700;color:var(--olive);background:var(--olive-soft);}
.spechat-head{display:flex;align-items:center;gap:11px;min-width:0;}
.spechat-head .m{min-width:0;}
.spechat-head .m .nm{font-size:16px;font-weight:500;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.spechat-head .m .rl{font-size:12px;color:var(--text2);margin-top:2px;}
.avatar.sm{width:40px;height:40px;font-size:14px;border-width:2px;}

/* ---- level sheet ---- */
.lvl-cur{display:flex;align-items:center;gap:16px;margin:6px 0 18px;}
.lvl-cur .ring{width:72px;height:72px;border-radius:50%;flex:0 0 auto;background:conic-gradient(var(--olive) var(--p,40%),rgba(255,255,255,.08) 0);display:grid;place-items:center;}
.lvl-cur .ring .in{width:62px;height:62px;border-radius:50%;background:var(--bg2);display:grid;place-items:center;font-size:24px;font-weight:500;}
.lvl-cur .meta .nm{font-size:19px;font-weight:500;}
.lvl-cur .meta .xp{font-size:14px;color:var(--text2);margin-top:3px;}
.lvl-cur .meta .xp b{color:var(--coral);}
.lvl-line{display:flex;align-items:center;gap:13px;padding:13px 0;border-bottom:1px solid var(--line);}
.lvl-line:last-child{border-bottom:none;}
.lvl-line .n{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:500;background:var(--card3);color:var(--text2);flex:0 0 auto;}
.lvl-line.reached .n{background:var(--olive);color:#1a1812;}
.lvl-line.current .n{background:var(--coral);color:#1a1310;}
.lvl-line .ln{flex:1;font-size:15px;font-weight:500;}
.lvl-line .lx{font-size:13px;color:var(--text2);}
.ach-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin-top:8px;}
.ach{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;text-align:center;}
.ach.locked{opacity:.45;}
.ach .ab{width:42px;height:42px;border-radius:12px;margin:0 auto 9px;display:grid;place-items:center;background:var(--olive-soft);color:var(--olive);}
.ach.locked .ab{background:var(--card3);color:var(--text3);}
.ach .at{font-size:13.5px;font-weight:500;line-height:1.2;}
.ach .ad{font-size:11.5px;color:var(--text2);margin-top:4px;line-height:1.3;}
.xplog{margin-top:6px;}
.xplog .e{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line);font-size:14px;}
.xplog .e:last-child{border:none;}
.xplog .e .d{color:var(--text2);}
.xplog .e .v{color:var(--good);font-weight:500;}

/* ---- toast ---- */
.toast{position:absolute;left:50%;top:64px;transform:translate(-50%,-22px);background:var(--card2);border:1px solid var(--line2);border-radius:16px;padding:13px 20px;display:flex;align-items:center;gap:11px;box-shadow:0 16px 36px -16px rgba(0,0,0,.9);opacity:0;pointer-events:none;transition:all .4s var(--ease);z-index:70;max-width:86%;}
.toast.show{opacity:1;transform:translate(-50%,0);}
.toast .tic{width:34px;height:34px;border-radius:10px;background:var(--coral-soft);color:var(--coral);display:grid;place-items:center;flex:0 0 auto;}
.toast .tt{font-size:14px;font-weight:500;line-height:1.25;}
.toast .tt small{display:block;color:var(--text2);font-weight:400;font-size:12px;margin-top:1px;}

/* settings */
.set-group{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden;margin-bottom:14px;}
.set-row{display:flex;align-items:center;gap:14px;padding:15px 16px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .2s;}
.set-row:last-child{border-bottom:none;}
.set-row:active{background:var(--card2);}
.set-row .si{width:38px;height:38px;border-radius:11px;background:var(--card3);color:var(--olive);display:grid;place-items:center;flex:0 0 auto;}
.set-row .sl{flex:1;font-size:15px;font-weight:500;}
.set-row .sv{font-size:14px;color:var(--text2);}
.demo-tag{font-size:10px;font-weight:500;letter-spacing:.5px;text-transform:uppercase;color:var(--warn);background:rgba(224,169,58,.14);padding:3px 8px;border-radius:6px;}

.empty{text-align:center;color:var(--text2);padding:40px 30px;font-size:15px;line-height:1.5;}
.empty .ei{width:64px;height:64px;border-radius:18px;background:var(--card);display:grid;place-items:center;margin:0 auto 14px;color:var(--text3);}

/* floating demo button (proactive / reset) */
.demo-fab{position:absolute;right:16px;bottom:96px;z-index:25;display:flex;flex-direction:column;gap:10px;align-items:flex-end;}
.demo-fab .lab{background:var(--card2);border:1px solid var(--line2);color:var(--text2);font-size:11px;font-weight:500;padding:8px 12px;border-radius:12px;cursor:pointer;box-shadow:var(--shadow);transition:transform .15s var(--ease);display:flex;align-items:center;gap:7px;}
.demo-fab .lab:active{transform:scale(.94);}
.demo-fab .lab .dt{color:var(--warn);}

/* language toggle */
.lang-mini{display:inline-flex;background:var(--card);border:1px solid var(--line2);border-radius:999px;padding:3px;}
.lang-mini button{border:none;background:transparent;font-family:inherit;font-size:12.5px;font-weight:500;color:var(--text2);padding:6px 12px;border-radius:999px;cursor:pointer;transition:all .2s var(--ease);}
.lang-mini button.on{background:var(--coral);color:#1a1310;}
