
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');
:root{
  --bg:#070d12;--bg2:#0b151d;--panel:rgba(15,27,36,.72);
  --line:rgba(177,205,218,.13);--text:#eef7fb;--muted:#8fa7b4;
  --cyan:#7de3ff;--cyan2:#29b8df;--silver:#d7e8ee;--accent:#9ff1ff;
  --shadow:0 24px 80px rgba(0,0,0,.38);--radius:24px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:radial-gradient(circle at 50% -20%,var(--bg2,#173445) 0,transparent 42%),linear-gradient(180deg,var(--bg),var(--bg) 75%);color:var(--text);font-family:Inter,system-ui,sans-serif;min-height:100vh;overflow-x:hidden}
a{color:inherit;text-decoration:none}button,input,select{font:inherit}
.bg-grid{position:fixed;inset:0;pointer-events:none;opacity:.18;background-image:linear-gradient(rgba(170,220,235,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(170,220,235,.06) 1px,transparent 1px);background-size:46px 46px;mask-image:linear-gradient(to bottom,#000,transparent 75%);z-index:-2}
.orb{position:fixed;border-radius:50%;filter:blur(80px);opacity:.12;pointer-events:none;z-index:-1}.orb-a{width:380px;height:380px;background:#2bc2e7;top:8%;right:-180px}.orb-b{width:300px;height:300px;background:#b9f4ff;bottom:15%;left:-160px}
.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;max-width:1240px;margin:auto;padding:0 24px;border-bottom:1px solid var(--line)}
.brand{display:flex;gap:11px;align-items:center}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border:1px solid rgba(157,235,255,.4);border-radius:12px;background:linear-gradient(145deg,#dffaff,#49717e);color:#071016;font-weight:900;font-size:12px;box-shadow:0 0 25px rgba(87,218,247,.18)}.brand small{display:block;color:var(--muted);font-size:9px;letter-spacing:1.4px;margin-top:2px;text-transform:uppercase}.status{font-size:11px;color:#b7cbd4;display:flex;align-items:center;gap:8px}.status i{width:7px;height:7px;border-radius:50%;background:#8ff5bd;box-shadow:0 0 12px #8ff5bd}
main{max-width:1240px;margin:auto;padding:0 24px}.hero{min-height:530px;display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:40px}.eyebrow{color:#87dff2;font-size:11px;letter-spacing:2.8px;font-weight:800;margin-bottom:16px}.hero h1{font-size:clamp(52px,7vw,92px);line-height:.94;letter-spacing:-5px;margin:0 0 26px;font-weight:800}.hero h1 span{background:linear-gradient(90deg,#fff,#78dff7 65%,#a6c4cf);-webkit-background-clip:text;background-clip:text;color:transparent}.hero p{max-width:650px;color:#a5b9c3;line-height:1.8;font-size:15px}.hero-actions{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap}
.btn{border:1px solid var(--line);border-radius:14px;padding:12px 16px;cursor:pointer;transition:.2s;color:var(--text);background:rgba(255,255,255,.03)}.btn:hover{transform:translateY(-2px);border-color:rgba(137,226,247,.4)}.btn-primary{background:linear-gradient(135deg,#dffbff,#6bdcf4);color:#061016;border-color:transparent;font-weight:800}.btn-primary span{margin-left:10px}.btn-ghost{background:rgba(255,255,255,.025)}
.hero-art{min-height:380px;display:grid;place-items:center}.glass-stack{position:relative;width:min(410px,90%);height:320px;transform:rotate(-5deg)}.mini-card{position:absolute;border:1px solid rgba(197,238,247,.18);background:linear-gradient(145deg,rgba(40,63,75,.8),rgba(8,17,24,.8));backdrop-filter:blur(16px);box-shadow:var(--shadow);border-radius:24px;padding:28px}.mini-card span{font-size:10px;color:#8ee7fa;letter-spacing:2px}.mini-card b{display:block;font-size:36px;letter-spacing:-2px;margin-top:25px}.mini-card small{display:block;color:#8ca6b2;margin-top:35px;font-size:9px;letter-spacing:2px}.mini-one{width:280px;height:190px;right:5px;top:0;transform:rotate(8deg)}.mini-two{width:245px;height:175px;left:15px;top:88px;transform:rotate(-7deg);z-index:2}.mini-three{width:255px;height:175px;right:38px;bottom:0;transform:rotate(4deg);z-index:3}
.stats{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--line);border-radius:20px;background:rgba(11,20,27,.58);overflow:hidden;margin:10px 0 90px}.stats div{padding:18px 14px;border-right:1px solid var(--line);text-align:center}.stats div:last-child{border:0}.stats strong{display:block;font-size:clamp(18px,2.2vw,26px)}.stats span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:1.5px}
.gallery-section{padding-bottom:80px}.section-head{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:25px}.section-head h2{font-size:clamp(28px,4vw,44px);letter-spacing:-2px;margin:0}.muted{color:var(--muted);font-size:13px;max-width:360px;line-height:1.6}
.toolbar{display:grid;grid-template-columns:minmax(240px,1fr) auto auto;gap:10px;align-items:center;margin-bottom:20px}.search{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:rgba(9,18,24,.72);height:48px;border-radius:15px;padding:0 13px}.search>span{font-size:24px;color:#9bb7c3}.search input{border:0;outline:0;background:transparent;color:var(--text);width:100%;min-width:0}.search input::placeholder{color:#66808d}.search kbd{font-size:9px;color:#6d8995;border:1px solid var(--line);padding:5px 7px;border-radius:6px;white-space:nowrap}.filters{display:flex;gap:5px;padding:4px;background:rgba(255,255,255,.025);border:1px solid var(--line);border-radius:13px}.filter,.sort{height:40px;border:0;border-radius:9px;background:transparent;color:#91aab5;padding:0 12px;cursor:pointer}.filter.active{background:#dffaff;color:#071117;font-weight:800}.sort{border:1px solid var(--line);background:#0b151c;outline:none}
.result-info{color:#6f8b97;font-size:11px;margin:14px 0}.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.card{position:relative;display:flex;flex-direction:column;min-width:0;border:1px solid var(--line);border-radius:22px;background:linear-gradient(145deg,rgba(17,30,39,.88),rgba(7,13,18,.9));overflow:hidden;transition:.25s;box-shadow:0 12px 40px rgba(0,0,0,.12)}.card:hover{transform:translateY(-5px);border-color:rgba(120,223,246,.32);box-shadow:0 24px 65px rgba(0,0,0,.32)}.cover{height:170px;padding:18px;position:relative;overflow:hidden;background:radial-gradient(circle at 78% 20%,rgba(136,231,249,.2),transparent 33%),linear-gradient(135deg,#152934,#091218)}.cover:after{content:"";position:absolute;inset:auto -30px -70px auto;width:190px;height:190px;border:1px solid rgba(156,230,243,.18);border-radius:50%;box-shadow:0 0 0 30px rgba(156,230,243,.02),0 0 0 60px rgba(156,230,243,.02)}.cover-top{display:flex;justify-content:space-between;position:relative;z-index:1}.pill{font-size:9px;letter-spacing:1.3px;text-transform:uppercase;color:#a8eaf7;background:rgba(113,216,240,.09);border:1px solid rgba(113,216,240,.15);padding:6px 8px;border-radius:8px}.cover-number{font-size:10px;color:#5d7c88}.cover h3{position:absolute;left:18px;bottom:16px;margin:0;font-size:27px;letter-spacing:-1.3px;max-width:82%;line-height:1}.card-body{padding:17px}.student-row{display:flex;justify-content:space-between;gap:10px;align-items:start}.student{font-weight:700;font-size:15px}.class-badge{font-size:9px;border:1px solid var(--line);color:#8ea8b4;border-radius:7px;padding:5px 7px;white-space:nowrap}.card-desc{color:#8099a5;font-size:11px;line-height:1.6;margin:10px 0 14px;min-height:35px}.meta-row{display:flex;gap:7px;flex-wrap:wrap}.tag{font-size:9px;color:#a8bcc5;background:rgba(255,255,255,.035);border:1px solid var(--line);padding:5px 7px;border-radius:7px}.card-link{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding-top:13px;border-top:1px solid var(--line);font-size:11px;color:#a9eafa;font-weight:700}.card-link span:last-child{font-size:16px}.more-work{color:#718b97;font-size:9px;margin-left:5px}
.empty{text-align:center;padding:70px 20px;border:1px dashed var(--line);border-radius:22px}.empty-icon{font-size:40px;color:#78dff7}.empty h3{margin:10px 0 5px}.empty p{color:var(--muted);font-size:12px}
footer{max-width:1240px;margin:auto;padding:22px 24px 35px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;color:#6f8995;font-size:10px}footer>div{display:flex;gap:9px;align-items:center}.brand-mark.small{width:25px;height:25px;border-radius:8px;font-size:8px}
@media (max-width:900px){.hero{grid-template-columns:1fr;min-height:auto;padding:75px 0 55px}.hero-art{display:none}.stats{grid-template-columns:repeat(3,1fr);margin-bottom:65px}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar{grid-template-columns:1fr auto}.sort{grid-column:2}.filters{grid-column:1/3;justify-content:center}}
@media (max-width:620px){.topbar{padding:0 16px}.status{display:none}main{padding:0 16px}.hero h1{font-size:56px;letter-spacing:-3.5px}.hero p{font-size:13px}.stats{grid-template-columns:repeat(2,1fr);margin-bottom:55px}.stats div{border-bottom:1px solid var(--line)}.stats div:nth-child(2){border-right:0}.section-head{display:block}.section-head .muted{margin-top:10px}.toolbar{grid-template-columns:1fr}.filters{grid-column:auto;overflow:auto;justify-content:start}.sort{grid-column:auto;width:100%}.gallery-grid{grid-template-columns:1fr}.cover{height:185px}footer{margin:0 16px;padding-left:0;padding-right:0;display:block}footer span{display:block;margin-top:10px}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.thumb{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.68;filter:saturate(.8) contrast(1.05);transition:.5s;z-index:0}.card:hover .thumb{transform:scale(1.045);opacity:.82}.cover-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,10,14,.18),rgba(4,10,14,.9) 88%);z-index:1}.cover-top,.cover-title{z-index:2}.cover-title{position:absolute;left:18px;right:18px;bottom:16px;display:flex;align-items:end;justify-content:space-between;gap:10px}.cover-title h3{margin:0;font-size:25px;letter-spacing:-1.2px;line-height:1}.cover-title span{font-size:9px;color:#b9d5de;white-space:nowrap}.works-title{font-size:9px;letter-spacing:1.5px;color:#78939e;margin:16px 0 8px;display:flex;justify-content:space-between}.works-title span{color:#5e7d89}.work-list{display:grid;gap:6px}.work-choice{display:grid;grid-template-columns:27px 1fr auto 18px;align-items:center;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:11px;background:rgba(255,255,255,.025);transition:.18s}.work-choice:hover{border-color:rgba(126,226,247,.4);background:rgba(126,226,247,.06);transform:translateX(2px)}.work-choice>span{font-size:9px;color:#607e89}.work-choice b{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.work-choice small{font-size:8px;color:#75909b;white-space:nowrap}.work-choice em{font-style:normal;color:#8feaff}.card-link{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding-top:13px;border-top:1px solid var(--line);font-size:11px;color:#a9eafa;font-weight:700}


/* ===== Silverhawk Tooltip (live meta) ===== */
.sh-tooltip{
  position:fixed;
  z-index:9999;
  pointer-events:none;
  max-width:300px;
  min-width:180px;
  padding:10px 13px;
  border-radius:12px;
  font-size:12px;
  font-weight:500;
  line-height:1.45;
  color:#061016;
  background:linear-gradient(145deg,#f0fdff 0%,#b8eefc 100%);
  border:1px solid rgba(120,220,245,.55);
  box-shadow:0 12px 36px rgba(0,0,0,.38), 0 0 0 1px rgba(255,255,255,.1);
  opacity:0;
  transform:translateY(5px) scale(.96);
  transition:opacity .15s ease, transform .15s ease;
  white-space:normal;
  word-break:break-word;
}
.sh-tooltip.visible{
  opacity:1;
  transform:translateY(0) scale(1);
}
.sh-tooltip .tip-title{
  font-weight:700;
  font-size:13px;
  letter-spacing:-.2px;
  margin-bottom:3px;
  color:#041015;
}
.sh-tooltip .tip-desc{
  font-size:11px;
  color:#1a3a46;
  opacity:.9;
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.sh-tooltip .tip-loading{
  margin-top:6px;
  font-size:10px;
  color:#2a6a7a;
  font-style:italic;
}
.sh-tooltip .tip-source{
  margin-top:6px;
  font-size:9px;
  letter-spacing:.8px;
  text-transform:uppercase;
  color:#1e5c6c;
  opacity:.75;
}
.sh-tooltip::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:-5px;
  width:10px;height:10px;
  background:#c5f0fc;
  border-right:1px solid rgba(120,220,245,.55);
  border-bottom:1px solid rgba(120,220,245,.55);
  transform:translateX(-50%) rotate(45deg);
}
.sh-tooltip.below::after{
  bottom:auto;
  top:-5px;
  border-right:none;
  border-bottom:none;
  border-left:1px solid rgba(120,220,245,.55);
  border-top:1px solid rgba(120,220,245,.55);
}

/* Mobile/keyboard tooltip refinement */
.sh-tooltip{max-width:min(320px,calc(100vw - 20px));}
.work-choice:focus-visible{outline:2px solid rgba(143,234,255,.65);outline-offset:2px;}
@media (max-width:520px){
  .sh-tooltip{min-width:0;width:min(300px,calc(100vw - 20px));font-size:11px;}
  .sh-tooltip .tip-title{font-size:12px;}
  .sh-tooltip .tip-desc{font-size:10px;}
}


/* ===== Top nav ===== */
.topnav{display:flex;gap:6px;align-items:center;margin-left:auto;margin-right:16px;flex-wrap:wrap;overflow:visible;max-width:none}
.topnav a{font-size:12px;color:#9bb4c0;padding:8px 12px;border-radius:10px;border:1px solid transparent;transition:.18s}
.topnav a:hover{color:#e8f7fc;border-color:var(--line)}
.topnav a.active{color:#061016;background:linear-gradient(135deg,#dffbff,#6bdcf4);font-weight:700;border-color:transparent}
@media (max-width:720px){.topnav{margin-right:0}.status{display:none}.topnav a{padding:7px 9px;font-size:11px}}

/* ===== Skills page ===== */
.page-skills .skills-main{max-width:1080px;margin:0 auto;padding:0 24px 80px}
.skills-hero{padding:56px 0 28px}
.skills-hero h1{font-size:clamp(32px,5vw,52px);letter-spacing:-1.8px;line-height:1.05;margin:10px 0 14px}
.skills-lead{color:#9db5c0;font-size:15px;line-height:1.65;max-width:720px}
.skills-meta{display:flex;flex-wrap:wrap;gap:10px 18px;margin:22px 0 26px;font-size:12px;color:#8aa0ab}
.skills-meta b{color:#d7eef6;margin-right:6px}
.skills-actions{display:flex;flex-wrap:wrap;gap:10px}
.framework-card,.summary-card{border:1px solid var(--line);border-radius:20px;padding:22px 24px;background:linear-gradient(145deg,rgba(17,30,39,.88),rgba(7,13,18,.92));margin:18px 0}
.framework-card p,.summary-card p{color:#9db5c0;line-height:1.65;margin:8px 0 0;font-size:14px}
.summary-card h2{margin:8px 0 12px;font-size:24px;letter-spacing:-.8px}
.summary-card ul{margin:0;padding-left:18px;color:#b7cdd6;line-height:1.7;font-size:14px}
.skills-levels,.skills-domains{margin-top:48px}
.level-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:16px}
.level-card{border:1px solid var(--line);border-radius:16px;padding:18px;background:rgba(255,255,255,.03)}
.level-badge{display:inline-block;font-size:10px;letter-spacing:1px;text-transform:uppercase;padding:5px 8px;border-radius:7px;font-weight:700;margin-bottom:10px}
.lv-applied .level-badge,.skill-level.lv-applied{background:rgba(143,245,189,.15);color:#8ff5bd;border:1px solid rgba(143,245,189,.25)}
.lv-practiced .level-badge,.skill-level.lv-practiced{background:rgba(125,227,255,.12);color:#7de3ff;border:1px solid rgba(125,227,255,.22)}
.lv-intro .level-badge,.skill-level.lv-intro{background:rgba(255,255,255,.06);color:#9bb4c0;border:1px solid var(--line)}
.level-card h3{margin:0 0 6px;font-size:16px}
.level-card p{margin:0;font-size:12px;color:#8aa0ab;line-height:1.5}
.domain-card{border:1px solid var(--line);border-radius:22px;padding:22px;margin:16px 0;background:linear-gradient(145deg,rgba(17,30,39,.9),rgba(7,13,18,.94));border-left:3px solid var(--domain,#7de3ff)}
.domain-head{display:flex;gap:14px;align-items:flex-start;margin-bottom:10px}
.domain-code{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;font-weight:800;font-size:14px;background:rgba(125,227,255,.1);color:var(--domain,#7de3ff);border:1px solid rgba(125,227,255,.2);flex-shrink:0}
.domain-head h3{margin:0;font-size:18px;letter-spacing:-.4px}
.domain-head small{color:#7f97a3;font-size:11px}
.domain-desc{color:#9db5c0;font-size:13px;line-height:1.6;margin:0 0 16px}
.skill-table{display:grid;gap:0;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.skill-row{display:grid;grid-template-columns:1.2fr .55fr 1.6fr;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);font-size:12px;align-items:start}
.skill-row:last-child{border-bottom:0}
.skill-head{background:rgba(255,255,255,.04);color:#7f97a3;font-size:10px;letter-spacing:1px;text-transform:uppercase;font-weight:600}
.skill-name{font-weight:600;color:#e8f4f8}
.skill-level{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:7px;font-size:10px;font-weight:700;width:fit-content}
.skill-evidence{color:#8aa0ab;line-height:1.45}
.skills-closing{margin-top:48px}
.closing-card{border:1px solid var(--line);border-radius:22px;padding:28px;background:radial-gradient(circle at 90% 10%,rgba(125,227,255,.12),transparent 40%),linear-gradient(145deg,rgba(17,30,39,.92),rgba(7,13,18,.95))}
.closing-card h2{margin:0 0 10px;font-size:24px;letter-spacing:-.8px}
.closing-card p{color:#9db5c0;line-height:1.65;margin:0 0 18px;max-width:640px}
@media (max-width:800px){
  .level-grid{grid-template-columns:1fr}
  .skill-row{grid-template-columns:1fr;gap:4px}
  .skill-head{display:none}
  .skill-level{margin:4px 0}
}

/* Curriculum download cards */
.skills-docs{margin-top:48px}
.docs-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}
.doc-card{display:flex;flex-direction:column;gap:6px;padding:18px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(145deg,rgba(17,30,39,.9),rgba(7,13,18,.94));transition:.2s}
.doc-card:hover{border-color:rgba(125,227,255,.35);transform:translateY(-3px);box-shadow:0 16px 40px rgba(0,0,0,.25)}
.doc-icon{font-size:10px;letter-spacing:1.5px;font-weight:800;color:#7de3ff}
.doc-card b{font-size:15px;color:#eef7fb}
.doc-card small{font-size:12px;color:#8aa0ab;line-height:1.45}
.doc-card em{margin-top:8px;font-style:normal;font-size:11px;color:#a9eafa;font-weight:700}
@media (max-width:700px){.docs-grid{grid-template-columns:1fr}}

/* Refleksi bonus */
.bonus-list{display:flex;flex-direction:column;gap:8px}
.bonus-row{display:grid;grid-template-columns:70px 1fr 160px;gap:12px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.03)}
.badge-kelas{font-size:10px;letter-spacing:.5px;padding:4px 7px;border-radius:7px;border:1px solid var(--line);color:#9bb4c0}
.bonus-name{font-weight:600;font-size:14px;color:#e8f4f8}
.bonus-bar{display:flex;align-items:center;gap:8px}
.bonus-bar i{display:block;height:8px;border-radius:99px;max-width:110px}
.bonus-bar span{font-size:13px;font-weight:700;color:#dffbff;min-width:28px}
@media (max-width:640px){.bonus-row{grid-template-columns:1fr;gap:6px}.bonus-bar i{max-width:100%;flex:1}}

.bonus-row-2{grid-template-columns:70px 1.2fr 1fr 1fr}
.bonus-metric small{display:block;font-size:10px;color:#7f97a3;margin-bottom:4px;letter-spacing:.3px}
@media (max-width:800px){.bonus-row-2{grid-template-columns:1fr}}

/* Alumni form + chat */
.field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#9db5c0}
.field input,.field select,input[type=text],input[type=url],input[type=password],input[type=search],select,textarea{
  background:#0e1a24;
  border:1px solid #3a5566;
  border-radius:12px;
  padding:10px 12px;
  color:#f0f7fb;
  font:inherit;
  color-scheme: dark;
}
.field input::placeholder,
input::placeholder{color:#7f9aaa;opacity:1}
.field select,
select{
  background-color:#0e1a24;
  color:#f0f7fb;
}
.field select option,
select option{
  background-color:#0e1a24;
  color:#f0f7fb;
}
.field select option:checked,
.field select option:hover,
select option:checked,
select option:hover{
  background-color:#1a3344;
  color:#ffffff;
}
/* native dropdown on some browsers */
select:focus,input:focus,textarea:focus{
  outline:2px solid #5ec8ff;
  outline-offset:1px;
  border-color:#5ec8ff;
}
.chat-log{height:min(55vh,420px);overflow:auto;border:1px solid var(--line);border-radius:14px;padding:12px;background:rgba(0,0,0,.2);display:flex;flex-direction:column;gap:8px}
.chat-bubble{padding:8px 10px;border-radius:12px;background:rgba(255,255,255,.04);font-size:13px;line-height:1.45}
.chat-bubble strong{color:#dffbff}
.chat-bubble small{color:#7f97a3;margin-left:6px;font-weight:400}
.chat-bubble.mine{outline:1px solid rgba(125,227,255,.25)}

.chat-bubble{display:flex;gap:10px;align-items:flex-start}
.chat-av{width:36px;height:36px;border-radius:12px;background:rgba(255,255,255,.06);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.chat-body{min-width:0}
.chat-bubble a.chat-link{color:#7de3ff;text-decoration:underline;text-underline-offset:2px;word-break:break-all}
.chat-bubble a.chat-link:hover{color:#b8f0ff}

.typing-line{min-height:18px;font-size:12px;color:#7de3ff;font-style:italic;opacity:.9}
.thumb{object-fit:cover;width:100%;height:100%;background:#0d1824}

.nav-profile{font-size:18px;opacity:.9}
.video-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:18px}
.video-card{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:rgba(255,255,255,.03);display:flex;flex-direction:column}
.video-frame{position:relative;aspect-ratio:16/9;background:#000}
.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.video-meta{padding:14px 16px 16px;display:flex;flex-direction:column;gap:8px;flex:1 1 auto;min-height:0}
.video-meta-main{display:grid;gap:8px;flex:1 1 auto}
.video-card-foot{
  display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;
  margin-top:auto;padding-top:8px;border-top:1px solid rgba(255,255,255,.06);
}
.video-src-link{font-size:12px;color:#7de3ff;text-decoration:none}
.video-src-link:hover{text-decoration:underline}
.video-admin-acts{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}
.video-meta h3{margin:0;font-size:1.05rem;color:#e8f4f8}
.video-meta p{margin:0;font-size:13px;color:#9db5c0}
.video-meta a{font-size:12px;color:#7de3ff}
.admin-list{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.admin-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:rgba(0,0,0,.15);font-size:13px}
.admin-row button{border:1px solid var(--line);background:rgba(255,80,80,.12);color:#ffb4b4;border-radius:8px;padding:6px 10px;cursor:pointer}
@media (max-width:640px){.video-grid{grid-template-columns:1fr}}

.btn-google,.btn-google-sm{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  border:0;border-radius:999px;padding:12px 18px;cursor:pointer;font-weight:700;
  background:#fff;color:#1f1f1f;box-shadow:0 1px 2px rgba(0,0,0,.2)
}
.btn-google-sm{padding:8px 12px;font-size:12px;border-radius:12px}
.g-icon{
  width:18px;height:18px;display:inline-block;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath fill='%23EA4335' d='M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z'/%3E%3Cpath fill='%234285F4' d='M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z'/%3E%3Cpath fill='%23FBBC05' d='M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z'/%3E%3Cpath fill='%2334A853' d='M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z'/%3E%3C/svg%3E") center/contain no-repeat
}
.sh-userbar{
  display:flex;align-items:center;gap:8px;
  margin-left:auto; /* dorong ke kanan */
  flex:0 0 auto;
  order:99; /* paling kanan di topbar */
}
.sh-profile-chip.is-admin{
  border-color:rgba(125,227,255,.45);
  box-shadow:0 0 0 1px rgba(125,227,255,.15);
}
.sh-profile-chip.is-admin small{color:#7de3ff}

.sh-profile-chip{display:flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.04);max-width:220px}
.sh-profile-chip img{width:32px;height:32px;border-radius:50%;object-fit:cover}
.sh-profile-meta{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.sh-profile-meta b{font-size:12px;color:#e8f4f8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sh-profile-meta small{font-size:10px;color:#8aa3b0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-avatar{width:48px;height:48px;border-radius:50%;object-fit:cover;border:2px solid rgba(125,227,255,.35)}

.react-bar{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.react-btn{border:1px solid var(--line);background:rgba(0,0,0,.2);border-radius:999px;padding:5px 10px;font-size:12px;cursor:pointer;color:#c5d8e0}
.react-btn.love-red,.react-btn.cmt-red{color:#ff8a9a}
.react-btn.love-blue,.react-btn.cmt-blue{color:#7db8ff}
.react-btn:hover{border-color:#5ec8ff}
.sh-modal{position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;z-index:9999;padding:16px}
.sh-modal[hidden]{display:none!important}
.sh-modal-card{background:#0e1a24;border:1px solid var(--line);border-radius:18px;padding:18px;max-width:420px;width:100%;position:relative;display:grid;gap:10px}
.sh-modal-x{position:absolute;right:10px;top:8px;border:0;background:transparent;color:#9db5c0;font-size:22px;cursor:pointer}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.stat-card .stat-num{font-size:1.8rem;font-weight:800;color:#e8f4f8;margin:6px 0}
.stats-online{font-size:1.05rem}
.about-hero{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.about-avatar{width:88px;height:88px;border-radius:24px;background:linear-gradient(135deg,#1a4a5c,#0d2840);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.4rem;color:#7de3ff;border:1px solid rgba(125,227,255,.35)}

.work-row{display:grid;grid-template-columns:1fr;gap:6px;margin-bottom:8px}
.work-row .work-choice{display:flex}
.react-mini{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.rm-btn{border:1px solid var(--line);background:rgba(0,0,0,.25);border-radius:999px;padding:2px 7px;font-size:11px;cursor:pointer;line-height:1.4}
.rm-btn.love-red,.rm-btn.cmt-red{color:#ff8a9a}
.rm-btn.love-blue,.rm-btn.cmt-blue{color:#7db8ff}
.rm-btn:hover{border-color:#5ec8ff}
.cmt-panel{margin-top:4px}
.cmt-box{border:1px solid var(--line);border-radius:12px;padding:10px;background:rgba(0,0,0,.25);display:grid;gap:8px}
.cmt-hint{margin:0;font-size:11px;color:#9db5c0}
.cmt-box input,.cmt-box textarea{width:100%;background:#0e1a24;border:1px solid #3a5566;border-radius:10px;color:#e8f4f8;padding:8px;font:inherit}
#sh-float-stats{
  position:fixed;
  left:16px;
  bottom:16px;
  right:auto;
  top:auto;
  z-index:2147483000;
  background:rgba(10,18,28,.92);border:1px solid var(--line);border-radius:14px;
  padding:8px 10px;display:flex;align-items:center;gap:8px;cursor:grab;
  box-shadow:0 8px 28px rgba(0,0,0,.35);max-width:min(96vw,520px);font-size:11px;color:#c5d8e0;
  pointer-events:auto;
  touch-action:none;
  user-select:none;
}
#sh-float-stats.collapsed{padding:6px}
#sh-float-stats.is-dragging{opacity:.92;cursor:grabbing}
.fs-body{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.fs-body b{color:#e8f4f8}
.fs-hide,.fs-show{border:0;background:rgba(255,255,255,.08);color:#9db5c0;border-radius:8px;width:28px;height:28px;cursor:pointer;touch-action:manipulation}
.fs-more{color:#7de3ff;text-decoration:none}
.fs-drag{cursor:grab;opacity:.75;user-select:none;padding:0 4px;touch-action:none}


/* === work row: link + icons sejajar === */
.work-list{display:flex;flex-direction:column;gap:8px}
.work-row{
  display:flex;flex-direction:column;gap:6px;
  padding:8px 10px;border:1px solid var(--line);border-radius:12px;
  background:rgba(255,255,255,.03);
}
.work-row .work-choice{
  display:flex;align-items:center;gap:8px;width:100%;
  text-decoration:none;color:inherit;border:0;background:transparent;padding:0;
}
.work-row .react-mini{
  display:flex;flex-wrap:wrap;gap:4px;align-items:center;
  padding-top:2px;
}
.rm-btn{
  border:1px solid var(--line);background:transparent;border-radius:999px;
  padding:2px 8px;font-size:11px;cursor:pointer;line-height:1.5;
  color:rgba(255,255,255,.55); /* ikon default putih/abu */
}
.rm-btn .ic{color:rgba(255,255,255,.75)}
.rm-btn .n-lr,.rm-btn.rm-cmt-r .n-cr{color:#ff6b7a} /* angka merah tetap */
.rm-btn .n-lb,.rm-btn.rm-cmt-b .n-cb{color:#6db0ff} /* angka biru tetap */
.rm-btn.rm-love-r.is-on .ic,
.rm-btn.rm-cmt-r.is-on .ic{color:#ff4d62}
.rm-btn.rm-love-b.is-on .ic,
.rm-btn.rm-cmt-b.is-on .ic{color:#4d9fff}
.rm-btn.is-on{border-color:rgba(255,255,255,.25);background:rgba(255,255,255,.06)}

.react-mini[hidden]{display:none!important}
.work-choice b{color:#f0f7fb;cursor:pointer}
.work-choice:hover b{text-decoration:underline;text-underline-offset:3px}
.charts-wrap{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-bottom:40px}
.chart-card .chart-labels{font-size:10px;margin:6px 0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chart-bars{display:flex;align-items:flex-end;gap:3px;height:120px}
.chart-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:0}
.chart-col i{display:block;width:100%;max-width:14px;border-radius:4px 4px 0 0;min-height:2px}
.chart-col span{font-size:9px;color:#7f97a3;margin-top:4px}
.bonus-row-3{grid-template-columns:70px 1.3fr 1fr 1fr 1fr}
@media (max-width:900px){.bonus-row-3{grid-template-columns:1fr}}

#sh-share-bar{
  position:fixed; right:16px; bottom:16px; z-index:2147482900;
  display:flex; align-items:center; gap:8px;
  background:rgba(8,16,26,.94); border:1px solid rgba(125,227,255,.25);
  border-radius:999px; padding:8px 12px; box-shadow:0 8px 28px rgba(0,0,0,.35);
  font-size:12px; color:#c5d8e0
}
.sh-share-label{opacity:.7;margin-right:2px}
.sh-share-btn{
  display:inline-flex;align-items:center;gap:5px;
  border-radius:999px;padding:6px 10px;text-decoration:none;font-weight:700;font-size:12px
}
.sh-share-btn.sh-wa{background:#128C7E;color:#fff}
.sh-share-btn.sh-mail{background:#EA4335;color:#fff}
.sh-share-btn:hover{filter:brightness(1.08)}
@media (max-width:520px){
  #sh-share-bar{right:10px;bottom:72px;padding:6px 10px}
  .sh-share-label{display:none}
}


/* hide legacy online badge */
.status{display:none!important}

/* admin link putih, bukan ungu */
.topnav a.nav-admin,
.topnav a.nav-profile{
  color:#e8f4f8!important;
  background:transparent!important;
  border:1px solid rgba(232,244,248,.25)!important;
  font-size:12px!important;
  opacity:1;
}
.topnav a.nav-admin:hover,
.topnav a.nav-profile:hover{
  color:#fff!important;
  border-color:rgba(255,255,255,.45)!important;
  background:rgba(255,255,255,.06)!important;
}
.topnav a.nav-admin.active{
  color:#061016!important;
  background:linear-gradient(135deg,#dffbff,#6bdcf4)!important;
  border-color:transparent!important;
}

/* topnav wrap on small screens */
@media (max-width:900px){
  .topnav{flex-wrap:nowrap;justify-content:flex-start;gap:4px;max-width:100%}
  .topnav a{padding:6px 8px;font-size:11px}
}

/* Student filter dropdown (hemat ruang vs tab panjang) */
.filter-select,
#videoStudentSelect {
  appearance: none;
  -webkit-appearance: none;
  background: rgba(255,255,255,.06);
  border: 1px solid var(--line);
  border-radius: 10px;
  color: #e8f4f8;
  padding: 8px 12px;
  font-size: 13px;
  min-height: 38px;
  cursor: pointer;
}
.filter-select:focus,
#videoStudentSelect:focus {
  outline: none;
  border-color: rgba(107,220,244,.55);
  box-shadow: 0 0 0 3px rgba(107,220,244,.12);
}
#videoStudentFilters .field span {
  display: block;
  margin-bottom: 2px;
}

/* Privacy tree */
.privacy-tree{border:1px solid var(--line);border-radius:12px;padding:8px 10px;background:rgba(0,0,0,.2);max-height:320px;overflow:auto;font-size:13px}
.pt-node{margin:2px 0}
.pt-row{display:flex;align-items:center;gap:6px;padding:3px 0}
.pt-toggle{border:0;background:transparent;color:#9db5c0;cursor:pointer;width:22px;height:22px;line-height:1;padding:0;flex-shrink:0}
.pt-toggle.leaf{visibility:hidden}
.pt-children{margin-left:18px;border-left:1px dashed rgba(125,227,255,.15);padding-left:8px}
.pt-children.is-collapsed{display:none}
.pt-row input{accent-color:#5ec8ff}
.contact-bar{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 4px;align-items:center}
.contact-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:4px 10px;border-radius:999px;border:1px solid var(--line);background:rgba(0,0,0,.25);color:#c5d8e0;text-decoration:none}
.contact-chip:hover{border-color:#5ec8ff;color:#e8f4f8}
.contact-chip.wa{color:#8ff5bd;border-color:rgba(143,245,189,.35)}

/* Health check */
.sh-health-btn{
  position:fixed;right:14px;bottom:72px;z-index:9990;
  padding:8px 12px;border-radius:999px;font-size:12px;font-weight:600;
  border:1px solid rgba(157,235,255,.35);background:rgba(8,16,24,.92);
  color:#cfe8f0;cursor:pointer;box-shadow:0 8px 24px rgba(0,0,0,.35);
}
.sh-health-btn:hover{border-color:#6bdcf4;color:#fff}
.sh-health-modal{
  position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,.55);
  display:flex;align-items:center;justify-content:center;padding:16px;
}
.sh-health-modal[hidden]{display:none!important}
.sh-health-panel{
  width:min(560px,100%);max-height:min(88vh,720px);overflow:auto;
  background:#0c141c;border:1px solid rgba(157,235,255,.25);border-radius:16px;
  padding:16px 18px;color:#e8f4f8;
}
.sh-health-panel header{display:flex;justify-content:space-between;align-items:center;gap:12px}
.sh-health-panel h2{margin:0;font-size:1.15rem}
.sh-health-close{border:0;background:transparent;color:#9bb;font-size:22px;cursor:pointer;line-height:1}
.sh-health-lead{font-size:13px;margin:8px 0 12px}
.sh-health-summary{font-size:13px;padding:10px 12px;border-radius:10px;background:rgba(255,255,255,.04);margin-bottom:12px}
.sh-health-summary.all-ok{border:1px solid rgba(143,245,189,.35);color:#b8f5d4}
.sh-health-summary.has-fail{border:1px solid rgba(255,120,120,.4);color:#ffc9c9}
.sh-health-row{display:grid;grid-template-columns:52px 1fr;gap:2px 10px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:12px}
.sh-health-st{font-weight:700;grid-row:span 2}
.sh-health-row.ok .sh-health-st{color:#8ff5bd}
.sh-health-row.fail .sh-health-st{color:#ff8f8f}
.sh-health-row.pending .sh-health-st{color:#9bb}
.sh-health-lb{font-weight:600;color:#e8f4f8}
.sh-health-dt{color:#9bb4c0;grid-column:2;word-break:break-word}
.sh-health-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.sh-health-log{margin-top:12px;font-size:11px;white-space:pre-wrap;background:#000;padding:10px;border-radius:8px;max-height:160px;overflow:auto}
@media (max-width:600px){.sh-health-btn{bottom:88px;right:10px;font-size:11px}}

.student-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.student-row .student{flex:1;min-width:0}
.card-eng{display:inline-flex;gap:8px;align-items:center;margin-left:auto;font-size:12px;color:#9bb4c0}
.card-eng .eng-love{color:#ff8fab}
.card-eng .eng-cmt{color:#7ec8ff}
.user-perm-panel.is-collapsed{display:none}

.video-thumb-btn{
  position:relative;display:block;width:100%;padding:0;border:0;cursor:pointer;background:#000;aspect-ratio:16/9;overflow:hidden;
}
.video-thumb{width:100%;height:100%;object-fit:cover;display:block}
.video-play{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:52px;height:52px;border-radius:50%;background:rgba(0,0,0,.65);color:#fff;
  display:grid;place-items:center;font-size:18px;border:2px solid rgba(255,255,255,.8);
}
.video-thumb-btn:hover .video-play{background:rgba(0,180,220,.85)}
.video-thumb-ph{
  position:relative;display:flex;align-items:center;justify-content:center;
  width:100%;aspect-ratio:16/9;border:0;cursor:pointer;
  background:linear-gradient(135deg,#1a2a4a 0%,#0d1520 50%,#1877f2 160%);
  color:#e8f0ff;
}
.video-thumb-ph.is-fb{background:linear-gradient(135deg,#0f1b33,#1877f2 140%)}
.video-ph-label{position:absolute;left:12px;bottom:10px;font-size:12px;font-weight:700;opacity:.85;letter-spacing:.02em}
.video-thumb-ph .video-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}

.sh-health-panel.sh-health-flash{animation:shHealthPulse .55s ease}
@keyframes shHealthPulse{0%{box-shadow:0 0 0 0 rgba(107,220,244,.5)}100%{box-shadow:0 0 0 12px rgba(107,220,244,0)}}

html.sh-tour-active{scroll-behavior:auto}
html.sh-tour-active body{cursor:none}

.preview-modal{position:fixed;inset:0;z-index:10050;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;padding:16px}
.preview-modal[hidden]{display:none!important}
.preview-panel{width:min(420px,100%);max-height:90vh;overflow:auto;background:#0c141c;border:1px solid rgba(157,235,255,.25);border-radius:16px;padding:14px}
.preview-panel h3{margin:0 0 10px;font-size:1rem}
.sh-tour-toggle{
  position:fixed;left:14px;bottom:72px;z-index:9990;
  padding:8px 12px;border-radius:999px;font-size:12px;font-weight:600;
  border:1px solid rgba(157,235,255,.35);background:rgba(8,16,24,.92);
  color:#cfe8f0;cursor:pointer;box-shadow:0 8px 24px rgba(0,0,0,.35);
}
.sh-tour-toggle:hover{border-color:#6bdcf4;color:#fff}
.sh-tour-toggle.is-on{border-color:rgba(143,245,189,.5);color:#b8f5d4}
@media (max-width:600px){
  .sh-tour-toggle{bottom:88px;left:10px;font-size:11px}
  .stats{grid-template-columns:repeat(2,1fr)!important}
}

.admin-search-wrap input.admin-list-search{
  width:100%;padding:10px 12px;border-radius:10px;
  border:1px solid var(--line);background:rgba(0,0,0,.25);color:#e8f4f8;
}
.admin-search-wrap input.admin-list-search:focus{outline:none;border-color:#5ec8ff}

.link-edit-panel.is-collapsed{display:none}

/* === UI polish desktop + mobile (ss41–ss44) === */
/* Desktop: topbar/nav seperti versi stabil (semua item, tanpa scrollbar) */
.topbar{
  height:auto;min-height:64px;flex-wrap:wrap;gap:8px 12px;padding:10px 20px;
}
.topnav{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  align-items:center;
  margin-left:auto;
  margin-right:16px;
  max-width:none;
  overflow:visible;
  width:auto;
}
.topnav a{
  white-space:nowrap;
  flex-shrink:0;
  /* style link klasik desktop (bukan chip mobile) */
  font-size:12px;
  color:#9bb4c0;
  padding:8px 12px;
  border-radius:10px;
  border:1px solid transparent;
  background:transparent;
  text-shadow:none;
  font-weight:500;
}
.topnav a:hover{color:#e8f7fc;border-color:var(--line);background:transparent}
.topnav a.active{
  color:#061016;
  background:linear-gradient(135deg,#dffbff,#6bdcf4);
  font-weight:700;
  border-color:transparent;
}

/* Admin list rows: horizontal, hemat vertikal */
.admin-list .admin-row,
.privacy-tree .admin-row,
#linkTree .admin-row,
#userList .admin-row{
  display:flex !important;
  flex-direction:row;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:8px 14px;
  padding:8px 10px;
}
.admin-row > div:first-child{
  flex:1 1 auto;
  min-width:0;
}
.admin-row > div:first-child strong,
.admin-row .admin-row-main{
  display:inline;
}
.admin-row small{
  display:inline;
  margin-left:6px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:min(42vw,280px);
  vertical-align:baseline;
}
.admin-row .admin-row-actions,
.admin-row > div:last-child{
  display:flex;flex-wrap:wrap;gap:6px;align-items:center;
  flex:0 0 auto;margin-left:auto;
}

/* Tree parent: jumlah di kanan satu baris */
.pt-row{
  display:flex;align-items:center;gap:8px;flex-wrap:nowrap;
  width:100%;
}
.pt-row strong{flex:0 1 auto;min-width:0}
.pt-row .muted,
.pt-row small.muted{
  margin-left:auto;
  white-space:nowrap;
  flex-shrink:0;
  font-size:12px;
}

.link-coverage-box{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:6px 16px;
  align-items:start;
}
.link-coverage-box > div{margin:0 !important}

/* Admin forms: 2 kolom jika lebar cukup */
.admin-pane form,
#videoForm,#webForm,#alumniForm,#angForm{
  grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
}
.admin-pane form .field,
#videoForm .field,#webForm .field{min-width:0}
.admin-pane form button[type=submit],
.admin-pane form .btn{grid-column:1 / -1;justify-self:start}

/* Hero actions & filters hemat tinggi */
.hero-actions{flex-wrap:wrap}
.filters{flex-wrap:wrap;max-width:100%}
.toolbar{
  grid-template-columns:minmax(0,1fr) auto auto;
}

/* Student card meta satu baris di desktop */
.student-row{
  display:flex;align-items:center;gap:8px;flex-wrap:nowrap;
}
.student-row .student{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.student-row .class-badge{flex-shrink:0;white-space:nowrap}
.card-eng{flex-shrink:0;margin-left:auto}

@media (max-width:900px){
  .topbar{padding:8px 14px}
  .topnav{width:100%;order:3;padding-bottom:4px}
  .brand{order:1}
  .status,#shAuthSlot{order:2;margin-left:auto}
  .stats{grid-template-columns:repeat(3,1fr)}
  .toolbar{grid-template-columns:1fr}
  .link-coverage-box{grid-template-columns:1fr}
}

@media (max-width:620px){
  .topbar{padding:8px 12px}
  /* jangan sembunyikan navigasi — biarkan scroll horizontal */
  .status{display:none !important}
  .topnav a{padding:6px 8px;font-size:11px}
  .stats{grid-template-columns:repeat(2,1fr) !important}
  .admin-list .admin-row,
  #linkTree .admin-row{
    align-items:flex-start;
  }
  .admin-row small{
    display:block;
    margin-left:0;
    margin-top:2px;
    white-space:normal;
    max-width:100%;
  }
  .admin-row .admin-row-actions,
  .admin-row > div:last-child{
    margin-left:0;
    width:100%;
    justify-content:flex-start;
  }
  .pt-row{flex-wrap:wrap}
  .pt-row .muted{margin-left:0;width:100%}
  .student-row{flex-wrap:wrap}
  .hero h1{font-size:clamp(36px,11vw,56px);letter-spacing:-2px}
  .sh-tour-toggle,.sh-health-btn{font-size:10px;padding:6px 10px}
  .filters{overflow-x:auto;flex-wrap:nowrap;justify-content:flex-start}
}

/* Prevent fixed controls covering content */
body{padding-bottom:72px}


/* === Admin hero: profil di kanan (ss43) === */
.admin-hero-row{
  display:flex;align-items:flex-start;justify-content:space-between;
  gap:20px;flex-wrap:wrap;margin-bottom:8px;
}
.admin-hero-text{flex:1 1 280px;min-width:0}
.admin-who{
  display:flex;align-items:center;gap:12px;flex:0 1 320px;
  margin:0;padding:12px 14px;max-width:100%;
}
.admin-who-meta{min-width:0}
.admin-who-meta #adminName{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Coverage hemat horizontal (ss42) */
.link-coverage-box{
  display:flex;flex-direction:column;gap:8px;
  margin:0 0 12px;padding:10px 12px;
  border:1px solid rgba(125,227,255,.2);border-radius:12px;font-size:13px;
}
.cov-years{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:6px 18px;
}
.cov-year{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cov-accounts{font-size:12px;white-space:normal}

/* Topnav desktop: tampil semua item, tanpa scrollbar, tanpa batasan lebar ketat */
.topnav{
  display:flex !important;
  flex-wrap:wrap !important;
  overflow:visible !important;
  gap:4px;
  max-width:none !important;
  width:auto !important;
  scrollbar-width:none;
  margin-left:auto;
}
.topnav a{flex:0 0 auto}

/* Share float jangan numpuk teks (ss41) */
.sh-share-bar, .share-float, #shShareBar{
  z-index:8500;
}
@media (max-width:720px){
  .sh-share-bar, #shShareBar, .share-float{
    bottom:56px !important;
    right:10px !important;
    transform:scale(.92);
  }
  .admin-hero-row{flex-direction:column}
  .admin-who{width:100%;flex:1 1 auto}
  .cov-year{white-space:normal}
}

/* pt-row count selalu di kanan satu baris (ss44) */
.pt-row{
  display:flex;align-items:center;gap:8px;
  width:100%;
}
.pt-row > strong{flex:1 1 auto;min-width:0}
.pt-row > .muted,
.pt-row > small.muted{
  margin-left:auto !important;
  flex:0 0 auto;
  white-space:nowrap;
}


/* Counts & meta: dekat judul tree (bukan ujung kanan) — desktop */
.pt-row{
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
  flex-wrap:nowrap !important;
  width:100%;
  justify-content:flex-start !important;
}
.pt-row > strong{
  flex:0 1 auto !important;
  min-width:0;
}
.pt-row > .muted,
.pt-row > small.muted,
.pt-row .pt-count{
  margin-left:0.4em !important;
  flex:0 0 auto !important;
  white-space:nowrap !important;
  font-size:12px;
}

/* Angkatan form actions satu baris di desktop */
#angForm, #alumniForm, #webForm, #videoForm{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:10px;
  align-items:end;
}
#angForm .field:first-child{grid-column:1 / span 1}
.admin-form-actions{
  display:flex;flex-wrap:nowrap;gap:8px;align-items:center;
  grid-column:auto;
}
@media (min-width:900px){
  .admin-form-actions{flex-wrap:nowrap}
  .muted.one-line-desktop,
  #alumniList > p.muted,
  .admin-pane > p.muted.lead-msg{
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .sync-help{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;align-items:start}
  .sync-actions{display:flex;flex-wrap:wrap;gap:8px}
  #userLinkSummary .link-coverage-box{max-width:100%}
  .user-row-main{display:flex;flex-wrap:nowrap;gap:8px;align-items:baseline}
  .user-row-main .user-extra{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
@media (max-width:720px){
  .pt-row{flex-wrap:wrap !important}
  .admin-form-actions{flex-wrap:wrap}
  .muted.one-line-desktop,
  #alumniList > p.muted{white-space:normal}
  .sync-help{grid-template-columns:1fr}
}

/* Pengumuman */
.ann-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-top:12px}
.ann-editor{
  min-height:140px;max-height:320px;overflow:auto;padding:12px;
  border:1px solid var(--line);border-radius:12px;background:rgba(0,0,0,.25);
  color:#e8f4f8;line-height:1.5;outline:none;
  cursor:text;
  -webkit-user-select:text;user-select:text;
  pointer-events:auto;
  white-space:pre-wrap;word-break:break-word;
}
.ann-editor:focus{
  border-color:#5ec8ff;
  box-shadow:0 0 0 2px rgba(94,200,255,.2);
}
.ann-editor:empty:before{
  content:attr(data-placeholder);color:#6a8490;
  pointer-events:none;
}
.ann-editor img{max-width:100%;border-radius:8px;margin:6px 0}
.ann-editor-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:6px}
.ann-fieldset{grid-column:1/-1;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:0}
.ann-fieldset legend{padding:0 6px;color:#9db5c0;font-size:12px}
.ann-fieldset .check{display:flex;gap:8px;align-items:center;margin:6px 0;font-size:13px}
.ann-student-tree.is-collapsed{display:none}
.ann-student-tree:not(.is-collapsed){display:block}

.sh-ann-splash{
  position:fixed;inset:0;z-index:12000;
  background:rgba(2,8,14,.72);display:flex;align-items:center;justify-content:center;
  padding:16px;backdrop-filter:blur(6px);
}
.sh-ann-splash[hidden]{display:none!important}
.sh-ann-card{
  width:min(520px,100%);max-height:min(80vh,640px);overflow:auto;
  background:linear-gradient(160deg,#0f1c28,#0a141c);
  border:1px solid rgba(125,227,255,.35);border-radius:18px;
  padding:18px 18px 14px;box-shadow:0 20px 60px rgba(0,0,0,.45);
  animation:shAnnIn .35s ease;
}
@keyframes shAnnIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.sh-ann-card h2{margin:0 0 10px;font-size:1.25rem;letter-spacing:-.3px}
.sh-ann-body{font-size:14px;line-height:1.55;color:#c5d8e0}
.sh-ann-body img{max-width:100%;border-radius:10px}
.sh-ann-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}
.sh-ann-timer{font-size:12px;color:#8aa3ae}
.sh-ann-close{border:1px solid var(--line);background:rgba(255,255,255,.08);color:#e8f4f8;border-radius:10px;padding:8px 14px;cursor:pointer}
.sh-ann-close:hover{border-color:#5ec8ff}

/* ========== ADMIN PANEL UI v2 (modern, fluid, responsive) ========== */
body.page-skills .skills-main{
  max-width:1100px;
  margin:0 auto;
  padding:0 20px 100px;
}

.admin-hero-row{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px 24px;
  flex-wrap:wrap;
  margin:12px 0 8px;
}
.admin-hero-text h1{
  font-size:clamp(1.75rem,3vw,2.35rem);
  letter-spacing:-1px;
  margin:4px 0 8px;
}
.admin-who{
  display:flex;
  align-items:center;
  gap:12px;
  padding:10px 14px;
  border-radius:16px;
  border:1px solid var(--line);
  background:rgba(12,22,30,.9);
  max-width:100%;
}
.admin-who-meta{min-width:0;flex:1}
.admin-who-meta #adminName{
  font-weight:700;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:200px;
}

/* Tabs: sticky, scroll, pill */
#adminTabs.filters,
#adminTabs{
  position:sticky;
  top:0;
  z-index:40;
  display:flex;
  flex-wrap:nowrap;
  gap:6px;
  padding:8px;
  margin:12px 0 18px;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
  background:rgba(8,14,20,.92);
  border:1px solid var(--line);
  border-radius:14px;
  backdrop-filter:blur(12px);
}
#adminTabs .filter{
  flex:0 0 auto;
  height:36px;
  padding:0 14px;
  border-radius:10px;
  font-size:13px;
  font-weight:600;
  white-space:nowrap;
  color:#9db5c0;
  background:transparent;
  border:0;
  cursor:pointer;
}
#adminTabs .filter:hover{color:#e8f4f8;background:rgba(255,255,255,.05)}
#adminTabs .filter.active{
  color:#061016;
  background:linear-gradient(135deg,#c5f3ff,#7de3ff);
  box-shadow:0 4px 16px rgba(125,227,255,.25);
}

/* Pane cards */
.admin-pane.summary-card,
.summary-card.admin-pane{
  border-radius:18px;
  padding:18px 18px 20px;
  margin-bottom:16px;
  border:1px solid rgba(125,227,255,.12);
  background:linear-gradient(165deg,rgba(14,26,36,.95),rgba(8,14,20,.92));
}
.admin-pane h3{
  margin:0 0 6px;
  font-size:1.15rem;
  letter-spacing:-.3px;
  font-weight:700;
}
.admin-pane > p.muted,
.admin-pane .pane-lead{
  margin:0 0 14px;
  font-size:13px;
  line-height:1.5;
  color:#8aa3ae;
}

/* Forms: clean grid */
.admin-pane form,
.ann-form,
#videoForm,#webForm,#alumniForm,#angForm,#annForm{
  display:grid !important;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:12px 14px;
  align-items:end;
  margin-top:8px;
}
.admin-pane .field,
.ann-form .field{
  display:flex;
  flex-direction:column;
  gap:6px;
  min-width:0;
}
.admin-pane .field > span,
.ann-form .field > span{
  font-size:11px;
  font-weight:600;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:#7a96a4;
}
.admin-pane .field input,
.admin-pane .field select,
.admin-pane .field textarea,
.ann-form .field input,
.ann-form .field select,
.ann-editor{
  width:100%;
  min-height:42px;
  border-radius:11px;
  border:1px solid rgba(125,227,255,.18);
  background:rgba(0,0,0,.28);
  color:#e8f4f8;
  padding:10px 12px;
  font:inherit;
  font-size:14px;
  transition:border-color .15s, box-shadow .15s;
}
.admin-pane .field input:focus,
.admin-pane .field select:focus,
.ann-editor:focus{
  outline:none;
  border-color:#5ec8ff;
  box-shadow:0 0 0 3px rgba(94,200,255,.15);
}

/* Action row under forms */
.admin-form-actions,
.admin-pane form > div:has(button),
#videoForm > div:has(button),
#webForm > div:has(button){
  display:flex !important;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  grid-column:1 / -1;
  margin-top:4px;
}
.admin-pane .btn,
.admin-form-actions .btn{
  height:40px;
  padding:0 16px;
  border-radius:11px;
  font-weight:600;
  font-size:13px;
  cursor:pointer;
  border:1px solid transparent;
}
.admin-pane .btn-primary{
  background:linear-gradient(135deg,#9eebff,#5ec8ff);
  color:#061016;
  border:0;
}
.admin-pane .btn-ghost{
  background:rgba(255,255,255,.06);
  color:#c5d8e0;
  border:1px solid var(--line);
}
.admin-pane .btn-ghost:hover{border-color:#5ec8ff;color:#fff}

/* Search */
.admin-search-wrap{
  grid-column:1 / -1;
  margin:16px 0 10px !important;
}
.admin-search-wrap input.admin-list-search{
  width:100%;
  height:44px;
  border-radius:12px;
  border:1px solid rgba(125,227,255,.2);
  background:rgba(0,0,0,.3);
  color:#e8f4f8;
  padding:0 14px;
  font-size:14px;
}

/* Lists & rows */
.admin-list{
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-top:8px;
}
.admin-row{
  display:flex !important;
  flex-direction:row !important;
  flex-wrap:nowrap;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 14px !important;
  border-radius:12px;
  border:1px solid rgba(125,227,255,.1);
  background:rgba(255,255,255,.03);
  transition:background .15s, border-color .15s;
}
.admin-row:hover{
  background:rgba(125,227,255,.05);
  border-color:rgba(125,227,255,.22);
}
.admin-row > div:first-child{flex:1;min-width:0}
.admin-row strong{font-size:13.5px;font-weight:650}
.admin-row small{display:block;margin-top:2px;color:#7a96a4;font-size:12px;line-height:1.35}
.admin-row > div:last-child,
.admin-row .admin-row-actions{
  display:flex;
  flex-wrap:nowrap;
  gap:6px;
  flex-shrink:0;
  margin-left:0 !important;
}

/* Edit / delete button contrast */
.admin-row button,
.admin-list button[data-edit-vid],
.admin-list button[data-edit-web],
.admin-list button[data-edit-al],
.admin-list button[data-edit-ang],
.admin-list button[data-edit-ann],
.admin-list button[data-edit-link]{
  border:1px solid rgba(125,227,255,.25) !important;
  background:rgba(94,200,255,.1) !important;
  color:#9ee7ff !important;
  border-radius:8px !important;
  padding:6px 12px !important;
  font-size:12px !important;
  font-weight:600;
  cursor:pointer;
}
.admin-list button[data-del-vid],
.admin-list button[data-del-web],
.admin-list button[data-del-al],
.admin-list button[data-del-ang],
.admin-list button[data-del-ann],
.admin-list button[data-unlink],
.admin-row button[data-del-vid],
.admin-row button[data-del-web],
.admin-row button[data-del-al],
.admin-row button[data-del-ang],
.admin-row button[data-del-ann],
.admin-row button[data-unlink]{
  border:1px solid rgba(255,120,120,.3) !important;
  background:rgba(255,80,80,.12) !important;
  color:#ffb0b0 !important;
}

/* Tree */
.pt-node{margin:2px 0}
.pt-row{
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
  padding:6px 4px !important;
  border-radius:8px;
  justify-content:flex-start !important;
}
.pt-row:hover{background:rgba(255,255,255,.03)}
.pt-toggle{
  width:28px;height:28px;
  border-radius:8px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.05);
  color:#9db5c0;
  cursor:pointer;
  flex-shrink:0;
  font-size:12px;
}
.pt-row > strong{font-size:13px;font-weight:650}
.pt-row > .muted,
.pt-row > small.muted,
.pt-count{
  margin-left:0.35em !important;
  color:#7a96a4 !important;
  font-size:12px !important;
  white-space:nowrap;
}
.pt-children{padding-left:12px;border-left:1px solid rgba(125,227,255,.1);margin-left:12px}
.pt-children.is-collapsed{display:none}

/* Coverage box */
.link-coverage-box{
  display:grid;
  grid-template-columns:1fr;
  gap:8px;
  padding:12px 14px;
  border-radius:14px;
  border:1px solid rgba(125,227,255,.15);
  background:rgba(0,0,0,.2);
  margin-bottom:14px;
}
.cov-years{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:6px 16px;
}
.cov-year{font-size:13px;line-height:1.4}
.cov-accounts{font-size:12px;color:#8aa3ae}

/* Sync / announce */
.sync-help{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:10px 16px;
  margin-bottom:10px;
}
.sync-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:10px;
}
.ann-fieldset{
  grid-column:1/-1;
  border:1px solid rgba(125,227,255,.15);
  border-radius:14px;
  padding:12px 14px;
}
.ann-editor{min-height:160px}

/* Status text */
#vidStatus,#webStatus,#alumniStatus,#angStatus,#annStatus,#syncMsg{
  font-size:13px;
  margin-top:8px;
  color:#8ff5bd;
}

/* Gate login */
#gate.summary-card{
  max-width:420px;
  margin:24px auto;
  text-align:center;
  padding:28px 24px;
}

/* Desktop: wider use of space */
@media (min-width:960px){
  body.page-skills .skills-main{max-width:1120px}
  .cov-years{grid-template-columns:1fr 1fr}
  .admin-row{flex-wrap:nowrap}
  .admin-row small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}

/* Tablet */
@media (max-width:900px){
  body.page-skills .skills-main{padding:0 14px 90px}
  .admin-hero-row{flex-direction:column}
  .admin-who{width:100%}
  #adminTabs{top:0}
}

/* Mobile */
@media (max-width:620px){
  body.page-skills .skills-main{padding:0 12px 100px}
  .admin-pane.summary-card{padding:14px}
  .admin-pane form,
  #videoForm,#webForm,#alumniForm,#angForm,#annForm{
    grid-template-columns:1fr !important;
  }
  .admin-row{
    flex-wrap:wrap !important;
    align-items:flex-start !important;
  }
  .admin-row > div:last-child{
    width:100%;
    justify-content:flex-start;
    margin-top:6px;
  }
  .admin-row small{white-space:normal}
  .pt-children{padding-left:8px;margin-left:8px}
  #adminTabs .filter{padding:0 11px;font-size:12px;height:34px}
  .cov-year{white-space:normal}
}

.sh-ann-float-btn{
  position:fixed;left:14px;bottom:72px;z-index:11000;
  display:flex;align-items:center;gap:8px;
  padding:10px 14px;border-radius:999px;
  border:1px solid rgba(125,227,255,.35);
  background:rgba(10,20,30,.92);color:#e8f4f8;
  box-shadow:0 8px 28px rgba(0,0,0,.35);
  cursor:pointer;font-size:13px;font-weight:600;
  max-width:min(90vw,280px);
}
.sh-ann-float-btn:hover{border-color:#5ec8ff;background:rgba(20,40,55,.95)}
.sh-ann-float-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ann-stu-check{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px;cursor:pointer}
.ann-stu-check input{accent-color:#5ec8ff}
.link-edit-panel.is-collapsed{display:none!important}
.link-edit-panel:not(.is-collapsed){display:block}
@media (max-width:620px){
  .sh-ann-float-btn{left:10px;bottom:64px;padding:8px 12px;font-size:12px}
}

/* Users tab compact + Atur panel */
.user-perm-panel.is-collapsed{display:none!important}
.user-perm-panel:not(.is-collapsed){
  display:block;
  padding:10px 12px;
  margin:4px 0 10px 12px;
  border-left:2px solid rgba(125,227,255,.25);
  border-radius:0 10px 10px 0;
  background:rgba(0,0,0,.2);
}
.user-row-compact{
  padding:8px 10px !important;
  min-height:0 !important;
  align-items:center !important;
}
.user-row-main{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
.user-row-av{width:32px;height:32px;border-radius:50%;object-fit:cover;flex-shrink:0}
.user-row-av-ph{display:grid;place-items:center;background:rgba(255,255,255,.06);font-size:14px}
.user-row-text{min-width:0;display:flex;flex-direction:column;gap:2px;line-height:1.25}
.user-row-text strong{font-size:13px}
.user-row-meta{font-size:11px;color:#7a96a4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:min(60vw,420px)}
.user-admin-tag{font-size:11px;color:#7de3ff;font-style:normal;font-weight:600}
.btn-atur{
  flex-shrink:0;
  border:1px solid rgba(125,227,255,.3)!important;
  background:rgba(94,200,255,.12)!important;
  color:#9ee7ff!important;
  border-radius:8px!important;
  padding:6px 12px!important;
  font-size:12px!important;
  font-weight:600;
  cursor:pointer;
}
.user-perm-grid{display:flex;flex-wrap:wrap;gap:8px 14px;margin:8px 0}
.user-perm-item{display:flex;align-items:center;gap:6px;font-size:12px;color:#b7cdd6}
.user-node{margin:0}
.user-node .admin-row{margin:0}

.admin-link-preview, .admin-link-open {
  color: #9ee7ff;
  text-decoration: none;
  cursor: pointer;
}
.admin-link-preview:hover, .admin-link-open:hover {
  text-decoration: underline;
  color: #c5f3ff;
}
.link-row { display: flex !important; flex-direction: column !important; align-items: stretch !important; }
.link-row-top { width: 100%; }
.link-edit-panel { align-self: flex-start; width: min(100%, 520px); }
.link-edit-panel.is-collapsed { display: none !important; }
@media (max-width: 620px) {
  .one-line-desktop { white-space: normal !important; }
}

/* Absensi */
.att-list{display:grid;gap:12px}
.att-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:10px}
.att-badge{font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px;background:rgba(125,227,255,.15);color:#9ee7ff;white-space:nowrap}
.att-card[data-status="missed"] .att-badge{background:rgba(255,120,120,.15);color:#ffb0b0}
.att-card[data-status="done"] .att-badge{background:rgba(143,245,189,.15);color:#8ff5bd}
.att-fx{position:fixed;inset:0;z-index:13000;pointer-events:none}
.att-toast{
  position:fixed;left:50%;bottom:28px;transform:translateX(-50%);
  z-index:13001;padding:12px 18px;border-radius:999px;
  background:rgba(10,20,30,.94);border:1px solid rgba(125,227,255,.4);
  color:#e8f4f8;font-weight:600;box-shadow:0 12px 40px rgba(0,0,0,.4);
}
.att-admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}

/* Weekday checkboxes — label di tengah bawah */
.weekday-checks{
  display:flex;
  flex-wrap:wrap;
  gap:10px 12px;
  margin-top:8px;
}
.wd-item{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  gap:6px;
  min-width:44px;
  font-size:12px;
  color:#9db5c0;
  cursor:pointer;
  user-select:none;
}
.wd-item input{
  width:18px;
  height:18px;
  accent-color:#5ec8ff;
  margin:0;
  cursor:pointer;
}
.wd-item span{text-align:center;line-height:1.1}

/* Tri-state student tree */
.sh-cb-tree .sh-cb-row{
  display:flex;
  align-items:center;
  gap:8px;
  padding:4px 0;
}
.sh-cb-tree .sh-cb-label{
  display:flex;
  align-items:center;
  gap:8px;
  cursor:pointer;
  flex:1;
  min-width:0;
}
.sh-cb-tree input[type=checkbox]{
  width:16px;
  height:16px;
  accent-color:#3b9eff;
  cursor:pointer;
  flex-shrink:0;
}
.sh-cb-tree label.leaf{
  display:flex;
  align-items:center;
  gap:8px;
  padding:3px 0 3px 28px;
  font-size:13px;
  cursor:pointer;
}

/* Absensi / Pengumuman student tree — layout sama (lebar penuh, kiri) */
.att-student-fieldset{
  grid-column:1 / -1;
  width:100%;
  box-sizing:border-box;
}
.att-student-fieldset .check{
  display:flex;
  gap:8px;
  align-items:center;
  margin:6px 0;
  font-size:13px;
  justify-content:flex-start;
  text-align:left;
}
.att-student-tree,
.ann-student-tree{
  display:block;
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  text-align:left;
  margin-top:8px;
}
.att-student-tree.is-collapsed,
.ann-student-tree.is-collapsed,
#chatRoomStudentTree.is-collapsed{
  display:none !important;
}
#chatRoomStudentTree[hidden]{display:none !important}

/* Tree list items full width, left aligned */
.sh-cb-tree{
  width:100%;
}
.sh-cb-tree .pt-node{
  width:100%;
}
.sh-cb-tree .pt-row{
  justify-content:flex-start;
  width:100%;
}
.sh-cb-tree .sh-cb-label{
  flex:1;
  min-width:0;
}
.sh-cb-tree .sh-cb-label strong{
  font-weight:600;
}
.sh-cb-tree label.leaf{
  width:100%;
  box-sizing:border-box;
}

/* ===== About page ===== */
.about-main{max-width:980px}
.about-hero-card{
  display:grid;
  grid-template-columns: minmax(160px,240px) 1fr;
  gap:28px;
  align-items:center;
  padding:28px;
  border:1px solid var(--line);
  border-radius:20px;
  background:linear-gradient(145deg,rgba(125,227,255,.06),rgba(0,0,0,.25));
  margin-bottom:20px;
}
.about-photo-wrap{
  border-radius:18px;
  overflow:hidden;
  border:1px solid rgba(125,227,255,.25);
  box-shadow:0 12px 40px rgba(0,0,0,.35);
  aspect-ratio:1;
  background:#0a1520;
}
.about-photo{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.about-hero-copy h1{margin:6px 0 8px;font-size:clamp(1.6rem,3vw,2.1rem)}
.about-role{color:#9db5c0;font-size:14px;margin:0 0 10px}
.about-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.about-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:14px;
}
.about-block h2{font-size:1.15rem;margin:6px 0 10px}
.about-list{
  margin:0;
  padding-left:1.15rem;
  color:#9db5c0;
  font-size:13px;
  line-height:1.7;
}
.about-list a{color:#7de3ff}
.about-modal{
  position:fixed;inset:0;z-index:2000;
  display:flex;align-items:center;justify-content:center;
  padding:16px;
}
.about-modal[hidden]{display:none!important}
.about-modal-backdrop{
  position:absolute;inset:0;
  background:rgba(0,0,0,.65);
  backdrop-filter:blur(4px);
}
.about-modal-panel{
  position:relative;z-index:1;
  width:min(560px,100%);
  max-height:min(85vh,720px);
  overflow:auto;
  padding:20px 22px;
}
.about-modal-head{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-bottom:4px;
}
.about-modal-head h2{margin:0;font-size:1.2rem}
.about-ver-item{
  border-top:1px solid rgba(125,227,255,.12);
  padding:12px 0;
}
.about-ver-item h3{margin:0 0 6px;font-size:14px;color:#e8f4f8}
.about-ver-item ul{margin:0;padding-left:1.15rem;color:#9db5c0;font-size:13px;line-height:1.6}
.about-modal-foot{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
@media (max-width:720px){
  .about-hero-card{grid-template-columns:1fr;text-align:center}
  .about-photo-wrap{max-width:220px;margin:0 auto}
  .about-actions{justify-content:center}
  .about-grid{grid-template-columns:1fr}
}

/* Unified checkbox size (admin forms + tree) */
.check input[type=checkbox],
.ann-fieldset .check input[type=checkbox],
.att-student-fieldset .check input[type=checkbox],
.sh-cb-tree input[type=checkbox],
.weekday-checks input[type=checkbox]{
  width:16px;
  height:16px;
  min-width:16px;
  min-height:16px;
  accent-color:#3b9eff;
  cursor:pointer;
  flex-shrink:0;
  margin:0;
}
.check,
.ann-fieldset .check,
.att-student-fieldset .check{
  font-size:13px;
  line-height:1.35;
  gap:8px;
  align-items:center;
}
.sh-cb-tree .sh-cb-label,
.sh-cb-tree label.leaf{
  font-size:13px;
}

/* Support page */
.support-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
}
.support-pay-list li{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
  margin-bottom:10px;
}
.support-num{font-family:ui-monospace,monospace;color:#e8f4f8}
.btn-copy{padding:4px 10px!important;font-size:12px!important}
.support-qris-wrap{
  display:flex;justify-content:center;
  padding:12px;
  background:#fff;
  border-radius:14px;
  margin-top:8px;
}
.support-qris-img{width:min(280px,100%);height:auto;display:block}
@media (max-width:720px){
  .support-grid{grid-template-columns:1fr}
}

/* Gallery: kasih uang jajan */
.btn-jajan{
  display:inline-flex;align-items:center;gap:6px;
  margin-top:8px;padding:6px 12px;font-size:12px;
  border-radius:999px;border:1px solid rgba(125,227,255,.35);
  background:rgba(125,227,255,.08);color:#dffbff;cursor:pointer;
}
.btn-jajan:hover{border-color:#5ec8ff;background:rgba(125,227,255,.14)}
.qris-modal{
  position:fixed;inset:0;z-index:13000;
  display:flex;align-items:center;justify-content:center;
  padding:16px;background:rgba(0,0,0,.7);
}
.qris-modal[hidden]{display:none!important}
.qris-modal-panel{
  background:linear-gradient(160deg,#0f1c28,#0a141c);
  border:1px solid rgba(125,227,255,.3);border-radius:16px;
  padding:16px;max-width:360px;width:100%;text-align:center;
}
.qris-modal-panel .qris-img-wrap{
  display:flex;align-items:center;justify-content:center;
  margin:12px 0;padding:12px;background:#fff;border-radius:12px;
  min-height:120px;
}
.qris-modal-panel img,
.qris-modal-panel #qrisModalImg{
  /* proporsional asli — jangan dipaksa kotak agar QRIS tetap bisa di-scan */
  width:auto!important;height:auto!important;
  max-width:min(320px,86vw);max-height:min(420px,70vh);
  object-fit:contain;display:block;margin:0 auto;background:#fff;
}

/* Popup profil siswa (klik nama di gallery) */
.student-name-btn{
  appearance:none;border:0;background:transparent;padding:0;margin:0;
  font:inherit;font-weight:700;font-size:15px;color:inherit;cursor:pointer;
  text-align:left;text-decoration:underline;text-decoration-color:rgba(125,227,255,.35);
  text-underline-offset:3px;
}
.student-name-btn:hover{color:#b8f0ff;text-decoration-color:#5ec8ff}
.student-profile-modal{
  position:fixed;inset:0;z-index:13000;
  display:flex;align-items:center;justify-content:center;
  padding:16px;background:rgba(0,0,0,.72);
}
.student-profile-modal[hidden]{display:none!important}
.student-profile-panel{
  position:relative;max-width:420px;width:100%;max-height:min(90vh,640px);
  overflow:auto;padding:20px 18px 16px;
  background:linear-gradient(160deg,#0f1c28,#0a141c);
  border:1px solid rgba(125,227,255,.3);border-radius:16px;
}
.student-profile-panel .sp-close{
  position:absolute;top:10px;right:10px;min-width:36px;padding:6px 10px;
}
.sp-head{display:flex;gap:14px;align-items:center;padding-right:36px}
.sp-photo-wrap{
  width:112px;height:112px;border-radius:50%;overflow:hidden;flex-shrink:0;
  border:3px solid rgba(125,227,255,.4);background:rgba(8,17,24,.9);
  box-shadow:0 8px 24px rgba(0,0,0,.35);
}
.sp-photo-wrap img{width:100%;height:100%;object-fit:cover;display:block}
.sp-photo-fallback{
  width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  font-size:42px;background:linear-gradient(145deg,#1a2e3a,#0c1820);
}
.sp-contact{margin-top:14px}
.sp-stats{
  display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px;
}
.sp-stat{
  text-align:center;padding:10px 6px;border-radius:12px;
  border:1px solid rgba(125,227,255,.2);background:rgba(0,0,0,.25);
}
.sp-stat b{display:block;font-size:20px;color:#e8f7fc;letter-spacing:-0.5px}
.sp-stat span{font-size:10px;color:#8aa0ab;text-transform:uppercase;letter-spacing:0.6px}
.sp-qris{margin-top:14px;text-align:center}

/* Support Us — Dana/GoPay + QRIS sejajar */
.support-row{
  display:flex;
  flex-wrap:wrap;
  align-items:stretch;
  gap:20px 28px;
  padding:18px 20px;
}
.support-pay{flex:1 1 220px;min-width:0}
.support-h2{margin:6px 0 12px;font-size:1.15rem}
.support-pay-list{
  list-style:none;margin:0;padding:0;
  display:flex;flex-direction:column;gap:10px;
  justify-content:center;
}
.support-pay-list li{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;
  font-size:13px;color:#c5d8e0;
}
.support-pay-list strong{min-width:52px;color:#e8f4f8}
.support-num{font-family:ui-monospace,monospace;color:#e8f4f8;letter-spacing:.02em}
.support-note{font-size:12px;margin:12px 0 0}
.support-qris{
  flex:0 0 auto;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.support-qris-inner{
  display:flex;
  align-items:center;
  gap:12px;
  margin-top:6px;
}
.support-qris-frame{
  background:#fff;
  border-radius:10px;
  padding:6px;
  line-height:0;
  border:1px solid rgba(125,227,255,.2);
}
.support-qris-frame{
  cursor:zoom-in;
  border:0;
  background:#fff;
  border-radius:10px;
  padding:8px;
  line-height:0;
  border:1px solid rgba(125,227,255,.2);
}
.support-qris-img{
  width:160px;
  height:160px;
  object-fit:contain;
  display:block;
  image-rendering:auto;
}
.support-qris-actions{
  display:flex;
  flex-direction:column;
  gap:6px;
  align-items:flex-start;
}
.support-qris-large{
  width:min(320px,72vw);
  height:auto;
  aspect-ratio:1;
  object-fit:contain;
  background:#fff;
  border-radius:12px;
  padding:10px;
  box-sizing:border-box;
}
.support-qris-lightbox{max-width:380px}
.btn-qris-dl{padding:6px 12px!important;font-size:12px!important;white-space:nowrap}
@media (max-width:560px){
  .support-qris-inner{flex-direction:column;align-items:flex-start}
  .support-qris-img{width:140px;height:140px}
}

/* ===== Custom scrollbar (tema) ===== */
html{
  scrollbar-width: thin;
  scrollbar-color: var(--scroll-thumb, #3a7a9a) var(--scroll-track, #0a1218);
}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-track{background:var(--scroll-track,#0a1218)}
*::-webkit-scrollbar-thumb{
  background:var(--scroll-thumb,#3a7a9a);
  border-radius:999px;
  border:2px solid var(--scroll-track,#0a1218);
}
*::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover,#5ec8ff)}

/* ===== Theme tokens ===== */
:root, [data-theme="youth"]{
  --bg:#070d12;--bg2:#0b151d;--panel:rgba(15,27,36,.72);
  --line:rgba(177,205,218,.13);--text:#eef7fb;--muted:#8fa7b4;
  --accent:#5ec8ff;--accent2:#7dffb3;
  --scroll-track:#0a1218;--scroll-thumb:#2d6f8c;--scroll-thumb-hover:#5ec8ff;
  --theme-label:"Muda";
}
[data-theme="adult"]{
  --bg:#0f1419;--bg2:#161d26;--panel:rgba(22,30,40,.88);
  --line:rgba(180,190,200,.16);--text:#f0f2f5;--muted:#9aa3ad;
  --accent:#6ea8fe;--accent2:#8fd3b0;
  --scroll-track:#121820;--scroll-thumb:#4a6a8a;--scroll-thumb-hover:#6ea8fe;
  --theme-label:"Dewasa";
}
[data-theme="senior"]{
  --bg:#1a1814;--bg2:#242018;--panel:rgba(40,36,28,.92);
  --line:rgba(220,200,160,.2);--text:#fff8e8;--muted:#c4b89a;
  --accent:#f0c14b;--accent2:#e8a87c;
  --scroll-track:#1f1c16;--scroll-thumb:#8a7340;--scroll-thumb-hover:#f0c14b;
  --theme-label:"Lansia";
  font-size:17px;
}
[data-theme="senior"] body{font-size:1.05em;line-height:1.55}
[data-theme="senior"] .topnav a{padding:8px 10px}
[data-theme="senior"] .btn, [data-theme="senior"] button{font-size:15px}

/* Tema Terang — putih + biru */
[data-theme="light"]{
  --bg:#f4f8fc;
  --bg2:#e8f2fa;
  --panel:rgba(255,255,255,.92);
  --line:rgba(30,90,140,.14);
  --text:#0c2433;
  --muted:#4a6a7c;
  --accent:#1a8fd1;
  --accent2:#0d6e9f;
  --cyan:#1a8fd1;
  --cyan2:#0d7ab8;
  --silver:#2a4a5c;
  --scroll-track:#dceaf4;
  --scroll-thumb:#7eb6d6;
  --scroll-thumb-hover:#1a8fd1;
  --theme-label:"Terang";
  --shadow:0 16px 48px rgba(20,60,90,.12);
}
[data-theme="light"] body{
  background:
    radial-gradient(circle at 12% 10%, rgba(90,180,230,.18), transparent 42%),
    radial-gradient(circle at 88% 0%, rgba(40,130,200,.12), transparent 40%),
    linear-gradient(180deg, #f7fbfe 0%, #eef5fb 45%, #e6f0f8 100%) !important;
  color:var(--text);
}
[data-theme="light"] .bg-grid{opacity:.35;filter:none}
[data-theme="light"] .orb{opacity:.25}
[data-theme="light"] .topbar{
  background:rgba(255,255,255,.88) !important;
  border-bottom:1px solid rgba(30,90,140,.12);
  backdrop-filter:blur(12px);
}
[data-theme="light"] .topnav a{color:#1a3a4c}
[data-theme="light"] .topnav a:hover,
[data-theme="light"] .topnav a.active{color:#0a6aa8;background:rgba(26,143,209,.1)}
[data-theme="light"] .brand b,
[data-theme="light"] .brand small{color:#0c2433}
[data-theme="light"] .brand-mark{
  background:linear-gradient(135deg,#1a8fd1,#5ec8ff);
  color:#fff;
}
[data-theme="light"] .summary-card,
[data-theme="light"] .panel,
[data-theme="light"] .card,
[data-theme="light"] .work-card,
[data-theme="light"] .video-card,
[data-theme="light"] .skills-card,
[data-theme="light"] .stat-card{
  background:rgba(255,255,255,.9) !important;
  border-color:rgba(30,90,140,.12) !important;
  color:var(--text);
  box-shadow:0 8px 28px rgba(20,60,90,.08);
}
[data-theme="light"] .muted{color:#5a7a8c !important}
[data-theme="light"] .field input,
[data-theme="light"] .field select,
[data-theme="light"] .field textarea,
[data-theme="light"] input[type=text],
[data-theme="light"] input[type=search],
[data-theme="light"] input[type=url],
[data-theme="light"] select,
[data-theme="light"] textarea{
  background:rgba(255,255,255,.95) !important;
  color:#0c2433 !important;
  border-color:rgba(30,90,140,.2) !important;
}
[data-theme="light"] .btn-primary{
  background:linear-gradient(135deg,#1a8fd1,#0d7ab8);
  color:#fff;
  border-color:transparent;
}
[data-theme="light"] .btn-ghost{
  background:rgba(26,143,209,.08);
  color:#0d5f8c;
  border-color:rgba(26,143,209,.28);
}
[data-theme="light"] .theme-toggle{
  background:rgba(255,255,255,.95) !important;
  border-color:rgba(26,143,209,.35) !important;
  color:#0c2433 !important;
  box-shadow:0 8px 24px rgba(20,60,90,.12);
}
[data-theme="light"] .chat-bubble,
[data-theme="light"] .chat-win,
[data-theme="light"] .chat-panel{
  background:rgba(255,255,255,.94) !important;
  border-color:rgba(30,90,140,.12) !important;
  color:#0c2433;
}
[data-theme="light"] .chat-log{background:rgba(240,247,252,.9)}
[data-theme="light"] .sh-ap{
  background:rgba(240,248,255,.95) !important;
  border-color:rgba(26,143,209,.25) !important;
}
[data-theme="light"] .sh-ap-time{color:#1a5a7a !important}
[data-theme="light"] .sh-ap-seek{background:rgba(26,143,209,.25) !important}
[data-theme="light"] .sh-ann-splash .sh-ann-card{
  background:rgba(255,255,255,.97) !important;
  color:#0c2433;
  border-color:rgba(26,143,209,.2);
}
[data-theme="light"] .footer,
[data-theme="light"] footer{
  color:#4a6a7c;
  border-top-color:rgba(30,90,140,.12);
}
[data-theme="light"] .pill{
  background:rgba(26,143,209,.12);
  color:#0d5f8c;
  border-color:rgba(26,143,209,.25);
}
[data-theme="light"] .filter{
  background:rgba(255,255,255,.85);
  color:#1a3a4c;
  border-color:rgba(30,90,140,.18);
}
[data-theme="light"] .filter.active{
  background:rgba(26,143,209,.15);
  color:#0a6aa8;
  border-color:rgba(26,143,209,.4);
}
[data-theme="light"] .admin-tabs a,
[data-theme="light"] .admin-nav button{
  color:#1a3a4c;
}
@media (max-width:640px){
  [data-theme="light"] .topbar{padding-left:10px;padding-right:10px}
  [data-theme="light"] .summary-card{border-radius:16px}
}


/* Theme toggle — floating (hemat ruang header) */
.theme-toggle{
  position:fixed !important;
  left:14px;
  bottom:72px;
  z-index:9988;
  display:inline-flex;align-items:center;gap:6px;
  margin:0 !important;
  padding:8px 12px;border-radius:999px;
  border:1px solid rgba(157,235,255,.35);
  background:rgba(8,16,24,.92);
  color:#cfe8f0;font-size:12px;cursor:pointer;white-space:nowrap;
  box-shadow:0 8px 24px rgba(0,0,0,.35);
  order:unset !important;
}
.theme-toggle:hover{border-color:#6bdcf4;color:#fff}
.theme-toggle .theme-dot{
  width:10px;height:10px;border-radius:50%;
  background:var(--accent);box-shadow:0 0 8px var(--accent);
}
.theme-toggle .theme-label{max-width:90px;overflow:hidden;text-overflow:ellipsis}
@media (max-width:600px){
  .theme-toggle{
    left:10px;bottom:88px;
    padding:8px 10px;font-size:11px;
  }
  .theme-toggle .theme-label{display:none} /* ikon saja di HP */
}



/* Absensi admin session row — judul | jam | tombol ; detail di BAWAH */
/* Absensi memakai kelas yang sama dengan pengumuman (.ann-sess-*) */
.admin-row.att-sess-row{display:block!important;padding:12px 14px!important}
.att-sess-creator{display:block;font-size:11px;margin-top:2px;color:var(--muted,#8fa7b4)}
.att-stat-summary{font-size:12px;margin:0 0 10px;line-height:1.45}
.att-stat-block{margin:8px 0}
.att-stat-class{margin:6px 0 6px 4px}
.att-name-list{list-style:none;margin-left:0!important;padding-left:0!important}
.att-name-item{margin:4px 0}
.att-name-btn{
  background:none;border:none;color:var(--accent,#5ec8ff);cursor:pointer;
  padding:2px 0;font-size:13px;text-align:left;text-decoration:underline;
}
.att-note-pop{
  margin:6px 0 8px 8px;padding:10px 12px;border-radius:10px;
  border:1px solid var(--line);background:rgba(0,0,0,.35);font-size:12px;line-height:1.45;
}
.att-info-panel ul{margin:8px 0 0 18px}
/* Pengumuman list */
.ann-sess-row{display:block!important;padding:12px 14px!important}
.ann-sess-top{display:flex;flex-wrap:nowrap;align-items:center;gap:12px;width:100%}
.ann-sess-title{flex:1 1 auto;min-width:120px}
.ann-sess-actions{flex:0 0 auto;display:flex;flex-wrap:nowrap;gap:6px}
.ann-sess-detail{width:100%;margin-top:10px;padding:12px;border-radius:12px;border:1px solid var(--line);background:rgba(0,0,0,.22);font-size:13px}
.ann-sess-detail[hidden]{display:none!important}
@media (max-width:720px){
  .att-sess-top,.ann-sess-top{flex-wrap:wrap}
  .att-sess-actions,.ann-sess-actions{flex-wrap:wrap;justify-content:flex-start}
}

/* Absensi list: judul | jam check-in/out | tombol — satu baris */
.att-sess-top.ann-sess-top{
  display:flex;
  flex-wrap:nowrap;
  align-items:center;
  gap:12px 16px;
  width:100%;
}
.att-sess-times{
  flex:0 0 auto;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:2px;
  font-size:12px;
  line-height:1.35;
  color:#9db5c0;
  white-space:nowrap;
  min-width:9.5rem;
}
.att-time-line{display:flex;gap:6px;align-items:baseline}
.att-time-lab{
  display:inline-block;
  min-width:4.6rem;
  font-size:10px;
  font-weight:700;
  letter-spacing:.03em;
  text-transform:uppercase;
  color:#7a96a4;
}
.att-sess-top .ann-sess-title{flex:1 1 auto;min-width:0}
.att-sess-top .ann-sess-actions{flex:0 0 auto;margin-left:0}
@media (max-width:720px){
  .att-sess-top.ann-sess-top{flex-wrap:wrap;align-items:flex-start}
  .att-sess-times{order:3;width:100%;min-width:0;margin-top:4px}
  .att-sess-actions{order:2;width:100%}
}

/* Admin one-line helpers (desktop) */
.admin-one-line{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:100%;
}
.user-cleanup-row{
  display:flex;
  flex-wrap:nowrap;
  gap:16px 24px;
  align-items:center;
  font-size:12px;
}
.user-cleanup-row .check{margin:0;white-space:nowrap}
#btnStuTplSheet.btn,
a#btnStuTplSheet{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  line-height:1.2;
  padding:8px 14px;
  vertical-align:middle;
}
@media (max-width:720px){
  .admin-one-line{white-space:normal}
  .user-cleanup-row{flex-direction:column;align-items:flex-start;gap:8px}
  .user-cleanup-row .check{white-space:normal}
}

.about-link-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(160px,1fr));
  gap:10px;
}
.about-link-card{
  display:flex;
  flex-direction:column;
  gap:4px;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid rgba(125,227,255,.15);
  background:rgba(0,0,0,.2);
  text-decoration:none;
  color:inherit;
  transition:border-color .15s,background .15s;
}
.about-link-card:hover{
  border-color:rgba(125,227,255,.4);
  background:rgba(125,227,255,.06);
}
.about-link-card b{font-size:13px;color:#e8f4f8}
.about-link-card span{font-size:11px;color:#8fa7b4;line-height:1.3}

/* Support payment logos */
.support-pay-item{
  display:flex;
  align-items:center;
  gap:12px;
  list-style:none;
  margin:0 0 12px;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(125,227,255,.12);
  background:rgba(0,0,0,.18);
}
.support-pay-list{list-style:none;margin:0;padding:0}
.support-pay-item .support-num{display:block;font-size:14px;letter-spacing:.02em;margin-top:2px}
.pay-logo{flex-shrink:0;display:flex;line-height:0}
.pay-logo svg{display:block;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.25)}

/* Announce form */
.ann-body-field span,
.ann-body-field > span{text-align:left!important;justify-self:start}
.ann-form .ann-active-align{
  display:flex;
  align-items:center;
  align-self:end;
  height:42px;
  margin:0;
  gap:8px;
}
.ann-form label.field span{text-align:left;display:block}

/* Pengumuman: label & tools rata kiri (bukan tengah) */
.ann-form .ann-body-field{
  grid-column:1 / -1 !important;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  text-align:left !important;
  justify-items:start;
}
.ann-form .ann-body-field > span{
  display:block;
  width:100%;
  text-align:left !important;
  margin:0 0 6px;
  font-size:11px;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:#8fa7b4;
}
.ann-form .ann-editor-tools{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  justify-content:flex-start !important;
  text-align:left !important;
  width:100%;
  margin-top:8px;
}
.ann-form .ann-editor{width:100%;box-sizing:border-box}

/* Hero stack: dynamic thumbnails — kartu 3D ketebalan ~5px, depan & belakang */
.mini-card.mini-thumb{
  padding:0;
  overflow:visible;
  background:transparent;
  background-color:transparent;
  transform-style:preserve-3d;
}
.mini-card.mini-thumb .mini-card-3d{
  position:absolute;
  inset:0;
  transform-style:preserve-3d;
  border-radius:inherit;
}
.mini-card.mini-thumb .mini-face{
  position:absolute;
  inset:0;
  border-radius:inherit;
  overflow:hidden;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  background-color:rgba(8,17,24,.92);
  box-shadow:inset 0 0 0 1px rgba(197,238,247,.12);
}
/* tebal kartu ~16px — terlihat jelas saat rotateY */
.mini-card.mini-thumb .mini-face-front{
  transform:translateZ(8px);
}
.mini-card.mini-thumb .mini-face-back{
  transform:rotateY(180deg) translateZ(8px);
}
.mini-card.mini-thumb .mini-edge{
  position:absolute;
  top:0;
  bottom:0;
  width:16px;
  background:linear-gradient(180deg,#3d5a6a 0%,#1a2c38 40%,#0c1620 100%);
  box-shadow:inset 0 0 0 1px rgba(140,220,240,.2);
  transform-style:preserve-3d;
  pointer-events:none;
}
.mini-card.mini-thumb .mini-edge-left{
  left:0;
  transform-origin:left center;
  transform:rotateY(-90deg) translateZ(0px);
}
.mini-card.mini-thumb .mini-edge-right{
  right:0;
  left:auto;
  transform-origin:right center;
  transform:rotateY(90deg) translateZ(0px);
}
.mini-card.mini-thumb .mini-thumb-bg{
  position:absolute;
  inset:0;
  background-size:cover;
  background-position:center;
  transition:opacity .4s ease,transform .5s ease;
}
.mini-card.mini-thumb .mini-thumb-scrim{
  position:absolute;
  inset:0;
  background:linear-gradient(160deg,rgba(8,17,24,.15),rgba(8,17,24,.72) 55%,rgba(8,17,24,.88));
  pointer-events:none;
}
.mini-card.mini-thumb .mini-thumb-meta{
  position:absolute;
  left:16px;
  right:16px;
  bottom:14px;
  z-index:2;
  text-align:left;
}
.mini-card.mini-thumb .mini-thumb-meta span{
  font-size:9px;
  color:#8ee7fa;
  letter-spacing:1.5px;
  text-transform:uppercase;
}
.mini-card.mini-thumb .mini-thumb-meta b{
  display:block;
  font-size:13px;
  letter-spacing:-0.2px;
  margin-top:4px;
  line-height:1.25;
  max-height:2.6em;
  overflow:hidden;
  color:#fff;
  font-weight:700;
}
.mini-card.mini-thumb .mini-thumb-meta small{
  display:block;
  color:#a8bcc5;
  margin-top:4px;
  font-size:9px;
  letter-spacing:1px;
}

/* Hero stack fly 3D */
.glass-stack{
  perspective:700px;
  transform-style:preserve-3d;
}
.glass-stack .mini-card{
  transform-style:preserve-3d;
  will-change:transform;
}
.glass-stack.is-flying .mini-card{
  box-shadow:0 24px 48px rgba(0,0,0,.45);
  transition:none !important;
}
/* Label kartu video (1) kanan atas saat diam */
.mini-card.mini-one.mini-thumb .mini-thumb-meta{
  left:auto;
  right:14px;
  top:12px;
  bottom:auto;
  text-align:right;
}
.mini-card.mini-one.mini-thumb .mini-thumb-meta b{
  font-size:12px;
  max-height:2.5em;
}
@media (prefers-reduced-motion: reduce){
  .glass-stack .mini-card{transition:none!important}
}

.glass-stack.is-leaf .mini-card{
  box-shadow:0 18px 40px rgba(0,0,0,.35);
}


/* === MOBILE TOPNAV SLIDER (hanya ≤900px) === */
/* Desktop: biarkan rule di atas (wrap, tanpa scrollbar) */
@media (max-width:900px){
  .topbar{
    display:flex !important;
    flex-wrap:wrap !important;
    align-items:center;
    justify-content:flex-start !important;
    gap:8px 10px;
    padding:10px 12px;
    height:auto !important;
    min-height:56px;
    overflow:visible !important;
  }
  .brand{order:1;flex:0 0 auto;max-width:55%}
  .status,#shAuthSlot{order:2;margin-left:auto}
  .sh-userbar{order:2 !important;margin-left:auto !important}
  .topbar .topnav,
  nav.topnav,
  .topnav.topnav-scroll,
  .topnav{
    order:3 !important;
    display:flex !important;
    flex-direction:row !important;
    flex-wrap:nowrap !important;
    justify-content:flex-start !important;
    align-items:center !important;
    gap:6px !important;
    flex:1 1 100% !important;
    width:100% !important;
    max-width:100% !important;
    margin:0 !important;
    margin-left:0 !important;
    margin-right:0 !important;
    padding:8px 4px 10px !important;
    overflow-x:scroll !important;
    overflow-y:hidden !important;
    -webkit-overflow-scrolling:touch !important;
    touch-action:pan-x !important;
    overscroll-behavior-x:contain;
    scroll-snap-type:none;
    scrollbar-width:thin;
    cursor:grab;
    user-select:none;
    -webkit-user-select:none;
    -webkit-mask-image:none !important;
    mask-image:none !important;
  }
  .topnav:active{cursor:grabbing}
  .topnav::-webkit-scrollbar{height:3px}
  .topnav::-webkit-scrollbar-thumb{background:rgba(125,227,255,.35);border-radius:4px}
  .topnav a{
    flex:0 0 auto !important;
    white-space:nowrap !important;
    color:#d5ebf3 !important;
    text-shadow:0 1px 2px rgba(0,0,0,.5);
    background:rgba(255,255,255,.06);
    border:1px solid rgba(125,227,255,.22) !important;
    border-radius:999px;
    padding:8px 13px;
    font-size:12px;
    font-weight:600;
    pointer-events:auto;
    position:relative;
    z-index:1;
  }
  .topnav a:hover,
  .topnav a:focus-visible{
    color:#fff !important;
    background:rgba(125,227,255,.16);
    border-color:rgba(125,227,255,.45) !important;
  }
  .topnav a.active{
    color:#061016 !important;
    background:linear-gradient(135deg,#dffbff,#6bdcf4) !important;
    border-color:transparent !important;
    text-shadow:none;
    font-weight:700;
  }
  .topnav a.nav-admin,
  .topnav a.nav-profile{
    color:#e7fbff !important;
  }
}

@media (max-width:620px){
  .topnav a{
    padding:9px 14px;
    font-size:12.5px;
    color:#e2f3f8 !important;
  }
  .topnav a.active{color:#061016 !important}
}


/* === DESKTOP TOPNAV LOCK === */
/* Pastikan desktop tidak “kedip” ke style mobile / scrollbar */
@media (min-width: 901px) {
  .topbar{
    display:flex !important;
    flex-wrap:wrap;
    align-items:center;
    justify-content:space-between;
    height:auto !important;
    min-height:64px;
    overflow:visible !important;
  }
  .topbar .topnav,
  nav.topnav,
  .topnav{
    display:flex !important;
    flex-direction:row !important;
    flex-wrap:wrap !important;
    justify-content:flex-end !important;
    align-items:center !important;
    order:unset !important;
    flex:1 1 auto !important;
    width:auto !important;
    max-width:none !important;
    margin-left:auto !important;
    margin-right:8px !important;
    padding:0 !important;
    overflow:visible !important;
    overflow-x:visible !important;
    touch-action:auto !important;
    cursor:default !important;
    user-select:auto !important;
    -webkit-mask-image:none !important;
    mask-image:none !important;
    scrollbar-width:none !important;
  }
  .topnav::-webkit-scrollbar{display:none !important;height:0 !important}
  .topnav a{
    flex:0 0 auto;
    white-space:nowrap;
    font-size:12px !important;
    color:#9bb4c0 !important;
    padding:8px 12px !important;
    border-radius:10px !important;
    border:1px solid transparent !important;
    background:transparent !important;
    text-shadow:none !important;
    font-weight:500 !important;
  }
  .topnav a:hover{
    color:#e8f7fc !important;
    border-color:var(--line) !important;
    background:transparent !important;
  }
  .topnav a.active{
    color:#061016 !important;
    background:linear-gradient(135deg,#dffbff,#6bdcf4) !important;
    font-weight:700 !important;
    border-color:transparent !important;
  }
  .topnav a.nav-admin,
  .topnav a.nav-profile{
    color:#9bb4c0 !important;
  }
  /* Google login/avatar: selalu kanan atas */
  .sh-userbar{
    order:99 !important;
    flex:0 0 auto !important;
    display:flex !important;
    align-items:center;
    min-width:72px;
    min-height:36px;
    margin-left:auto !important;
    margin-right:0 !important;
  }
  /* theme sudah floating — jangan di header */
  .topbar > .theme-toggle{position:fixed !important}
}



/* Status terlambat — kuning */
.att-late,
span.att-late,
.att-badge.late,
.att-card .att-late {
  color: #f5d000 !important;
  font-weight: 700;
}


/* Foto profil zoom klik — ~6/7 layar, 3 dtk */
#spPhotoZoom{
  position:fixed;inset:0;z-index:14000;
  display:flex;align-items:center;justify-content:center;
  pointer-events:auto;
}
#spPhotoZoom .sp-zoom-backdrop{
  position:absolute;inset:0;background:rgba(0,0,0,.55);
  opacity:0;transition:opacity .3s ease;
}
#spPhotoZoom .sp-zoom-circle{
  position:relative;z-index:1;
  width:min(86vw,86vh);height:min(86vw,86vh);
  border-radius:50%;overflow:hidden;
  box-shadow:0 24px 80px rgba(0,0,0,.5),0 0 0 3px rgba(125,227,255,.35);
  transform:scale(.2);opacity:0;
  transition:transform .35s cubic-bezier(.2,.9,.3,1),opacity .3s ease;
}
#spPhotoZoom .sp-zoom-circle img{
  width:100%;height:100%;object-fit:cover;display:block;
}
#spPhotoZoom.is-open .sp-zoom-backdrop{opacity:1}
#spPhotoZoom.is-open .sp-zoom-circle{transform:scale(1);opacity:1}
#spPhoto{
  cursor:zoom-in;
  transition:transform .2s ease,box-shadow .2s ease;
}
#spPhoto:hover{transform:scale(1.04);box-shadow:0 0 0 2px rgba(125,227,255,.35)}

.sp-stat.is-link{cursor:pointer;transition:border-color .15s,background .15s}
.sp-stat.is-link:hover{border-color:rgba(125,227,255,.55);background:rgba(125,227,255,.1)}
.sp-stat.is-disabled{opacity:.45;cursor:default}
/* hover preview profil (admin/guru) */
.sp-hover-tip{
  position:fixed;z-index:13500;pointer-events:none;
  width:min(320px,92vw);padding:12px 14px;border-radius:14px;
  background:linear-gradient(160deg,#0f1c28,#0a141c);
  border:1px solid rgba(125,227,255,.35);
  box-shadow:0 16px 48px rgba(0,0,0,.45);
  opacity:0;transform:translateY(6px);
  transition:opacity .15s ease,transform .15s ease;
}
.sp-hover-tip.is-on{opacity:1;transform:translateY(0);pointer-events:none}
.sp-hover-tip .ht-row{display:flex;gap:10px;align-items:center}
.sp-hover-tip img{
  width:48px;height:48px;border-radius:50%;object-fit:cover;
  border:2px solid rgba(125,227,255,.35);
}
.sp-hover-tip b{display:block;font-size:14px;color:#e8f7fc}
.sp-hover-tip small{color:#8aa0ab;font-size:11px}

.card.card-flash{outline:2px solid #6bdcf4;box-shadow:0 0 0 6px rgba(107,220,244,.25);transition:box-shadow .3s}


/* Desain grafis — kotak = jendela zoom proporsional (2×–4×) */
.des-thumb{
  position:relative;
  display:block;width:100%;padding:0;border:0;cursor:zoom-in;
  overflow:hidden;background:#0a1218;border-radius:12px 12px 0 0;
  aspect-ratio:1;
  isolation:isolate;
}
.des-thumb img{
  position:absolute;
  display:block;
  max-width:none;
  pointer-events:none;
  user-select:none;
  will-change:left,top,width,height;
  transition:width .15s ease, height .15s ease, left .15s ease, top .15s ease;
}
.des-thumb.is-zooming img{
  transition:none;
}
.des-thumb:hover{
  box-shadow:inset 0 0 0 2px rgba(125,227,255,.35);
}
.des-mag-lens{display:none!important}


.design-lightbox{
  position:fixed;inset:0;z-index:15000;
  display:flex;align-items:center;justify-content:center;
  padding:16px;opacity:0;pointer-events:none;
  transition:opacity .25s ease;
}
.design-lightbox.is-open{opacity:1;pointer-events:auto}
.design-lightbox .dlb-backdrop{
  position:absolute;inset:0;background:rgba(0,0,0,.82);backdrop-filter:blur(6px);
}
.design-lightbox .dlb-frame{
  position:relative;z-index:1;max-width:96vw;max-height:92vh;
  display:flex;flex-direction:column;align-items:center;gap:10px;
}
.design-lightbox .dlb-img{
  max-width:min(96vw,1400px);max-height:min(88vh,1200px);
  width:auto;height:auto;object-fit:contain;
  border-radius:10px;box-shadow:0 24px 80px rgba(0,0,0,.55);
  background:#0a1218;
}
.design-lightbox .dlb-caption{
  color:#c5d8e0;font-size:13px;text-align:center;max-width:90vw;
}
.design-lightbox .dlb-close{
  position:absolute;top:-8px;right:-8px;z-index:2;
  width:40px;height:40px;border-radius:50%;
  border:1px solid rgba(125,227,255,.35);
  background:rgba(14,28,36,.95);color:#e8f7fc;
  font-size:18px;cursor:pointer;line-height:1;
}
.design-lightbox .dlb-close:hover{border-color:#7de3ff}

/* ===== Loupe metode 2: CSS scale + clip (Ctrl + hover) ===== */
html.sh-loupe-on,
html.sh-loupe-on * {
  cursor: none !important;
}
#shLoupe {
  position: fixed;
  left: 0;
  top: 0;
  z-index: 99999;
  pointer-events: none;
  will-change: transform;
  /* lebar/tinggi di-set JS = diameter lensa */
}
#shLoupe .sh-loupe-lens {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  overflow: hidden;
  box-shadow:
    0 12px 32px rgba(0,0,0,.55),
    0 2px 8px rgba(0,0,0,.35),
    inset 0 1px 0 rgba(255,255,255,.28),
    inset 0 -10px 20px rgba(0,0,0,.3);
  background: #0a1218;
}
#shLoupe .sh-loupe-stage {
  position: absolute;
  left: 0;
  top: 0;
  transform-origin: 0 0;
  will-change: transform;
  pointer-events: none;
}
#shLoupe .sh-loupe-clone {
  position: absolute;
  left: 0;
  top: 0;
  overflow: hidden;
  pointer-events: none;
}
#shLoupe .sh-loupe-clone #shLoupe { display: none !important; }
#shLoupe .sh-loupe-rim {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 6px solid #b8d4e4;
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.5),
    inset 0 0 0 3px rgba(60,90,110,.5),
    0 0 0 1px rgba(0,0,0,.25);
  background: linear-gradient(145deg, rgba(255,255,255,.2), transparent 40%, rgba(0,0,0,.15));
  pointer-events: none;
}
#shLoupe .sh-loupe-glare {
  position: absolute;
  top: 10%;
  left: 14%;
  width: 40%;
  height: 26%;
  border-radius: 50%;
  background: linear-gradient(180deg, rgba(255,255,255,.4), rgba(255,255,255,0));
  transform: rotate(-20deg);
  pointer-events: none;
}
/* Gagang LURUS 3D — menempel tepi kanan-bawah lensa, miring utuh (tidak patah) */
#shLoupe .sh-loupe-handle {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 32px;
  height: 200px;
  margin-left: -16px;
  /* radius 180 + rim ~6 → pangkal menempel bingkai (bukan menjauh) */
  transform: rotate(42deg) translate(0, 186px);
  transform-origin: 50% 0;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: center;
}
#shLoupe .sh-loupe-handle-shaft {
  display: block;
  width: 28px;
  height: 160px;
  margin: 0;
  border-radius: 14px;
  background: linear-gradient(
    90deg,
    #3e2a18 0%,
    #c4a574 30%,
    #8b6914 55%,
    #e8d5a3 78%,
    #4a3420 100%
  );
  box-shadow:
    3px 6px 12px rgba(0,0,0,.45),
    inset 2px 0 3px rgba(255,255,255,.4),
    inset -3px 0 4px rgba(0,0,0,.35);
}
/* "sekrup" ujung — satu poros dengan batang (align center) */
#shLoupe .sh-loupe-handle-tip {
  display: block;
  width: 28px;
  height: 28px;
  margin: -6px 0 0;
  border-radius: 50%;
  background:
    radial-gradient(circle at 35% 30%, rgba(255,255,255,.35), transparent 45%),
    linear-gradient(145deg, #d4b896 0%, #8b6914 40%, #4a3420 100%);
  box-shadow:
    1px 3px 6px rgba(0,0,0,.5),
    inset 0 0 0 2px rgba(60,40,20,.5),
    inset 0 1px 0 rgba(255,255,255,.35);
  position: relative;
}
#shLoupe .sh-loupe-handle-tip::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 10px;
  height: 10px;
  margin: -5px 0 0 -5px;
  border-radius: 50%;
  background: radial-gradient(circle at 40% 35%, #e8d5a3, #5a4030 70%);
  box-shadow: inset 0 0 2px rgba(0,0,0,.5);
}
#shLoupe .sh-loupe-tip {
  position: absolute;
  left: 50%;
  bottom: 18%;
  transform: translateX(-50%);
  z-index: 3;
  max-width: 78%;
  padding: 8px 12px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
  color: #071016;
  background: linear-gradient(180deg, #f0fafc, #c5e8f5);
  box-shadow: 0 4px 16px rgba(0,0,0,.4);
  text-align: center;
  pointer-events: none;
  display: none;
}
#shLoupe .sh-loupe-tip.is-on { display: block; }
#shLoupe .sh-loupe-badge {
  position: absolute;
  top: 4px;
  right: 4px;
  z-index: 2;
  min-width: 28px;
  padding: 2px 7px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  color: #071016;
  background: linear-gradient(180deg, #9ff1ff, #5ec8ff);
  box-shadow: 0 2px 8px rgba(0,0,0,.35);
  text-align: center;
}
@media (max-width: 640px) {
  #shLoupe { display: none !important; }
  html.sh-loupe-on, html.sh-loupe-on * { cursor: auto !important; }
}


/* Chat avatar picker (collapsible) + search highlight */
.chat-avatar-field{display:flex;flex-direction:column;gap:6px}
.chat-avatar-toggle{
  appearance:none;display:inline-flex;align-items:center;gap:8px;
  width:fit-content;max-width:100%;
  padding:6px 10px;border-radius:999px;cursor:pointer;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.05);color:#cfe8f0;
  font:inherit;font-size:12px;font-weight:600;
  transition:border-color .15s, background .15s;
}
.chat-avatar-toggle:hover{border-color:rgba(125,227,255,.4);background:rgba(125,227,255,.1)}
.chat-avatar-toggle[aria-expanded="true"]{border-color:rgba(125,227,255,.45)}
.chat-avatar-toggle-label{opacity:.75}
.chat-avatar-current{font-size:18px;line-height:1}
.chat-avatar-chevron{
  font-size:11px;opacity:.7;transition:transform .18s ease;
  margin-left:2px;
}
.chat-avatar-toggle[aria-expanded="true"] .chat-avatar-chevron{transform:rotate(90deg)}
.chat-avatar-picker{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
  max-width:100%;
  padding:8px;
  border-radius:12px;
  /* transparan ~7% saja → opacity latar ~93% */
  background:rgba(8,18,28,.93);
  border:1px solid rgba(125,227,255,.28);
  box-shadow:0 8px 22px rgba(0,0,0,.4);
}
.chat-avatar-picker[hidden],
.chat-avatar-picker.is-collapsed{display:none!important}
.chat-av-btn{
  appearance:none;
  border:1px solid var(--line, rgba(255,255,255,.12));
  background:rgba(255,255,255,.04);
  border-radius:10px;
  width:40px;
  height:40px;
  font-size:20px;
  line-height:1;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  transition:border-color .15s, background .15s, transform .1s;
}
.chat-av-btn:hover{background:rgba(125,227,255,.12);border-color:rgba(125,227,255,.35)}
.chat-av-btn.is-selected{
  border-color:#7de3ff;
  background:rgba(125,227,255,.18);
  box-shadow:0 0 0 1px rgba(125,227,255,.25);
  transform:scale(1.06);
}
.chat-bubble mark.chat-hit{
  background:rgba(255,220,100,.35);
  color:inherit;
  border-radius:3px;
  padding:0 2px;
}
@media (max-width:480px){
  .chat-av-btn{width:36px;height:36px;font-size:18px}
}


/* Chat edit/delete actions */
.chat-actions{display:none;gap:6px;margin-top:6px;flex-wrap:wrap}
.chat-bubble.show-actions .chat-actions{display:flex}
.chat-av{cursor:pointer;transition:box-shadow .15s,transform .1s}
.chat-bubble.show-actions .chat-av{box-shadow:0 0 0 2px rgba(125,227,255,.45)}
.chat-voice-player{display:flex;align-items:center;gap:8px;max-width:100%}
.chat-voice-play{
  appearance:none;border:1px solid rgba(125,227,255,.35);background:rgba(125,227,255,.12);
  color:#e8fbff;width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:12px;line-height:1;flex-shrink:0
}
.chat-voice-play:hover{background:rgba(125,227,255,.22)}
.chat-voice-time{font-size:12px;font-weight:700;color:#9ec8d6;font-variant-numeric:tabular-nums;min-width:96px}
.chat-voice-audio{display:none}
.chat-act{
  appearance:none;border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.05);color:#9ec8d6;
  font-size:11px;padding:3px 8px;border-radius:8px;cursor:pointer;line-height:1.3
}
.chat-act:hover{background:rgba(125,227,255,.12);color:#dffbff;border-color:rgba(125,227,255,.35)}
.chat-act-del:hover{background:rgba(255,100,100,.15);border-color:rgba(255,120,120,.4);color:#ffc9c9}
.chat-edited{color:#7f97a3;font-style:italic;margin-left:4px}


/* Chat images & video cards */
.chat-attach{display:inline-flex;align-items:center;justify-content:center;min-width:40px;padding:8px 10px;cursor:pointer;margin:0}
.chat-img-wrap{display:block;margin-top:6px;max-width:min(100%,320px)}
.chat-img{display:block;width:100%;max-height:280px;object-fit:contain;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.25)}
.chat-vid-card{
  display:flex;gap:10px;align-items:center;margin-top:6px;padding:8px;
  max-width:min(100%,360px);border-radius:12px;
  border:1px solid rgba(125,227,255,.2);background:rgba(125,227,255,.06);
  text-decoration:none;color:inherit
}
.chat-vid-card:hover{border-color:rgba(125,227,255,.45);background:rgba(125,227,255,.1)}
.chat-vid-thumb{width:88px;height:56px;object-fit:cover;border-radius:8px;flex-shrink:0;background:#0a1520}
.chat-vid-ph{width:88px;height:56px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;background:#0a1520;color:#7de3ff;font-size:18px;flex-shrink:0}
.chat-vid-meta{min-width:0;display:flex;flex-direction:column;gap:2px}
.chat-vid-title{font-weight:600;font-size:12px;color:#dffbff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-vid-url{font-size:11px;color:#7f97a3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}


/* Chat window modes */
.chat-win{position:relative;width:100%;max-width:100%;z-index:40}
.chat-win-bar{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:8px 10px;border-radius:12px 12px 0 0;
  background:rgba(8,20,28,.92);border:1px solid rgba(125,227,255,.2);
  border-bottom:none;cursor:default;user-select:none
}
.chat-win.mode-float .chat-win-bar{cursor:grab}
.chat-win.mode-float .chat-win-bar:active{cursor:grabbing}
.chat-win-title{font-size:13px;font-weight:600;color:#dffbff}
.chat-win-actions{display:flex;gap:4px}
.chat-win-btn{
  appearance:none;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);
  color:#9ec8d6;width:28px;height:28px;border-radius:8px;cursor:pointer;font-size:12px;line-height:1
}
.chat-win-btn:hover{background:rgba(125,227,255,.15);color:#fff}
.chat-win .chat-panel{border-top-left-radius:0;border-top-right-radius:0}
.chat-win.mode-float{
  position:fixed;left:24px;top:72px;width:min(420px,calc(100vw - 24px));
  max-height:calc(100vh - 96px);z-index:1200;
  box-shadow:0 12px 40px rgba(0,0,0,.45);border-radius:12px;overflow:auto
}
.chat-win.mode-max{
  position:fixed;inset:8px;width:auto;max-width:none;z-index:1200;
  box-shadow:0 12px 40px rgba(0,0,0,.5);overflow:auto
}
.chat-win.mode-max .chat-log{height:min(70vh,560px)}
.chat-win.mode-min{display:none}
/* base styles; visibility/z-index finalized in the later chat-win-restore block */
.chat-win-restore{
  position:fixed;right:16px;bottom:16px;z-index:2147483000;
  appearance:none;border:1px solid rgba(125,227,255,.35);
  background:linear-gradient(180deg,#1a3a48,#0d222c);color:#dffbff;
  padding:10px 14px;border-radius:999px;cursor:pointer;font-weight:600;
  box-shadow:0 8px 24px rgba(0,0,0,.4)
}
.chat-win-restore:hover{border-color:#7de3ff}
.chat-bubble.chat-depth-1{margin-left:18px;border-left:2px solid rgba(125,227,255,.25);padding-left:8px}
.chat-bubble.chat-depth-2{margin-left:36px;border-left:2px solid rgba(125,227,255,.4);padding-left:8px}
.chat-reply-ref{
  font-size:11px;color:#7f97a3;margin:4px 0 2px;padding:4px 8px;
  border-left:2px solid rgba(125,227,255,.35);background:rgba(125,227,255,.06);border-radius:0 8px 8px 0
}
.chat-reply-bar{
  display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:10px;
  background:rgba(125,227,255,.08);border:1px solid rgba(125,227,255,.2);font-size:12px;color:#b8e8f5
}
.chat-reply-bar[hidden]{display:none!important}
.chat-reply-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ===== Chat input (auto-grow up to 4 lines) & form ===== */
.chat-form{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  max-width:100%;
  align-items:flex-end;
}
.chat-input{
  flex:1 1 140px;
  min-width:0;
  max-width:100%;
  resize:none;
  overflow-y:auto;
  min-height:2.4em;
  max-height:calc(1.45em * 4 + 16px); /* ~4 lines */
  line-height:1.45;
  padding:8px 12px;
  border-radius:12px;
  border:1px solid var(--line, rgba(255,255,255,.14));
  background:rgba(0,0,0,.25);
  color:#e8f6fa;
  font:inherit;
  font-size:14px;
  box-sizing:border-box;
  field-sizing:content; /* progressive enhancement */
}
.chat-input:focus{
  outline:none;
  border-color:rgba(125,227,255,.45);
  box-shadow:0 0 0 2px rgba(125,227,255,.12);
}
.chat-form-actions{
  display:flex;
  gap:8px;
  align-items:center;
  flex-shrink:0;
}
.chat-reply-bar + .chat-form{
  margin-top:0;
}

/* Message body: clamp to 4 lines, expand to 13 + scroll */
.chat-text{
  position:relative;
  word-break:break-word;
  overflow-wrap:anywhere;
}
.chat-text.is-clamped{
  max-height:calc(1.45em * 4);
  overflow:hidden;
}
.chat-text.is-expanded{
  max-height:calc(1.45em * 13);
  overflow-y:auto;
}
.chat-text-more{
  display:inline-block;
  margin-top:4px;
  padding:2px 8px;
  font-size:11px;
  font-weight:600;
  color:#7de3ff;
  background:rgba(125,227,255,.08);
  border:1px solid rgba(125,227,255,.25);
  border-radius:999px;
  cursor:pointer;
  appearance:none;
}
.chat-text-more:hover{
  background:rgba(125,227,255,.16);
  color:#b8f0ff;
}

/* Restore FAB — above almost all site floats (stats, lock, etc.) */
.chat-win-restore{
  position:fixed !important;
  right:16px !important;
  bottom:20px !important;
  left:auto !important;
  top:auto !important;
  z-index:2147483000 !important;
  min-width:52px;
  min-height:52px;
  padding:12px 16px !important;
  border-radius:999px !important;
  border:1px solid rgba(125,227,255,.5) !important;
  background:linear-gradient(180deg,#1f4a5c,#0d222c) !important;
  color:#dffbff !important;
  font-weight:700 !important;
  font-size:14px !important;
  box-shadow:0 10px 28px rgba(0,0,0,.55), 0 0 0 1px rgba(125,227,255,.15) !important;
  cursor:pointer !important;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
  display:none;
}
.chat-win-restore.is-visible,
body.chat-is-min .chat-win-restore{
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
  gap:6px;
}
.chat-win-restore[hidden]:not(.is-visible){
  display:none !important;
}
.chat-win-restore:hover,
.chat-win-restore:focus{
  border-color:#7de3ff !important;
  outline:none;
}

/* Inline reply / in-place edit composers */
.chat-inline-composer{
  margin-top:8px;
  display:flex;
  flex-direction:column;
  gap:6px;
  padding:8px;
  border-radius:10px;
  background:rgba(125,227,255,.07);
  border:1px solid rgba(125,227,255,.22);
  width:100%;
  box-sizing:border-box;
}
.chat-inline-ta{
  width:100%;
  min-width:0;
  resize:none;
  overflow-y:auto;
  min-height:2.2em;
  max-height:calc(1.45em * 4 + 12px);
  line-height:1.45;
  padding:8px 10px;
  border-radius:10px;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(0,0,0,.28);
  color:#e8f6fa;
  font:inherit;
  font-size:13px;
  box-sizing:border-box;
}
.chat-inline-edit .chat-inline-ta{
  max-height:calc(1.45em * 8 + 12px);
}
.chat-inline-ta:focus{
  outline:none;
  border-color:rgba(125,227,255,.45);
  box-shadow:0 0 0 2px rgba(125,227,255,.12);
}
.chat-inline-actions{
  display:flex;
  gap:8px;
  align-items:center;
  flex-wrap:wrap;
}
.chat-inline-actions .btn{
  font-size:12px;
  padding:6px 12px;
}
.chat-bubble.is-editing .chat-actions{
  opacity:.5;
  pointer-events:none;
}

/* Desktop: composer & main input stretch wider */
@media (min-width:900px){
  .chat-inline-composer{
    min-width:min(520px, 100%);
    width:min(560px, calc(100% + 40px));
    max-width:min(640px, 92vw);
  }
  .chat-form{
    align-items:stretch;
  }
  .chat-input{
    min-width:min(420px, 100%);
    flex:1 1 280px;
  }
  .chat-body{
    min-width:0;
    flex:1;
  }
}

/* ===== Cross-page floating chat (parent page) ===== */
.sh-chat-float-wrap{
  position:fixed;
  z-index:2147482800;
  display:flex;
  flex-direction:column;
  border-radius:12px;
  overflow:hidden;
  background:#0a1520;
  box-shadow:0 12px 40px rgba(0,0,0,.5);
  border:1px solid rgba(125,227,255,.28);
}
.sh-chat-float-bar{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:8px 10px;cursor:grab;user-select:none;
  background:rgba(8,20,28,.95);border-bottom:1px solid rgba(125,227,255,.15);
  flex-shrink:0;
}
.sh-chat-float-bar:active{cursor:grabbing}
.sh-chat-float-title{font-size:13px;font-weight:600;color:#dffbff}
.sh-chat-float-actions{display:flex;gap:4px}
.sh-chat-float-btn{
  appearance:none;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);
  color:#9ec8d6;width:28px;height:28px;border-radius:8px;cursor:pointer;font-size:12px;line-height:1
}
.sh-chat-float-btn:hover{background:rgba(125,227,255,.15);color:#fff}
.sh-chat-float-iframe{
  flex:1;width:100%;border:0;min-height:0;background:#081018;
}

/* ===== Embed mode (chat.html?embed=1 inside iframe) ===== */
html.chat-embed,
body.chat-embed{
  background:#081018 !important;
  overflow:hidden !important;
  min-height:100% !important;
}
body.chat-embed .bg-grid,
body.chat-embed .orb,
body.chat-embed .topbar,
body.chat-embed .skills-hero,
body.chat-embed #sh-float-stats,
body.chat-embed #sh-share-bar,
body.chat-embed .chat-win-restore{
  display:none !important;
}
body.chat-embed .skills-main,
body.chat-embed main{
  padding:0 !important;
  margin:0 !important;
  max-width:none !important;
}
body.chat-embed .chat-win{
  position:relative !important;
  left:auto !important;
  top:auto !important;
  width:100% !important;
  max-width:none !important;
  height:100vh !important;
  max-height:100vh !important;
  box-shadow:none !important;
  border-radius:0 !important;
  z-index:1 !important;
  overflow:auto !important;
}
body.chat-embed .chat-win.mode-float,
body.chat-embed .chat-win.mode-max,
body.chat-embed .chat-win.mode-dock{
  position:relative !important;
  inset:auto !important;
}
body.chat-embed .chat-win-bar{
  display:none !important; /* bar sudah di parent wrap */
}
body.chat-embed .chat-log{
  height:min(42vh, 320px) !important;
}
body.chat-embed .chat-fields{
  gap:6px !important;
}

/* ===== Chat: input icon overlays, copy btn, voice ===== */
.chat-input-wrap{
  position:relative;
  flex:1 1 100%;
  min-width:0;
  display:flex;
  align-items:stretch;
}
.chat-input-wrap .chat-input{
  flex:1 1 auto;
  width:100%;
  padding-right:96px; /* space for overlay icons */
}
.chat-input-overlays{
  position:absolute;
  right:6px;
  bottom:6px;
  display:flex;
  gap:4px;
  align-items:center;
  z-index:2;
  pointer-events:none;
}
.chat-icon-btn{
  pointer-events:auto;
  appearance:none;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(8,20,28,.55);
  color:#cfe8f0;
  width:32px;
  height:32px;
  border-radius:10px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  font-size:15px;
  line-height:1;
  padding:0;
  backdrop-filter:blur(4px);
  transition:background .15s, border-color .15s, transform .1s;
}
.chat-icon-btn:hover{
  background:rgba(125,227,255,.18);
  border-color:rgba(125,227,255,.4);
}
.chat-send-btn{
  background:rgba(125,227,255,.2);
  border-color:rgba(125,227,255,.35);
  color:#e8fbff;
}
.chat-send-btn:hover{background:rgba(125,227,255,.32)}
.chat-voice-btn.is-recording{
  background:rgba(255,80,80,.25);
  border-color:rgba(255,100,100,.5);
  animation:chat-voice-pulse 1s ease-in-out infinite;
}
@keyframes chat-voice-pulse{
  0%,100%{box-shadow:0 0 0 0 rgba(255,80,80,.35)}
  50%{box-shadow:0 0 0 6px rgba(255,80,80,0)}
}
.chat-voice-bar{
  display:flex;
  align-items:center;
  gap:8px;
  flex:1 1 100%;
  padding:6px 8px;
  border-radius:10px;
  background:rgba(255,80,80,.08);
  border:1px solid rgba(255,100,100,.25);
  font-size:12px;
  color:#ffc9c9;
}
.chat-voice-bar[hidden]{display:none!important}
.chat-voice-dot{
  width:8px;height:8px;border-radius:50%;
  background:#ff5a5a;
  box-shadow:0 0 0 0 rgba(255,90,90,.4);
  animation:chat-voice-pulse 1s ease-in-out infinite;
}
.chat-voice-timer{font-weight:700;min-width:36px;color:#ffd0d0}
.chat-voice-msg{display:flex;flex-direction:column;gap:4px;max-width:100%}
.chat-voice-audio{width:100%;max-width:280px;height:36px}
.chat-voice-ttl{font-size:10px;color:#7f97a3}
.chat-body{position:relative}
.chat-copy-btn{
  position:absolute;
  top:4px;
  right:4px;
  appearance:none;
  border:1px solid rgba(255,255,255,.1);
  background:rgba(8,20,28,.35);
  color:rgba(200,230,240,.75);
  width:26px;
  height:26px;
  border-radius:8px;
  font-size:12px;
  line-height:1;
  cursor:pointer;
  opacity:0;
  transition:opacity .15s, background .15s, color .15s;
  z-index:2;
  padding:0;
  backdrop-filter:blur(3px);
}
.chat-bubble:hover .chat-copy-btn,
.chat-bubble:focus-within .chat-copy-btn,
.chat-copy-btn:focus{
  opacity:1;
}
.chat-copy-btn:hover{
  background:rgba(125,227,255,.2);
  color:#e8fbff;
  border-color:rgba(125,227,255,.35);
}
.chat-copy-btn.is-copied{
  opacity:1;
  background:rgba(100,220,140,.25);
  color:#c8ffd8;
  border-color:rgba(100,220,140,.4);
}
@media (max-width:640px){
  .chat-copy-btn{opacity:.85} /* always slightly visible on touch */
  .chat-input-wrap .chat-input{padding-right:108px}
}

/* Voice live meter */
.chat-voice-meter{
  flex:1 1 120px;
  min-width:80px;
  max-width:200px;
  height:28px;
  border-radius:8px;
  background:rgba(0,0,0,.25);
  border:1px solid rgba(125,227,255,.15);
  display:block;
}
.chat-voice-bar{
  flex-wrap:wrap;
}

/* Video gallery: native play + admin actions */
.video-frame video.video-native{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain;background:#000;border:0;
}
.video-admin-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.video-admin-btn{
  appearance:none;border:1px solid rgba(255,255,255,.16);
  background:rgba(255,255,255,.06);color:#cfe8f0;
  border-radius:8px;padding:5px 10px;font-size:12px;font-weight:600;cursor:pointer;
}
.video-admin-btn:hover{border-color:rgba(125,227,255,.4);background:rgba(125,227,255,.12)}
.video-admin-btn.is-danger:hover{border-color:rgba(255,120,120,.45);background:rgba(255,80,80,.15);color:#ffd0d0}
.video-admin-modal{
  position:fixed;inset:0;z-index:10080;display:flex;align-items:center;justify-content:center;
  padding:16px;
}
.video-admin-modal[hidden]{display:none!important}
.video-admin-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.55)}
.video-admin-panel{
  position:relative;z-index:1;width:min(480px,100%);
  background:linear-gradient(180deg,#0f1c28,#0a141e);
  border:1px solid rgba(125,227,255,.25);border-radius:14px;
  box-shadow:0 16px 48px rgba(0,0,0,.45);padding:14px 16px 16px;
}
.video-admin-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;cursor:grab;user-select:none;touch-action:none}
.video-admin-head.is-dragging{cursor:grabbing}
.video-admin-panel{max-height:min(90vh,720px);overflow:auto}
.video-admin-x{appearance:none;border:0;background:transparent;color:#9ec8d6;font-size:16px;cursor:pointer}
.video-admin-form{display:grid;gap:10px}
.video-admin-form label{display:grid;gap:4px;font-size:12px;color:#9ec8d6}
.video-admin-form input,.video-admin-form textarea,.video-admin-form select{
  width:100%;box-sizing:border-box;border-radius:10px;border:1px solid rgba(255,255,255,.14);
  background:rgba(0,0,0,.25);color:#e8f4f8;padding:8px 10px;font:inherit;
}
.video-admin-hint{font-size:11px;margin:0;line-height:1.4}
.video-admin-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}
.video-thumb-ph.is-direct{background:linear-gradient(135deg,#122018,#1a3a28 140%)}

/* Video link guide + FB fallback */
.video-link-guide{
  margin:0 0 16px;padding:10px 14px;border-radius:12px;
  border:1px solid rgba(125,227,255,.2);background:rgba(8,20,28,.55);
  color:#cfe8f0;font-size:13px;
}
.video-link-guide summary{cursor:pointer;font-weight:700;color:#dffbff}
.video-link-guide-body{margin-top:10px;line-height:1.5}
.video-link-guide-body ul{margin:6px 0 0 1.1em;padding:0}
.video-link-guide-body code{
  font-size:11px;background:rgba(0,0,0,.3);padding:1px 5px;border-radius:4px;
  word-break:break-all;
}
.video-fb-wrap{position:absolute;inset:0;display:flex;flex-direction:column}
.video-fb-wrap iframe{flex:1;width:100%;border:0;min-height:0}
.video-open-src{
  flex-shrink:0;display:block;text-align:center;padding:6px 8px;font-size:12px;font-weight:700;
  background:rgba(24,119,242,.92);color:#fff;text-decoration:none;
}
.video-open-src:hover{filter:brightness(1.08)}
.video-thumb-ph.is-tiktok{background:linear-gradient(135deg,#111,#fe2c55 160%)}
.video-thumb-ph.is-instagram{background:linear-gradient(135deg,#2a1030,#e1306c 140%)}
.video-thumb-ph.is-twitter{background:linear-gradient(135deg,#0a1520,#1d9bf0 150%)}
.video-thumb-ph.is-link .video-play{font-size:20px}


/* Kotak suara pengumuman (terpisah dari editor) */
.ann-voice-slot{
  margin-top:10px;padding:10px 12px;border-radius:12px;
  border:1px dashed rgba(125,227,255,.35);background:rgba(8,20,28,.45);
}
.ann-voice-slot-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;font-size:12px;color:#9ec8d6}
.ann-voice-slot-body{margin-top:4px}
.sh-ann-body .chat-voice-player,
.sh-ann-body .ann-voice-block{
  margin-top:8px;padding:0;border:none;background:transparent;
  position:relative;z-index:2;pointer-events:auto;
}
.sh-ann-body .chat-voice-play{pointer-events:auto;cursor:pointer}

/* Inline reply/edit tools */
.chat-inline-tools{display:flex;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap}
.chat-inline-tool{
  appearance:none;border:1px solid rgba(125,227,255,.3);background:rgba(125,227,255,.12);
  color:#e8fbff;border-radius:8px;min-height:32px;display:inline-flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:13px;line-height:1;padding:6px 10px;gap:4px;font-weight:600;
}
.chat-inline-tool-btn{width:auto}
.chat-inline-tool:hover{background:rgba(125,227,255,.22);border-color:rgba(125,227,255,.5)}
.chat-inline-hint{font-size:11px}
.chat-inline-voice-bar{margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.chat-act-hist{opacity:.95}
.chat-edited-btn{
  appearance:none;border:0;background:transparent;color:#7de3ff;cursor:pointer;
  font-size:11px;padding:0 2px;text-decoration:underline;font-family:inherit;
}
.chat-edited-btn:hover{color:#b8f0ff}
.chat-inline-composer .chat-inline-tools{margin:8px 0 4px}

/* Histori edit modal */
.chat-hist-modal{position:fixed;inset:0;z-index:30000;display:flex;align-items:center;justify-content:center;padding:16px}
.chat-hist-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.55)}
.chat-hist-panel{
  position:relative;z-index:1;width:min(420px,100%);max-height:min(70vh,520px);overflow:auto;
  background:#0e1a22;border:1px solid rgba(125,227,255,.25);border-radius:14px;padding:12px 14px;color:#e8f4f8;
}
.chat-hist-panel header{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.chat-hist-panel header button{margin-left:auto;appearance:none;border:0;background:transparent;color:#9ec8d6;cursor:pointer;font-size:16px}
.chat-hist-item{border-top:1px solid rgba(255,255,255,.06);padding:8px 0}
.chat-hist-meta{font-size:11px;color:#8aa3ae;margin-bottom:4px}
.chat-hist-body{margin:0;white-space:pre-wrap;word-break:break-word;font-size:13px;font-family:inherit;color:#cfe8f0}

.chat-mix-images{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.chat-mix-img-link{display:block;max-width:100%}
.chat-mix-img{max-width:min(100%,280px);max-height:220px;border-radius:10px;display:block;object-fit:cover}
.chat-inline-attach{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.chat-attach-chip{
  display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:999px;
  background:rgba(125,227,255,.12);border:1px solid rgba(125,227,255,.28);font-size:12px;color:#dff6ff;
}
.chat-attach-chip button{
  appearance:none;border:0;background:transparent;color:#9ec8d6;cursor:pointer;font-size:12px;line-height:1;padding:0 2px;
}
.chat-text-main{margin-bottom:4px}


/* ===== SHVoice standar (shared) ===== */
.sh-voice-player, .chat-voice-player{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px;
  padding:8px 10px;border-radius:12px;
  background:rgba(0,0,0,.22);border:1px solid rgba(125,227,255,.18);
  width:100%;max-width:min(100%,300px);
  box-sizing:border-box;
}
.sh-voice-play, .chat-voice-play{
  appearance:none;border:1px solid rgba(125,227,255,.35);background:rgba(125,227,255,.12);
  color:#e8fbff;width:36px;height:36px;border-radius:50%;cursor:pointer;font-size:12px;line-height:1;flex-shrink:0
}
.sh-voice-play:hover, .chat-voice-play:hover{background:rgba(125,227,255,.22)}
.sh-voice-track{flex:1 1 140px;min-width:120px;display:flex;flex-direction:column;gap:4px}
.sh-voice-time, .chat-voice-time{
  font-size:12px;font-weight:700;color:#9ec8d6;font-variant-numeric:tabular-nums;
}
.sh-voice-seek-wrap{
  position:relative;width:100%;height:14px;border-radius:999px;
  background:rgba(125,227,255,.18);overflow:hidden;margin-top:2px;
}
.sh-voice-seek-fill{
  position:absolute;left:0;top:0;bottom:0;width:0%;
  background:linear-gradient(90deg,rgba(125,227,255,.75),rgba(80,200,255,.95));
  border-radius:999px;pointer-events:none;transition:width .08s linear;
}
.sh-voice-seek{display:none!important} /* diganti .sh-ap-seek */
.sh-voice-seek::-webkit-slider-runnable-track{height:4px;background:transparent;border:none}
.sh-voice-seek::-webkit-slider-thumb{
  -webkit-appearance:none;width:16px;height:16px;border-radius:50%;
  background:#e8fbff;border:2px solid #0a1620;cursor:pointer;margin-top:0;
  box-shadow:0 0 0 2px rgba(125,227,255,.35);
}
.sh-voice-seek::-moz-range-track{height:4px;background:transparent;border:none}
.sh-voice-seek::-moz-range-thumb{
  width:16px;height:16px;border-radius:50%;background:#e8fbff;border:2px solid #0a1620;cursor:pointer;
}
.sh-ann-body .sh-voice-player,
.sh-ann-body .sh-voice-seek-wrap{display:block;max-width:min(100%,300px)}
.sh-ann-body .sh-voice-seek{display:block!important;opacity:1!important;height:4px!important}

.sh-voice-dl{
  display:inline-flex;align-items:center;justify-content:center;
  width:32px;height:32px;border-radius:8px;text-decoration:none;
  border:1px solid rgba(125,227,255,.3);color:#dff6ff;background:rgba(125,227,255,.08);
  font-size:14px;flex-shrink:0;
}
.sh-voice-dl:hover{background:rgba(125,227,255,.18)}
.sh-voice-ttl, .chat-voice-ttl{width:100%;font-size:11px;color:#8aa3ae;margin:0}
.sh-voice-audio, .chat-voice-audio{display:none}
.sh-voice-rec-bar, .chat-voice-bar{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:8px 10px;border-radius:12px;margin-top:6px;
  background:rgba(8,20,28,.55);border:1px solid rgba(125,227,255,.22);
}
.sh-voice-rec-bar[hidden], .chat-voice-bar[hidden]{display:none!important}
.sh-voice-meter, .chat-voice-meter{
  display:block;width:140px;height:28px;border-radius:6px;background:rgba(0,0,0,.25);
}
.sh-voice-timer, .chat-voice-timer{
  font-variant-numeric:tabular-nums;font-weight:700;font-size:13px;color:#e8fbff;min-width:48px;
}
.sh-voice-dot, .chat-voice-dot{
  width:10px;height:10px;border-radius:50%;background:#ff5c7a;
  box-shadow:0 0 0 0 rgba(255,92,122,.5);animation:shVoicePulse 1.2s infinite;
}
@keyframes shVoicePulse{
  0%{box-shadow:0 0 0 0 rgba(255,92,122,.45)}
  70%{box-shadow:0 0 0 8px rgba(255,92,122,0)}
  100%{box-shadow:0 0 0 0 rgba(255,92,122,0)}
}

.chat-media-gone{
  display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:12px;
  background:rgba(0,0,0,.25);border:1px dashed rgba(255,255,255,.15);
  color:#9db5c0;font-size:13px;max-width:min(100%,320px);
}
.chat-media-gone small{font-size:11px;opacity:.85}
.chat-mix-img-wrap{position:relative;display:inline-block;max-width:100%}
.chat-delay-btn{
  display:inline-block;margin-top:6px;padding:4px 10px;border-radius:8px;cursor:pointer;
  border:1px solid rgba(255,200,100,.4);background:rgba(255,180,60,.12);color:#ffe6b0;
  font-size:11px;font-weight:700;
}
.chat-delay-btn:hover{background:rgba(255,180,60,.22)}
.chat-voice-msg{max-width:min(100%,320px)}

.sh-voice-stop{
  appearance:none;border:1px solid rgba(125,227,255,.35);background:rgba(125,227,255,.08);
  color:#e8fbff;width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:11px;line-height:1;flex-shrink:0
}
.sh-voice-stop:hover{background:rgba(125,227,255,.18)}
.sh-voice-play.is-playing{background:rgba(125,227,255,.28);border-color:rgba(125,227,255,.55)}


/* ===== SH Audio player (pola klasik) ===== */
.sh-audio{
  display:block;width:100%;max-width:min(100%,300px);
  padding:10px 12px;border-radius:14px;box-sizing:border-box;
  background:rgba(0,0,0,.28);border:1px solid rgba(125,227,255,.22);
}
.sh-audio-row{display:flex;align-items:center;gap:8px}
.sh-audio-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:4px}
.sh-audio-times{
  font-size:12px;font-weight:700;color:#9ec8d6;
  font-variant-numeric:tabular-nums;letter-spacing:.02em;
}
.sh-audio-btn{
  appearance:none;flex-shrink:0;width:36px;height:36px;border-radius:50%;
  border:1px solid rgba(125,227,255,.4);background:rgba(125,227,255,.12);
  color:#e8fbff;cursor:pointer;font-size:13px;line-height:1;padding:0;
}
.sh-audio-btn:hover{background:rgba(125,227,255,.22)}
.sh-audio-play.is-playing{background:rgba(125,227,255,.3)}
.sh-audio-seek{
  -webkit-appearance:none;appearance:none;
  width:100%;height:8px;border-radius:999px;margin:0;
  background:rgba(125,227,255,.25);outline:none;cursor:pointer;
}
.sh-audio-seek::-webkit-slider-thumb{
  -webkit-appearance:none;width:16px;height:16px;border-radius:50%;
  background:#7de3ff;border:2px solid #0a1620;cursor:pointer;
  box-shadow:0 0 0 2px rgba(125,227,255,.25);
}
.sh-audio-seek::-moz-range-thumb{
  width:16px;height:16px;border-radius:50%;
  background:#7de3ff;border:2px solid #0a1620;cursor:pointer;
}
.sh-audio-ttl{margin-top:6px;font-size:11px;color:#8aa3ae}
.sh-audio audio{display:none!important}
/* legacy wrappers still OK */
.sh-voice-player,.chat-voice-player,.ann-voice-block{max-width:min(100%,300px)}
.sh-ann-body .sh-audio{margin-top:10px}


/* ========== SH Audio Player (sh-ap) — samakan desain chat ========== */
.sh-ap,
.ann-voice-slot-body .sh-ap,
.ann-voice-slot-render .sh-ap,
.sh-ann-body .sh-ap,
.sh-ann-splash .sh-ap{
  display:flex !important;
  flex-wrap:wrap;
  align-items:center;
  gap:6px 8px;
  width:100%;
  max-width:min(100%,280px);
  box-sizing:border-box;
  padding:8px 10px;
  border-radius:12px;
  background:rgba(0,0,0,.28);
  border:1px solid rgba(125,227,255,.22);
  position:relative;
}
.sh-ap-play,.sh-ap-stop,.sh-ap-dl{
  flex:0 0 auto;
  width:32px;height:32px;border-radius:50%;
  border:1px solid rgba(125,227,255,.35);
  background:rgba(125,227,255,.12);
  color:#e8fbff;cursor:pointer;font-size:12px;
  display:inline-flex;align-items:center;justify-content:center;
  padding:0;line-height:1;appearance:none;
}
.sh-ap-play:hover,.sh-ap-stop:hover,.sh-ap-dl:hover{background:rgba(125,227,255,.22)}
.sh-ap-body{
  flex:1 1 120px;
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:3px;
}
.sh-ap-time{
  font-size:12px;font-weight:700;color:#9ec8d6;
  font-variant-numeric:tabular-nums;line-height:1.2;
}
.sh-ap-meta{
  width:100%;
  font-size:11px;color:#8aa3ae;line-height:1.3;
  margin:0;
}
/* Track tipis seperti chat — bukan batang tebal */
.sh-ap-seek{
  -webkit-appearance:none !important;
  appearance:none !important;
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  height:4px !important;
  margin:2px 0 0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:999px !important;
  background:rgba(125,227,255,.22) !important;
  outline:none !important;
  cursor:pointer;
  position:static !important;
  box-shadow:none !important;
}
.sh-ap-seek::-webkit-slider-runnable-track{
  height:4px !important;
  border-radius:999px;
  background:rgba(125,227,255,.22);
}
.sh-ap-seek::-webkit-slider-thumb{
  -webkit-appearance:none !important;
  width:12px !important;
  height:12px !important;
  margin-top:-4px !important; /* pusatkan di track 4px */
  border-radius:50%;
  background:#7de3ff !important;
  border:2px solid #0b1520 !important;
  box-shadow:none !important;
  cursor:pointer;
}
.sh-ap-seek::-moz-range-track{
  height:4px !important;
  border-radius:999px;
  background:rgba(125,227,255,.22);
  border:none;
}
.sh-ap-seek::-moz-range-thumb{
  width:12px !important;
  height:12px !important;
  border-radius:50%;
  background:#7de3ff !important;
  border:2px solid #0b1520 !important;
  cursor:pointer;
}
.sh-ap-audio,.sh-ap audio{
  position:absolute!important;width:1px!important;height:1px!important;
  opacity:0!important;pointer-events:none!important;left:-9999px!important;
}
.chat-voice-msg{max-width:280px}
.sh-ann-body .sh-ap,
.ann-voice-slot-body .sh-ap{margin-top:6px}

/* netralkan sisa CSS lama yang bikin slider loncat / tebal */
.sh-voice-seek-wrap,.sh-voice-seek-fill{display:none!important}
.sh-audio-seek{max-width:100%;height:4px!important}
.sh-ann-body .sh-voice-seek{height:4px!important}

/* Flash ringkas saat lompat ke form edit admin */
.admin-form-flash, form.admin-form-flash, #annForm.admin-form-flash{
  outline: 2px solid rgba(125,227,255,.65);
  outline-offset: 6px;
  border-radius: 12px;
  transition: outline-color .3s ease;
}

/* Pengumuman: jangan pernah tampilkan audio native */
.sh-ann-splash audio,
.sh-ann-body audio,
.ann-voice-slot-render audio,
.sh-ap audio{
  position:absolute !important;
  width:1px !important;
  height:1px !important;
  opacity:0 !important;
  pointer-events:none !important;
  left:-9999px !important;
}
.sh-ann-splash audio[controls],
.sh-ann-body audio[controls]{
  /* native controls tetap disembunyikan */
  position:absolute !important;
  opacity:0 !important;
  pointer-events:none !important;
}
.ann-voice-slot-body .sh-ap,
.ann-voice-slot-render .sh-ap,
.sh-ann-body .sh-ap{
  position:relative;
  z-index:5;
  pointer-events:auto;
}
.ann-voice-slot-body .sh-ap-play,
.ann-voice-slot-render .sh-ap-play,
.sh-ann-body .sh-ap-play{
  pointer-events:auto;
  cursor:pointer;
  z-index:6;
}

/* Hint saat avatar diklik — sorot tombol aksi */
.chat-bubble.actions-hint .chat-actions{
  animation: chatActionsPulse 1.1s ease 2;
}
.chat-bubble.actions-hint .chat-act-reply{
  box-shadow: 0 0 0 2px rgba(125,227,255,.55);
  background: rgba(125,227,255,.22);
}
@keyframes chatActionsPulse{
  0%,100%{ opacity:1; transform:translateY(0); }
  50%{ opacity:1; transform:translateY(-1px); }
}

/* Chat fields: satu baris nama | ruang | cari */
.chat-fields{display:flex;flex-direction:column;gap:8px}
.chat-fields-row{
  display:grid;
  grid-template-columns:auto minmax(0,1.15fr) minmax(0,.72fr) minmax(0,1.15fr);
  gap:8px;
  align-items:end;
}
.chat-f-avatar{position:relative;min-width:52px}
.chat-f-avatar .chat-f-label,
.chat-fields-row .chat-f-avatar > span.chat-f-label{
  display:block;font-size:11px;margin-bottom:3px;color:#8aa3ae;white-space:nowrap;
}
.chat-f-avatar .chat-avatar-toggle{
  min-width:48px;padding:6px 8px;justify-content:center;
}
.chat-f-avatar .chat-avatar-toggle-label{display:none}
.chat-f-avatar .chat-avatar-picker{
  position:absolute;left:0;top:calc(100% + 4px);z-index:30;
  /* 4 kolom: 4*40 + 3*6 gap + padding 16 ≈ 200 → min 220 */
  width:max-content;
  min-width:220px;
  max-width:min(320px,92vw);
  background:rgba(8,18,28,.93);
  border:1px solid rgba(125,227,255,.28);
  box-shadow:0 8px 22px rgba(0,0,0,.45);
  display:grid;
  grid-template-columns:repeat(4, 40px);
  gap:6px;
  justify-content:start;
  padding:10px;
  max-height:220px;
  overflow:auto;
}
.chat-fields-row .field{margin:0;min-width:0}
.chat-fields-row .field > span{
  display:block;font-size:11px;margin-bottom:3px;color:#8aa3ae;white-space:nowrap;
}
.chat-fields-row input,
.chat-fields-row select{
  width:100%;box-sizing:border-box;min-width:0;
}
.chat-search-wrap{position:relative}
.chat-search-nav{
  position:absolute;left:0;right:0;bottom:calc(100% + 4px);
  display:flex;align-items:center;gap:4px;
  padding:4px 6px;border-radius:10px;
  background:rgba(8,18,28,.96);
  border:1px solid rgba(125,227,255,.3);
  box-shadow:0 6px 18px rgba(0,0,0,.35);
  z-index:20;
  width:max-content;max-width:100%;
  margin-left:auto;
}
/* Default tersembunyi — display:flex di atas tidak boleh menimpa [hidden] */
.chat-search-nav[hidden],
.chat-search-nav.is-hidden{
  display:none !important;
}
.chat-search-count{
  font-size:11px;font-weight:700;color:#9ec8d6;
  font-variant-numeric:tabular-nums;padding:0 4px;white-space:nowrap;
}
.chat-search-nav-btn{
  appearance:none;border:1px solid rgba(125,227,255,.3);
  background:rgba(125,227,255,.1);color:#e8fbff;
  width:26px;height:26px;border-radius:7px;cursor:pointer;
  font-size:11px;line-height:1;padding:0;
}
.chat-search-nav-btn:hover{background:rgba(125,227,255,.22)}
.chat-search-nav-btn:disabled{opacity:.4;cursor:default}
.chat-bubble.chat-search-current{
  outline:2px solid rgba(125,227,255,.55);
  outline-offset:2px;
  background:rgba(125,227,255,.06);
}
@media (max-width:640px){
  .chat-fields-row{grid-template-columns:auto 1fr 1fr}
  .chat-f-search{grid-column:1/-1}
}

.ann-days-grid{display:flex;flex-wrap:wrap;gap:8px 12px;margin-top:6px}
.ann-days-grid .check{margin:0;font-size:13px}

.chat-search-sep{opacity:.45;padding:0 2px;font-size:11px;color:#9ec8d6}
.chat-search-msg-count{opacity:.95}
mark.chat-hit.chat-search-kw-current{
  outline:2px solid #7de3ff;
  background:rgba(255,220,80,.55)!important;
  box-shadow:0 0 0 2px rgba(125,227,255,.35);
}
.chat-search-nav{flex-wrap:wrap;max-width:min(100%,340px)}


/* ========== FORCE voice player = tampilan chat (satu desain) ========== */
.sh-ap,
.chat-voice-msg .sh-ap,
.ann-voice-slot-body .sh-ap,
.ann-voice-slot-render .sh-ap,
.sh-ann-body .sh-ap,
.sh-ann-splash .sh-ap,
.chat-bubble .sh-ap{
  display:flex !important;
  flex-direction:row !important;
  flex-wrap:wrap !important;
  align-items:center !important;
  gap:8px !important;
  width:auto !important;
  max-width:min(100%,280px) !important;
  box-sizing:border-box !important;
  padding:8px 10px !important;
  margin:0 !important;
  border-radius:12px !important;
  background:rgba(0,0,0,.28) !important;
  border:1px solid rgba(125,227,255,.22) !important;
  box-shadow:none !important;
}
.sh-ap > .sh-ap-play,
.sh-ap > .sh-ap-stop,
.sh-ap > .sh-ap-dl{
  flex:0 0 34px !important;
  width:34px !important;
  height:34px !important;
  min-width:34px !important;
  border-radius:50% !important;
  border:1px solid rgba(125,227,255,.35) !important;
  background:rgba(125,227,255,.12) !important;
  color:#e8fbff !important;
  font-size:12px !important;
  line-height:1 !important;
  padding:0 !important;
  margin:0 !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}
.sh-ap > .sh-ap-body{
  flex:1 1 110px !important;
  min-width:90px !important;
  max-width:none !important;
  display:flex !important;
  flex-direction:column !important;
  gap:2px !important;
  margin:0 !important;
  padding:0 !important;
  background:transparent !important;
  border:none !important;
}
.sh-ap .sh-ap-time{
  font-size:12px !important;
  font-weight:700 !important;
  color:#9ec8d6 !important;
  line-height:1.2 !important;
  margin:0 !important;
  padding:0 !important;
}
/* Garis seek tipis seperti di chat */
.sh-ap .sh-ap-seek,
.ann-voice-slot-body .sh-ap-seek,
.sh-ann-body .sh-ap-seek,
.sh-ann-splash .sh-ap-seek{
  -webkit-appearance:none !important;
  appearance:none !important;
  display:block !important;
  width:100% !important;
  height:3px !important;
  min-height:3px !important;
  max-height:3px !important;
  margin:4px 0 0 !important;
  padding:0 !important;
  border:none !important;
  border-radius:999px !important;
  background:rgba(125,227,255,.35) !important;
  box-shadow:none !important;
  outline:none !important;
}
.sh-ap .sh-ap-seek::-webkit-slider-runnable-track,
.ann-voice-slot-body .sh-ap-seek::-webkit-slider-runnable-track{
  height:3px !important;
  border-radius:999px !important;
  background:rgba(125,227,255,.35) !important;
  border:none !important;
}
.sh-ap .sh-ap-seek::-webkit-slider-thumb,
.ann-voice-slot-body .sh-ap-seek::-webkit-slider-thumb{
  -webkit-appearance:none !important;
  width:11px !important;
  height:11px !important;
  margin-top:-4px !important;
  border-radius:50% !important;
  background:#7de3ff !important;
  border:2px solid #0b1520 !important;
  box-shadow:none !important;
}
.sh-ap .sh-ap-seek::-moz-range-track{
  height:3px !important;
  border-radius:999px !important;
  background:rgba(125,227,255,.35) !important;
  border:none !important;
}
.sh-ap .sh-ap-seek::-moz-range-thumb{
  width:11px !important;
  height:11px !important;
  border-radius:50% !important;
  background:#7de3ff !important;
  border:2px solid #0b1520 !important;
}
.sh-ap .sh-ap-meta{
  flex:1 0 100% !important;
  width:100% !important;
  margin:2px 0 0 !important;
  padding:0 !important;
  font-size:11px !important;
  color:#8aa3ae !important;
  background:transparent !important;
  border:none !important;
}
/* slot pengumuman: jangan dobel bingkai di luar player */
.ann-voice-slot-body{padding:0 !important;margin:0 !important;background:transparent !important}


/* ===== Video conference / share screen (chat room) ===== */
.vc-bar{margin:6px 0 0}
.vc-panel{
  margin:8px 0 4px;padding:10px 12px;border-radius:14px;
  border:1px solid rgba(125,227,255,.28);background:rgba(8,18,28,.92);
  max-width:100%;
}
.vc-panel[hidden]{display:none!important}
.vc-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.vc-head strong{font-size:13px;color:#e8fbff}
.vc-status{font-size:11px;flex:1 1 auto}
.vc-close{
  appearance:none;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.06);
  color:#cfe8f0;width:28px;height:28px;border-radius:8px;cursor:pointer;line-height:1;
}
.vc-hint{font-size:11px;margin:0 0 8px;line-height:1.4}
.vc-videos{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;
  margin-bottom:8px;min-height:0;
}
.vc-tile{
  position:relative;border-radius:10px;overflow:hidden;
  background:#000;border:1px solid rgba(125,227,255,.2);aspect-ratio:16/10;
}
.vc-tile video{width:100%;height:100%;object-fit:contain;background:#000;display:block}
.vc-tile .vc-label{
  position:absolute;left:6px;bottom:6px;font-size:10px;padding:2px 6px;border-radius:6px;
  background:rgba(0,0,0,.65);color:#e8fbff;
}
.vc-actions{display:flex;flex-wrap:wrap;gap:6px}
.vc-actions .btn{font-size:12px;padding:6px 10px}
@media (max-width:640px){
  .vc-videos{grid-template-columns:1fr}
  .vc-tile{aspect-ratio:16/11}
}
[data-theme="light"] .vc-panel{
  background:rgba(255,255,255,.96);border-color:rgba(26,143,209,.25);
}
[data-theme="light"] .vc-head strong{color:#0c2433}

.vc-meta{font-size:11px;font-weight:700;color:#7de3ff;padding:2px 8px;border-radius:999px;background:rgba(125,227,255,.1);border:1px solid rgba(125,227,255,.25)}
.vc-sfu-wrap{margin:8px 0;border-radius:12px;overflow:hidden;border:1px solid rgba(125,227,255,.25);background:#000}
.vc-sfu-frame{display:block;width:100%;min-height:min(52vh,420px);height:52vh;border:0;background:#111}
@media (max-width:640px){.vc-sfu-frame{min-height:40vh;height:40vh}}


/* ===== SHDialog — modal custom ===== */
.sh-dialog-root{
  position:fixed;inset:0;z-index:10050;
  display:none;align-items:center;justify-content:center;
  padding:16px;
}
.sh-dialog-root.is-open{display:flex}
.sh-dialog-backdrop{
  position:absolute;inset:0;
  background:rgba(4,10,16,.62);
  backdrop-filter:blur(4px);
}
.sh-dialog{
  position:relative;z-index:1;
  width:min(420px,100%);
  padding:16px 18px;
  border-radius:16px;
  border:1px solid rgba(125,227,255,.28);
  background:linear-gradient(180deg,rgba(14,24,34,.98),rgba(8,16,24,.98));
  box-shadow:0 20px 60px rgba(0,0,0,.45);
  color:var(--text,#eef7fb);
}
.sh-dialog-title{font-weight:800;font-size:15px;margin-bottom:8px;color:#e8fbff}
.sh-dialog-body{font-size:13px;line-height:1.45;color:#b7c9d2;white-space:pre-wrap}
.sh-dialog-field{margin-top:12px}
.sh-dialog-input{
  width:100%;box-sizing:border-box;
  padding:10px 12px;border-radius:10px;
  border:1px solid rgba(125,227,255,.28);
  background:rgba(0,0,0,.28);color:#eef7fb;font-size:14px;
}
.sh-dialog-input:focus{outline:none;border-color:#5ec8ff}
.sh-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px;flex-wrap:wrap}
[data-theme="light"] .sh-dialog{
  background:linear-gradient(180deg,#fff,#f4f8fc);
  border-color:rgba(26,143,209,.25);
  color:#0c2433;
}
[data-theme="light"] .sh-dialog-title{color:#0c2433}
[data-theme="light"] .sh-dialog-body{color:#4a6a7c}
[data-theme="light"] .sh-dialog-input{
  background:#fff;color:#0c2433;border-color:rgba(26,143,209,.3);
}
[data-theme="light"] .sh-dialog-backdrop{background:rgba(20,40,60,.35)}


/* ===== Native form theming ===== */
input[type="date"],
input[type="time"],
input[type="datetime-local"],
select {
  color-scheme: dark;
  min-height: 38px;
  padding: 6px 10px;
  border-radius: 10px;
  border: 1px solid var(--line, rgba(125,227,255,.22));
  background: rgba(0,0,0,.22);
  color: var(--text, #eef7fb);
}
input[type="checkbox"],
input[type="radio"] {
  accent-color: var(--accent, #5ec8ff);
  width: 16px;
  height: 16px;
  cursor: pointer;
}
input[type="file"] {
  max-width: 100%;
  font-size: 12px;
  color: var(--muted, #8fa7b4);
}
details {
  border: 1px solid var(--line, rgba(125,227,255,.15));
  border-radius: 12px;
  padding: 8px 12px;
  background: rgba(0,0,0,.12);
}
details > summary {
  cursor: pointer;
  font-weight: 600;
  list-style: none;
}
details > summary::-webkit-details-marker { display: none; }
details > summary::before { content: "▸ "; color: var(--accent, #5ec8ff); }
details[open] > summary::before { content: "▾ "; }
[data-theme="light"] input[type="date"],
[data-theme="light"] input[type="time"],
[data-theme="light"] input[type="datetime-local"],
[data-theme="light"] select {
  color-scheme: light;
  background: rgba(255,255,255,.95);
  color: #0c2433;
  border-color: rgba(26,143,209,.22);
}
[data-theme="light"] details {
  background: rgba(255,255,255,.9);
  border-color: rgba(26,143,209,.18);
}


/* Chat image lightbox + zoom */
.chat-mix-img, .chat-img, img[data-full]{cursor:zoom-in}
.chat-lb-root{
  position:fixed;inset:0;z-index:10060;
  display:none;align-items:center;justify-content:center;
  padding:12px;
}
.chat-lb-root.is-open{display:flex}
.chat-lb-backdrop{
  position:absolute;inset:0;background:rgba(2,8,14,.82);backdrop-filter:blur(6px);
}
.chat-lb-panel{
  position:relative;z-index:1;
  width:min(960px,100%);
  max-height:min(92vh,900px);
  display:flex;flex-direction:column;gap:8px;
  padding:10px;border-radius:16px;
  border:1px solid rgba(125,227,255,.28);
  background:rgba(8,16,24,.96);
  box-shadow:0 24px 80px rgba(0,0,0,.5);
}
.chat-lb-toolbar{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.chat-lb-btn{min-width:40px;padding:6px 10px}
.chat-lb-stage{
  flex:1 1 auto;min-height:200px;max-height:min(78vh,760px);
  overflow:hidden;border-radius:12px;background:#000;
  display:flex;align-items:center;justify-content:center;
  touch-action:none;
}
.chat-lb-img{
  max-width:100%;max-height:min(76vh,740px);
  object-fit:contain;transform-origin:center center;
  cursor:grab;user-select:none;-webkit-user-drag:none;
}
.chat-lb-img:active{cursor:grabbing}
.chat-lb-hint{margin:0;font-size:11px;text-align:center}
#chatClearRoom{font-size:12px}
[data-theme="light"] .chat-lb-panel{
  background:rgba(255,255,255,.98);border-color:rgba(26,143,209,.25);
}
[data-theme="light"] .chat-lb-backdrop{background:rgba(20,40,60,.55)}

/* Unduh gambar chat (thumbnail) */
.chat-mix-img-wrap{position:relative;display:inline-block;max-width:100%}
.chat-img-dl{
  position:absolute;right:6px;top:6px;z-index:2;
  width:30px;height:30px;border-radius:8px;
  border:1px solid rgba(125,227,255,.35);
  background:rgba(8,16,24,.82);color:#e8fbff;
  font-size:14px;line-height:1;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  padding:0;opacity:.92;
}
.chat-img-dl:hover{background:rgba(30,80,110,.95);border-color:#7de3ff}
[data-theme="light"] .chat-img-dl{
  background:rgba(255,255,255,.92);color:#0c2433;border-color:rgba(26,143,209,.35);
}



[data-theme="light"] .amx-panel{
  background:linear-gradient(180deg,#fff,#f4f8fc);
  border-color:rgba(26,143,209,.28);color:#0c2433;
}
[data-theme="light"] .amx-track{background:#fff;border-color:rgba(26,143,209,.2)}
[data-theme="light"] .amx-backdrop{background:rgba(20,40,60,.45)}


/* ===== Audio Mixer (compact) ===== */
.chat-mixer-btn{font-size:15px}
.amx-root{
  position:fixed;inset:0;z-index:10070;
  display:none;align-items:flex-end;justify-content:center;
  padding:10px;
}
.amx-root.is-open{display:flex}
.amx-backdrop{position:absolute;inset:0;background:rgba(2,8,14,.55)}
.amx-panel{
  position:relative;z-index:1;
  width:min(420px,100%);
  max-height:min(94vh,920px);
  overflow:visible;
  padding:10px 12px;
  border-radius:14px;
  border:1px solid rgba(125,227,255,.28);
  background:linear-gradient(180deg,rgba(14,24,34,.98),rgba(8,16,24,.98));
  box-shadow:0 16px 48px rgba(0,0,0,.45);
  color:var(--text,#eef7fb);
  font-size:12px;
}
.amx-head{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.amx-head strong{font-size:13px}
.amx-sub{flex:1;font-size:10px}
.amx-x{padding:2px 8px!important;min-height:28px}
.amx-toolbar{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.amx-sm{font-size:11px!important;padding:4px 8px!important;min-height:28px}
.amx-xs{font-size:10px!important;padding:2px 6px!important;min-height:24px}
.amx-upload{display:inline-flex;align-items:center;cursor:pointer;margin:0}
.amx-rec-bar{
  display:flex;align-items:center;gap:8px;
  padding:6px 8px;margin-bottom:6px;
  border-radius:10px;
  border:1px solid rgba(125,227,255,.2);
  background:rgba(0,0,0,.25);
}
.amx-dot{
  width:8px;height:8px;border-radius:50%;
  background:#ff5c7a;box-shadow:0 0 8px rgba(255,92,122,.7);
  animation:amxPulse 1s ease-in-out infinite;
}
@keyframes amxPulse{50%{opacity:.35}}
.amx-timer{font-variant-numeric:tabular-nums;font-weight:700;font-size:13px;min-width:42px}
.amx-meter{flex:1;max-width:160px;height:26px;border-radius:6px;background:rgba(0,0,0,.35)}
.amx-status{font-size:11px;margin-bottom:6px;min-height:1.1em}
.amx-tracks{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}
.amx-track{
  display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap;
  padding:5px 8px;border-radius:8px;
  border:1px solid rgba(125,227,255,.15);background:rgba(0,0,0,.18);
}
.amx-track.is-muted{opacity:.5}
.amx-track-main{display:flex;align-items:center;gap:6px;min-width:0;flex:1}
.amx-track-idx{font-weight:800;color:#7de3ff;font-size:11px}
.amx-track-name{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}
.amx-track-dur{font-size:10px;color:#8fa7b4}
.amx-track-acts{display:flex;gap:3px;flex-wrap:wrap}
.amx-foot{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.amx-empty{margin:4px 0;font-size:11px}
[data-theme="light"] .amx-panel{
  background:linear-gradient(180deg,#fff,#f4f8fc);
  border-color:rgba(26,143,209,.28);color:#0c2433;
}
[data-theme="light"] .amx-track{background:#fff;border-color:rgba(26,143,209,.18)}
[data-theme="light"] .amx-rec-bar{background:rgba(240,248,255,.9);border-color:rgba(26,143,209,.2)}
[data-theme="light"] .amx-backdrop{background:rgba(20,40,60,.4)}

/* Audio mixer transport + track progress */
.amx-transport{
  display:flex;align-items:center;gap:6px;
  margin-bottom:6px;padding:4px 0;
}
.amx-clock{
  font-variant-numeric:tabular-nums;font-size:11px;font-weight:700;
  min-width:34px;color:#9fd9ef;
}
.amx-clock-end{text-align:right;color:#8fa7b4;font-weight:600}
.amx-timeline{
  position:relative;flex:1;height:14px;border-radius:7px;
  background:rgba(0,0,0,.35);border:1px solid rgba(125,227,255,.18);
  cursor:pointer;overflow:hidden;
}
.amx-timeline-fill{
  position:absolute;left:0;top:0;bottom:0;width:0%;
  background:linear-gradient(90deg,rgba(94,200,255,.35),rgba(94,200,255,.55));
  pointer-events:none;
}
.amx-timeline-head{
  position:absolute;top:50%;left:0%;
  width:10px;height:10px;margin:-5px 0 0 -5px;
  border-radius:50%;background:#7de3ff;
  box-shadow:0 0 8px rgba(125,227,255,.7);
  pointer-events:none;
}
.amx-track-meta{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.amx-track-bar{
  height:4px;border-radius:2px;background:rgba(0,0,0,.35);
  overflow:hidden;margin-top:1px;max-width:160px;
}
.amx-track-bar-fill{
  height:100%;width:0%;
  background:linear-gradient(90deg,#3db8e8,#7de3ff);
  transition:width .08s linear;
}
.amx-rec-offset{font-size:10px;white-space:nowrap}
[data-theme="light"] .amx-timeline{background:rgba(26,143,209,.1);border-color:rgba(26,143,209,.22)}
[data-theme="light"] .amx-clock{color:#1a6f9a}
[data-theme="light"] .amx-track-bar{background:rgba(26,143,209,.12)}

.amx-panel{
  overflow:visible;
}
.amx-panel.is-dragging{opacity:.95;user-select:none}
.amx-drag{cursor:grab;touch-action:none}
.amx-drag:active,.amx-panel.is-dragging .amx-drag{cursor:grabbing}
.amx-tracks{
  max-height:none;
  overflow:visible;
}
.amx-sliders{
  display:flex;flex-direction:column;gap:2px;margin-top:3px;
  max-width:200px;
}
.amx-slider-lab{
  display:flex;align-items:center;gap:4px;
  font-size:9px;color:#8fa7b4;font-weight:600;
}
.amx-slider-lab input[type=range]{
  flex:1;min-width:0;height:14px;margin:0;cursor:pointer;
  accent-color:#5ec8ff;
}
.amx-slider-lab span{
  min-width:32px;text-align:right;font-variant-numeric:tabular-nums;
  color:#9fd9ef;
}
.amx-foot{flex-wrap:wrap;gap:4px}
@media (max-height:700px){
  .amx-panel{max-height:min(96vh,920px);overflow:auto}
}

.amx-nav{font-size:12px!important;padding:2px 6px!important;min-height:26px;min-width:28px}
.amx-track.is-solo{border-color:rgba(255,200,80,.55);box-shadow:0 0 0 1px rgba(255,200,80,.2)}
.amx-track-acts .is-solo,.amx-xs.is-solo{color:#ffc850;font-weight:800}
.chat-voice-title{font-size:12px;font-weight:700;color:#9fd9ef;margin:0 0 4px 2px}
[data-theme="light"] .chat-voice-title{color:#1a6f9a}

/* Wide playhead scrubber (bar utama) */
.amx-scrub-row{
  display:flex;align-items:center;gap:8px;
  margin:4px 0 8px;padding:2px 0;
}
.amx-timeline-wide,
.amx-timeline{
  position:relative;flex:1;height:22px;border-radius:11px;
  background:rgba(0,0,0,.4);border:1px solid rgba(125,227,255,.22);
  cursor:pointer;overflow:visible;touch-action:none;
}
.amx-timeline-wide{height:26px;border-radius:13px;min-width:0}
.amx-timeline.is-scrubbing{cursor:grabbing}
.amx-timeline-fill{
  position:absolute;left:0;top:0;bottom:0;width:0%;
  background:linear-gradient(90deg,rgba(94,200,255,.4),rgba(94,200,255,.7));
  border-radius:inherit;pointer-events:none;
}
.amx-timeline-head{
  position:absolute;top:50%;left:0%;
  width:16px;height:16px;margin:-8px 0 0 -8px;
  border-radius:50%;background:#7de3ff;
  box-shadow:0 0 10px rgba(125,227,255,.85),0 0 0 2px rgba(8,16,24,.6);
  pointer-events:none;z-index:2;
}
.amx-timeline-wide .amx-timeline-head{
  width:18px;height:18px;margin:-9px 0 0 -9px;
}
/* Indikator rekam kompak di kanan tombol transport */
.amx-rec-compact{
  display:flex;align-items:center;gap:5px;
  margin-left:auto;padding:3px 8px;
  border-radius:999px;
  border:1px solid rgba(255,92,122,.35);
  background:rgba(255,40,80,.12);
  max-width:42%;
}
.amx-rec-compact .amx-meter{
  flex:1;max-width:80px;height:18px;border-radius:4px;
  background:rgba(0,0,0,.35);
}
.amx-rec-compact .amx-timer{
  font-size:11px;font-weight:700;min-width:36px;
  font-variant-numeric:tabular-nums;
}
.amx-rec-compact .amx-rec-offset{font-size:9px;max-width:52px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.amx-transport{flex-wrap:wrap;gap:4px}
[data-theme="light"] .amx-timeline-wide,
[data-theme="light"] .amx-timeline{
  background:rgba(26,143,209,.12);border-color:rgba(26,143,209,.28);
}
[data-theme="light"] .amx-rec-compact{
  background:rgba(255,80,100,.08);border-color:rgba(220,60,90,.3);
}

.amx-region-tools{
  display:flex;align-items:center;gap:4px;flex-wrap:wrap;
  margin:2px 0 4px;
}
.amx-region-label{font-size:10px;margin-left:4px}
.amx-region{
  position:absolute;top:0;bottom:0;left:0;width:100%;
  background:rgba(94,200,255,.18);
  border-left:2px solid rgba(255,200,80,.9);
  border-right:2px solid rgba(255,200,80,.9);
  pointer-events:none;z-index:1;border-radius:2px;
}
.amx-handle{
  position:absolute;top:50%;width:14px;height:26px;
  margin:-13px 0 0 -7px;z-index:3;
  background:linear-gradient(180deg,#ffc850,#e6a820);
  border-radius:4px;border:1px solid rgba(0,0,0,.35);
  cursor:ew-resize;touch-action:none;
  box-shadow:0 1px 4px rgba(0,0,0,.4);
}
.amx-handle::after{
  content:"";position:absolute;left:4px;right:4px;top:6px;bottom:6px;
  border-left:1px solid rgba(0,0,0,.25);border-right:1px solid rgba(0,0,0,.25);
}
.amx-handle-in{background:linear-gradient(180deg,#7dffb0,#3ecf7a)}
.amx-handle-out{background:linear-gradient(180deg,#ff8a9a,#e04860)}

/* Indikator rekam: display:flex tidak boleh menimpa [hidden] */
.amx-rec-compact[hidden]{display:none!important}
.amx-rec-compact:not([hidden]){display:flex}
/* Pegangan In/Out lebih besar & mudah digeser */
.amx-handle{
  width:18px;height:32px;margin:-16px 0 0 -9px;
  z-index:5;
}
.amx-handle-in{left:0}
.amx-handle-out{left:100%}
.amx-region-label{font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}

/* ===== Chat emoji reactions (WA-style) ===== */
button.chat-author-name{
  display:inline;background:none;border:none;padding:0;margin:0;
  font:inherit;font-weight:700;color:inherit;cursor:pointer;
  border-radius:4px;
}
button.chat-author-name:hover{
  color:#7de3ff;
  text-decoration:underline;
  text-underline-offset:2px;
}
.chat-reacts{
  display:flex;flex-wrap:wrap;gap:4px;
  margin:6px 0 2px;
}
.chat-react-chip{
  display:inline-flex;align-items:center;gap:3px;
  border:1px solid rgba(125,227,255,.28);
  background:rgba(0,0,0,.28);
  border-radius:999px;
  padding:2px 8px 2px 6px;
  font-size:13px;line-height:1.3;
  cursor:pointer;color:#d7e8ef;
}
.chat-react-chip:hover{border-color:#7de3ff;background:rgba(94,200,255,.12)}
.chat-react-chip.is-mine{
  border-color:rgba(125,227,255,.7);
  background:rgba(94,200,255,.18);
  box-shadow:0 0 0 1px rgba(125,227,255,.25);
}
.chat-react-n{font-size:11px;font-weight:700;opacity:.9}
.chat-react-picker{
  display:flex;flex-wrap:wrap;gap:4px;
  margin:8px 0 4px;padding:6px 8px;
  border-radius:14px;
  background:rgba(12,20,28,.96);
  border:1px solid rgba(125,227,255,.3);
  box-shadow:0 8px 24px rgba(0,0,0,.45);
  width:max-content;max-width:100%;
  z-index:5;position:relative;
}
.chat-react-pick{
  width:36px;height:36px;border:none;border-radius:10px;
  background:transparent;font-size:20px;cursor:pointer;
  line-height:1;
}
.chat-react-pick:hover{background:rgba(94,200,255,.15);transform:scale(1.12)}
.chat-react-pick.is-active{
  background:rgba(94,200,255,.22);
  box-shadow:inset 0 0 0 1px rgba(125,227,255,.5);
}
[data-theme="light"] .chat-react-picker{
  background:#fff;border-color:rgba(26,143,209,.25);
  box-shadow:0 8px 24px rgba(0,0,0,.12);
}
[data-theme="light"] .chat-react-chip{
  background:rgba(26,143,209,.08);border-color:rgba(26,143,209,.25);color:#1a3a4a;
}
[data-theme="light"] button.chat-author-name:hover{color:#1a8fd1}

.chat-react-sec{margin:2px 0 4px}
.chat-react-sec-lab{
  display:block;font-size:10px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;color:#8fa7b4;margin:0 0 4px 2px;
}
.chat-react-sec-neg{color:#e88a9a}
.chat-react-sec-row{display:flex;flex-wrap:wrap;gap:4px}
.chat-react-picker{max-width:min(320px,92vw)}
/* Avatar picker: lebih banyak opsi karakter */
#chatAvatarPicker.chat-avatar-picker{
  max-height:220px;overflow:auto;
}
.chat-av-btn{font-size:20px;width:40px;height:40px;min-width:40px;min-height:40px;box-sizing:border-box}

/* Nama tampilan: fokus/klik membuka avatar */
#chatName:focus{
  border-color:rgba(125,227,255,.45);
  box-shadow:0 0 0 2px rgba(125,227,255,.12);
}

/* Waktu pesan: klik = histori edit */
button.chat-msg-time{
  appearance:none;border:0;background:transparent;
  font:inherit;font-size:11px;color:#8aa3ae;
  padding:0 2px;margin:0;cursor:pointer;
  border-radius:4px;
}
button.chat-msg-time.is-edited{
  color:#7db8ff;
  text-decoration:underline;
  text-decoration-style:dotted;
  text-underline-offset:2px;
}
button.chat-msg-time.is-edited:hover{
  color:#b8f0ff;
}
small.chat-msg-time{font-size:11px;color:#8aa3ae}

