@font-face{font-family:'Kantumruy';src:url('fonts/Kantumruy.ttf') format('truetype');font-weight:100 900;font-display:swap}
:root{
  --bg:#f4f5fb;--card:#fff;--ink:#1e2235;--mute:#646b85;--line:#e4e6f0;--line2:#d3d7e6;
  --brand:var(--p2);--brand2:var(--p1);--accent:#fbbf24;--ok:#059669;--warn:#b45309;--err:#dc2626;
  --pdf:#e11d48;--word:#2563eb;--excel:#059669;--image:#f59e0b;--other:#64748b;
  --c1:#3b82f6;--c2:#10b981;--c3:#8b5cf6;--c4:#f97316;--c5:#ec4899;--c6:#06b6d4;--c7:#eab308;--c8:#14b8a6;--c9:#6366f1;--c10:#94a3b8;--c11:#ef4444;
  --r:12px;
  --r:12px;--sh:0 1px 2px rgba(30,27,75,.05),0 2px 6px rgba(30,27,75,.06)
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:'Kantumruy',system-ui,sans-serif;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.55}
a{color:var(--brand2);text-decoration:none}a:hover{text-decoration:underline}
mark{background:#fde68a;color:inherit;padding:0 1px;border-radius:2px}

/* ===== ពណ៌កម្មវិធី (ជ្រើសក្នុង ការកំណត់) ===== */
:root,[data-skin="teal"]{ /* បៃតងខៀវ */
  --side:linear-gradient(185deg,#042f2e 0%,#0f4c47 55%,#115e59 100%);--side-txt:#d5f5ef;--side-sub:#9fd9cf;--side-mg:#7cc4b8;
  --p1:#14b8a6;--p2:#0f766e;--pd:#0f766e;--tint:#f0fdfa;--tag:#ccfbf1;--line3:#5eead4;--ring:rgba(13,148,136,.18);
  --marq:linear-gradient(90deg,#0f766e,#0284c7,#65a30d);
  --loginbg:radial-gradient(circle at 15% 20%,#2dd4bf 0,transparent 38%),radial-gradient(circle at 85% 80%,#38bdf8 0,transparent 38%),linear-gradient(135deg,#042f2e,#0f766e 60%,#0369a1)}
[data-skin="royal"]{ /* ក្រហមចាស់ និងមាស */
  --side:linear-gradient(185deg,#2a0606 0%,#5c0f0f 55%,#7f1d1d 100%);--side-txt:#fde8d8;--side-sub:#f2c4a8;--side-mg:#e0a382;
  --p1:#dc2626;--p2:#991b1b;--pd:#991b1b;--tint:#fef7f2;--tag:#fde4d4;--line3:#f5a97f;--ring:rgba(185,28,28,.16);
  --marq:linear-gradient(90deg,#991b1b,#c2410c,#ca8a04);
  --loginbg:radial-gradient(circle at 15% 20%,#f59e0b 0,transparent 38%),radial-gradient(circle at 85% 80%,#ef4444 0,transparent 38%),linear-gradient(135deg,#2a0606,#7f1d1d 60%,#b45309)}
[data-skin="ocean"]{ /* ខៀវសមុទ្រ */
  --side:linear-gradient(185deg,#071a36 0%,#0b2f63 55%,#0d3f85 100%);--side-txt:#dbeafe;--side-sub:#a9c6f0;--side-mg:#86a9dc;
  --p1:#0ea5e9;--p2:#1d4ed8;--pd:#1d4ed8;--tint:#f0f7ff;--tag:#dbeafe;--line3:#93c5fd;--ring:rgba(29,78,216,.15);
  --marq:linear-gradient(90deg,#1d4ed8,#0891b2,#16a34a);
  --loginbg:radial-gradient(circle at 15% 20%,#38bdf8 0,transparent 38%),radial-gradient(circle at 85% 80%,#34d399 0,transparent 38%),linear-gradient(135deg,#071a36,#1d4ed8 60%,#0e7490)}
[data-skin="violet"]{ /* ស្វាយ (ដើម) */
  --side:linear-gradient(185deg,#1e1b4b 0%,#312e81 55%,#4c1d95 100%);--side-txt:#e3e1ff;--side-sub:#c7c4f5;--side-mg:#a5a1e8;
  --p1:#4f46e5;--p2:#7c3aed;--pd:#6d28d9;--tint:#f5f3ff;--tag:#ede9fe;--line3:#a5b4fc;--ring:rgba(79,70,229,.15);
  --marq:linear-gradient(90deg,#4f46e5,#db2777,#f59e0b);
  --loginbg:radial-gradient(circle at 15% 20%,#f472b6 0,transparent 35%),radial-gradient(circle at 85% 80%,#22d3ee 0,transparent 35%),linear-gradient(135deg,#312e81,#6d28d9 60%,#db2777)}
.skins{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.skins label{border:2px solid var(--line);border-radius:10px;padding:6px;cursor:pointer;text-align:center;font-size:12.5px}
.skins input{display:none}.skins input:checked+span+b,.skins label:has(input:checked){border-color:var(--p2)}
.skins span{display:block;height:34px;border-radius:7px;margin-bottom:4px}
/* sidebar layout */
body.app{padding-left:256px}
.side{position:fixed;inset:0 auto 0 0;width:256px;background:var(--side);color:#fff;display:flex;flex-direction:column;z-index:30}
.brand{display:flex;align-items:center;gap:11px;color:#fff;padding:18px 18px 16px;border-bottom:1px solid rgba(255,255,255,.1)}
.brand:hover{text-decoration:none}
.logo{width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,#fde047,#f59e0b);display:grid;place-items:center;flex:none;box-shadow:0 4px 12px rgba(245,158,11,.35)}
.brand b{display:block;font-size:15.5px;font-weight:700;line-height:1.3}
.brand small{display:block;font-size:11.5px;color:var(--side-sub)}
.menu{flex:1;overflow:auto;padding:10px 12px}
.mg{font-size:11.5px;color:var(--side-mg);letter-spacing:.05em;padding:14px 10px 6px}
.menu a{display:flex;align-items:center;gap:11px;padding:7px 10px;border-radius:10px;color:var(--side-txt);font-size:14px;margin-bottom:2px}
.menu a:hover{background:rgba(255,255,255,.08);text-decoration:none}
.menu a i{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;flex:none;font-style:normal;color:#fff}
.menu a.on{background:rgba(255,255,255,.14);color:#fff;font-weight:600;box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
.menu a.c1 i{background:var(--c1)}
.menu a.c2 i{background:var(--c2)}
.menu a.c3 i{background:var(--c3)}
.menu a.c4 i{background:var(--c4)}
.menu a.c5 i{background:var(--c5)}
.menu a.c6 i{background:var(--c6)}
.menu a.c7 i{background:var(--c7)}
.menu a.c8 i{background:var(--c8)}
.menu a.c9 i{background:var(--c9)}
.menu a.c10 i{background:var(--c10)}
.menu a.c11 i{background:var(--c11)}
.me{display:flex;align-items:center;gap:8px;padding:12px 14px;border-top:1px solid rgba(255,255,255,.1);background:rgba(0,0,0,.15)}
.av{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#f472b6,#8b5cf6);display:grid;place-items:center;font-weight:700;flex:none}
.me .who{flex:1;min-width:0;font-size:13px;line-height:1.3}
.me .who b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.me .who small{color:var(--side-sub);font-size:11.5px}
.me a{color:var(--side-sub);padding:6px;border-radius:7px;display:grid}.me a:hover{background:rgba(255,255,255,.1);color:#fff}
.mbar,.scrim,.tabbar,.pdf-m{display:none}
.marq{background:var(--marq);color:#fff;font-size:12.5px;overflow:hidden;white-space:nowrap}
.marq span{display:inline-block;padding:4px 0 4px 100%;animation:mq 40s linear infinite}
@keyframes mq{to{transform:translateX(-100%)}}
.tabs.mob{display:none}
.wrap{max-width:1280px;margin:0 auto;padding:16px}
/* flash */
.flash{padding:9px 14px;border-radius:8px;margin-bottom:10px;font-size:14px;border:1px solid}
.flash.ok{background:#ecfdf3;border-color:#abefc6;color:var(--ok)}
.flash.warn{background:#fffaeb;border-color:#fedf89;color:var(--warn)}
.flash.err{background:#fef3f2;border-color:#fecdca;color:var(--err)}
/* forms */
input,select,textarea,button{font-family:inherit;font-size:14px}
.in-f,input[type=text],input[type=password],input[type=date],input[type=number],input[type=search],select,textarea{
  border:1px solid var(--line2);border-radius:8px;padding:7px 10px;background:#fff;color:var(--ink);width:100%;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--brand2);box-shadow:0 0 0 3px var(--ring)}
textarea{resize:vertical;min-height:80px}
label.f{display:block;font-size:13px;color:var(--mute);margin:0 0 4px}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line2);background:#fff;color:var(--ink);
  padding:7px 14px;border-radius:8px;cursor:pointer;white-space:nowrap;font-weight:500;text-decoration:none!important}
.btn:hover{background:#f6f8fb}
.btn.pri{background:linear-gradient(135deg,var(--p1),var(--p2));border-color:var(--p1);color:#fff}.btn.pri:hover{filter:brightness(1.08)}
.btn.grn{background:linear-gradient(135deg,#10b981,#059669);border-color:#0ea372;color:#fff}.btn.grn:hover{filter:brightness(1.06)}
.btn.gold{background:var(--accent);border-color:var(--accent);color:#1b1b1b}
.btn.dan{color:var(--err);border-color:#f3c5c0}.btn.dan:hover{background:#fef3f2}
.btn.sm{padding:4px 10px;font-size:13px}
.btn svg{width:16px;height:16px}
/* toolbar (single row) */
.tbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:8px;box-shadow:var(--sh)}
.tbar .q{flex:1 1 150px;min-width:150px;position:relative}
.tbar .q input{padding-left:34px;height:38px;font-size:15px}
.tbar .q svg{position:absolute;left:10px;top:10px;width:18px;height:18px;color:var(--mute)}
.tbar select{width:auto;height:38px;flex:0 1 auto;max-width:126px;min-width:0}
.tbar input[type=date]{max-width:138px;padding:7px 6px}
.fbtn{display:none!important}
.tbar .btn{height:38px}
.tbar .sep{width:1px;height:24px;background:var(--line)}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 0}
.chip{display:inline-flex;gap:6px;align-items:center;padding:3px 10px;border-radius:99px;background:#fff;border:1px solid var(--line);font-size:13px;color:var(--mute)}
.chip.on{background:var(--brand2);border-color:var(--brand2);color:#fff}
/* stats */
.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:14px 0}
.stat{border-radius:var(--r);padding:14px 16px;display:flex;gap:12px;align-items:center;color:#fff;box-shadow:0 6px 16px -6px var(--sc,#4f46e5);background:linear-gradient(135deg,var(--sa),var(--sb))}
.stat .ft{background:rgba(255,255,255,.22)!important}.stat .ft::after{border-color:transparent var(--sb) rgba(255,255,255,.3) transparent}
.stat small{color:rgba(255,255,255,.88)!important}
.stat.s0{--sa:var(--p1);--sb:var(--p2);--sc:var(--p2)}.stat.s1{--sa:#f43f5e;--sb:#e11d48;--sc:#e11d48}.stat.s2{--sa:#3b82f6;--sb:#2563eb;--sc:#2563eb}.stat.s3{--sa:#10b981;--sb:#059669;--sc:#059669}.stat.s4{--sa:#fbbf24;--sb:#f59e0b;--sc:#f59e0b}
.stat:hover{text-decoration:none;transform:translateY(-1px)}
.stat b{font-size:22px;display:block;line-height:1.1}
.stat small{color:var(--mute);font-size:12.5px}
/* file type badge */
.ft{width:38px;height:46px;border-radius:6px;display:grid;place-items:center;color:#fff;font-size:10.5px;font-weight:700;letter-spacing:.3px;flex:none;position:relative;font-family:system-ui,sans-serif}
.ft::after{content:'';position:absolute;top:0;right:0;border-width:0 10px 10px 0;border-style:solid;border-color:transparent var(--bg) rgba(255,255,255,.35) transparent}
.ft.pdf{background:var(--pdf)}.ft.word{background:var(--word)}.ft.excel{background:var(--excel)}.ft.image{background:var(--image)}.ft.other{background:var(--other)}
.ft.big{width:54px;height:66px;font-size:13px}
/* results */
.rhead{display:flex;justify-content:space-between;align-items:center;margin:16px 2px 8px;color:var(--mute);font-size:13.5px}
.list{display:flex;flex-direction:column;gap:8px}
.item{display:flex;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px;box-shadow:var(--sh);align-items:flex-start}
.item:hover{border-color:#c8d3e3}
.thumb{width:64px;height:80px;border-radius:6px;border:1px solid var(--line);overflow:hidden;flex:none;background:#fafbfc;display:grid;place-items:center}
.thumb img{width:100%;height:100%;object-fit:cover;object-position:top}
.item .body{flex:1;min-width:0}
.item h3{margin:0;font-size:15.5px;font-weight:600;line-height:1.4}
.item h3 a{color:var(--ink)}
.meta{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12.5px;color:var(--mute);margin:3px 0 5px}
.meta span{display:inline-flex;align-items:center;gap:4px}
.snip{font-size:13.5px;color:#3b4555;line-height:1.6;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.acts{display:flex;flex-direction:column;gap:6px;flex:none}
.tag{display:inline-block;padding:0 8px;border-radius:99px;font-size:12px;background:var(--tag);color:var(--pd)}
.tag.share{background:#fdf6e3;color:#8a6a00}
.tag.pend{background:#fff4e5;color:var(--warn)}
.empty{text-align:center;padding:50px 20px;color:var(--mute);background:var(--card);border:1px dashed var(--line2);border-radius:var(--r)}
.pager{display:flex;gap:6px;justify-content:center;margin:16px 0}
/* cards / panels */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
.card .hd{padding:11px 16px;border-bottom:1px solid var(--line);background:linear-gradient(90deg,var(--tint),#fff 70%);border-radius:var(--r) var(--r) 0 0;display:flex;align-items:center;gap:10px;font-weight:600}
.card .bd{padding:16px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.row{margin-bottom:12px}
/* upload */
.drop{display:block;border:2px dashed var(--line3);border-radius:14px;background:linear-gradient(135deg,var(--tint),#fff 60%,var(--tint));padding:34px 20px;text-align:center;cursor:pointer;transition:.15s}
.drop:hover,.drop.over{border-color:var(--p2);background:var(--tag)}
.drop svg{width:44px;height:44px;color:var(--p2);display:block;margin:0 auto}
.drop b{display:block;font-size:16px;margin:8px 0 2px}
.drop small{color:var(--mute)}
.flist{margin-top:12px;display:flex;flex-direction:column;gap:6px}
.fl{display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:13.5px}
.fl .ft{width:28px;height:34px;font-size:8.5px}
.fl .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fl .sz{color:var(--mute);font-size:12.5px}
.fl .st{font-size:12.5px;min-width:90px;text-align:right}
.bar{height:6px;background:#e7ecf3;border-radius:99px;overflow:hidden;margin-top:10px;display:none}
.bar i{display:block;height:100%;width:0;background:var(--brand2);transition:width .2s}
.radios{display:flex;gap:14px;flex-wrap:wrap;font-size:14px}
.radios label{display:flex;gap:5px;align-items:center;cursor:pointer}
.checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:4px 12px;margin-top:8px;padding:10px;border:1px solid var(--line);border-radius:8px;max-height:180px;overflow:auto;font-size:13.5px}
.checks label{display:flex;gap:6px;align-items:center}
/* doc view */
.dv{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:14px;align-items:start}
.preview{background:#525659;border-radius:var(--r);overflow:hidden;height:calc(100vh - 170px);min-height:480px}
.preview iframe{width:100%;height:100%;border:0;background:#fff}
.preview.img{display:grid;place-items:center;overflow:auto;background:#2b2e33}
.preview.img img{max-width:100%;max-height:100%}
.preview.txt{background:#fff;padding:20px 24px;overflow:auto;white-space:pre-wrap;font-size:14px;line-height:1.75;border:1px solid var(--line)}
.kv{display:grid;grid-template-columns:120px 1fr;gap:6px 10px;font-size:13.5px}
.kv dt{color:var(--mute)}.kv dd{margin:0;word-break:break-word}
.dside .card+.card{margin-top:12px}
/* modal */
.modal{position:fixed;inset:0;background:rgba(16,24,40,.45);display:none;align-items:flex-start;justify-content:center;z-index:50;padding:40px 16px;overflow:auto}
.modal.open{display:flex}
.modal .box{background:#fff;border-radius:12px;width:100%;max-width:620px;box-shadow:0 20px 50px rgba(0,0,0,.25)}
.modal .box.wide{max-width:880px}
.modal .mh{padding:13px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-weight:600}
.modal .mb{padding:18px}
.modal .mf{padding:12px 18px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}
.x{border:0;background:none;font-size:22px;line-height:1;cursor:pointer;color:var(--mute)}
/* admin */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px;overflow-x:auto}
.tabs a{padding:8px 14px;color:var(--mute);border-bottom:2px solid transparent;white-space:nowrap;font-size:14px}
.tabs a.on{color:var(--pd);border-color:var(--p2);font-weight:600}
.tabs a:hover{text-decoration:none;color:var(--ink)}
table.t{width:100%;border-collapse:collapse;font-size:13.5px;background:#fff}
table.t th{text-align:left;font-weight:600;color:var(--pd);font-size:12.5px;background:var(--tint);padding:8px 10px;border-bottom:1px solid var(--line)}
table.t td{padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
table.t tr:hover td{background:#fafcff}
.yes{color:var(--ok);font-weight:600}.no{color:#c0c6cf}
.matrix th.v{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;height:160px;vertical-align:bottom;padding:6px 4px;text-align:left}
.matrix td{text-align:center}.matrix td:first-child{text-align:left;white-space:nowrap}
.matrix td.self{background:#f0f3f7}
.login{min-height:100vh;display:grid;place-items:center;background:var(--loginbg)}
.login .card{width:380px;max-width:92vw;padding:26px 28px}
.login .logo{width:52px;height:52px;margin:0 auto 10px;border-radius:12px}
.muted{color:var(--mute)}.small{font-size:12.5px}
.spin{display:inline-block;width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:sp .8s linear infinite;vertical-align:-1px}
@keyframes sp{to{transform:rotate(360deg)}}
@media (max-width:980px){
  body.app{padding-left:0}
  .side{transform:translateX(-100%);transition:transform .2s;box-shadow:0 0 40px rgba(0,0,0,.3)}
  body.navopen .side{transform:none}
  body.navopen .scrim{display:block;position:fixed;inset:0;background:rgba(15,10,40,.45);z-index:25}
  .side{z-index:30}
  .mbar{display:flex;align-items:center;gap:10px;background:var(--side);color:#fff;position:sticky;top:0;z-index:20;
    padding:calc(8px + env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) 8px max(12px,env(safe-area-inset-left,0px));min-height:56px;box-shadow:0 2px 10px rgba(0,0,0,.15)}
  .mlogo{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#fde047,#f59e0b);display:grid;place-items:center;flex:none}
  .hb{background:rgba(255,255,255,.12);border:0;color:#fff;border-radius:10px;width:36px;height:36px;display:grid;place-items:center;cursor:pointer;flex:none}
  .mt{flex:1;min-width:0;line-height:1.25}.mt b{display:block;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mt small{display:block;font-size:11.5px;color:var(--side-sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:22;background:var(--card);border-top:1px solid var(--line);
    padding:6px max(6px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(6px,env(safe-area-inset-left,0px));box-shadow:0 -4px 16px rgba(15,23,42,.08)}
  .tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--mute);font-size:11.5px;padding:2px 0;
    text-decoration:none!important;-webkit-tap-highlight-color:transparent;border-radius:12px}
  .tabbar .ft{width:34px;height:40px;font-size:10px;font-style:normal;transition:transform .15s}
  .tabbar .ft::after{border-color:transparent var(--card) rgba(255,255,255,.35) transparent}
  .tabbar .ft em{z-index:2;position:absolute;top:-6px;right:-10px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--ink);color:#fff;
    font-size:10px;font-style:normal;line-height:18px;text-align:center;box-shadow:0 0 0 2px var(--card)}
  .tabbar a.on{font-weight:700}
  .tabbar a.on .ft{transform:translateY(-3px) scale(1.08);box-shadow:0 6px 14px -4px rgba(0,0,0,.35)}
  .tabbar a.t-image.on{color:var(--image)}.tabbar a.t-pdf.on{color:var(--pdf)}.tabbar a.t-word.on{color:var(--word)}.tabbar a.t-excel.on{color:var(--excel)}
  .tabbar a:not(.on) .ft{opacity:.78}
  .mbar a.mt{color:#fff;text-decoration:none!important}
  .mbar .hb.up{background:linear-gradient(135deg,var(--p1),var(--p2));box-shadow:0 0 0 2px rgba(255,255,255,.25)}
  .mbar .hb svg{width:22px;height:22px}
  body.app main.wrap{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))}
  .dhead>.btn.sm:first-child{display:none}
  .preview:has(iframe){display:none}
  .pdf-m{display:flex!important;flex-direction:column;align-items:center;gap:12px;background:var(--tint);border:1px solid var(--line);border-radius:var(--r);padding:16px;text-decoration:none!important}
  .pdf-m img{width:100%;max-width:420px;border-radius:8px;border:1px solid var(--line);background:#fff;box-shadow:var(--sh)}
  .marq{font-size:11.5px}
  .tabs.mob{display:flex}
  .dv{grid-template-columns:1fr}.preview{height:70vh}
  .stats{grid-template-columns:repeat(3,1fr)}
  .tbar{flex-wrap:wrap}.tbar .q{flex-basis:100%}
}
@media (max-width:640px){
  .stats{grid-template-columns:repeat(2,1fr)}
  .grid2,.grid3{grid-template-columns:1fr}
  .item{flex-wrap:wrap}.acts{flex-direction:row;width:100%}.thumb{width:52px;height:64px}
  .tbar select,.tbar input[type=date]{flex:1 1 45%;max-width:none}
  .tbar .q{flex:1 1 0}.fbtn{display:inline-flex!important}
  .tbar:not(.showf) select,.tbar:not(.showf) .dd{display:none}
  .tbar.showf .dd{flex:1 1 45%}.ddp{left:0;right:auto}
}


.dhead{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.dhead h2{margin:0;font-size:18px;flex:1 1 220px;min-width:0;line-height:1.45}
@media (max-width:640px){.dhead h2{font-size:16px;flex-basis:calc(100% - 110px)}.dhead .btn.grn{width:100%;justify-content:center}}

.dd{position:relative;flex:none}.dd summary{list-style:none;height:38px}.dd summary::-webkit-details-marker{display:none}
.dd summary.set{border-color:var(--p2);color:var(--pd);background:var(--tint)}
.ddp{position:absolute;right:0;top:44px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;box-shadow:0 12px 30px rgba(30,27,75,.18);width:220px;z-index:15}
.ddp input{width:100%!important;max-width:none!important}

.inst{margin:0 12px 10px;display:flex;align-items:center;justify-content:center;gap:8px;padding:9px;border-radius:10px;border:0;cursor:pointer;
  font:inherit;font-weight:600;color:#1e1b4b;background:linear-gradient(135deg,#fde047,#f59e0b);box-shadow:0 4px 14px rgba(245,158,11,.35)}
.inst[hidden]{display:none}
.catnew{color:#059669;margin-top:4px}

.mb-inst{margin-left:auto;display:flex;align-items:center;gap:5px;border:0;border-radius:8px;padding:6px 10px;font:inherit;font-size:13px;font-weight:600;
  color:#1e1b4b;background:linear-gradient(135deg,#fde047,#f59e0b);cursor:pointer}

.pwa-banner{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:40;display:flex;align-items:center;gap:10px;
  background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 10px 10px 12px;box-shadow:0 12px 30px rgba(30,27,75,.25);max-width:520px;margin:0 auto}
.pwa-banner[hidden]{display:none}
.pwa-banner img{border-radius:10px;flex:none}
.pwa-banner span{flex:1;min-width:0;font-size:13.5px;line-height:1.35}.pwa-banner small{display:block;color:var(--mute);font-size:12px}
.btn.gold{background:linear-gradient(135deg,#fde047,#f59e0b);border-color:#f2b10d;color:#1e1b4b;font-weight:600}

.btn.ico{width:38px;padding:0;justify-content:center;color:var(--mute)}

/* ប៊ូតុងដំឡើង៖ បង្ហាញជានិច្ចលើអេក្រង់តូច (មិនពឹង JS), លាក់ពេលបើកជាកម្មវិធីដំឡើងរួច */
.login-inst{display:none;width:100%;justify-content:center;height:40px;margin-top:10px}
@media (max-width:980px){.login-inst{display:flex}}
.pwa-own .mb-inst,.pwa-own .inst,.pwa-own .pwa-banner,.pwa-own .login-inst{display:none!important}
.pwa-banner.other small{font-size:12.5px;line-height:1.5}
.oth-b{display:flex;flex-direction:column;gap:6px;flex:none!important}
.preview.none{display:grid;place-items:center;background:var(--tint);border:1px dashed var(--line3);text-align:center;min-height:360px;height:auto;padding:30px 20px}
.preview.none p{color:var(--mute);margin:12px 0}.preview.none .ft{margin:0 auto}
.preview.none p.desc{color:var(--ink);max-width:520px;margin:0 auto 14px;line-height:1.7;white-space:pre-wrap}

@media (max-width:980px){body.app .pwa-banner{bottom:calc(84px + env(safe-area-inset-bottom,0px))}}

@media (max-width:640px){
  body.app .stats{display:none}
  .tbar .btn.pri .bt{display:none}.tbar .btn.pri{width:42px;padding:0;justify-content:center}
  .tbar .fbtn{padding:0 10px}
}

/* ប៊ូតុង ＋ ទាញប្រភេទឯកសារនោះចូល (ពេលជ្រើសប្រភេទ) */
body.app .fab{position:fixed;right:max(20px,env(safe-area-inset-right,0px));bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:24;align-items:center;gap:8px;
  padding:0 20px 0 8px;height:54px;border-radius:27px;color:#fff;font-weight:600;text-decoration:none!important;box-shadow:0 10px 24px -6px rgba(0,0,0,.4);
  background:var(--fc,var(--p2));animation:fabin .25s ease-out}
.fab b{width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.22);display:grid;place-items:center;font-size:24px;line-height:1}
.fab:hover{filter:brightness(1.08)}
.fab.k-image,.drop.k-image{--fc:var(--image)}.fab.k-pdf,.drop.k-pdf{--fc:var(--pdf)}.fab.k-word,.drop.k-word{--fc:var(--word)}.fab.k-excel,.drop.k-excel{--fc:var(--excel)}
.drop[class*="k-"]{border-color:var(--fc)}.drop[class*="k-"] svg{color:var(--fc)}
@keyframes fabin{from{transform:scale(.6);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){body.app .fab{animation:none}}
@media (max-width:980px){body.app .fab{bottom:calc(86px + env(safe-area-inset-bottom,0px));right:16px}}

.fab{display:none!important}
@media (max-width:980px){body.app .fab{display:flex!important}}

/* ឡូហ្គោ (emblem) */
.logo,.mlogo{background:none!important;box-shadow:none!important;padding:0;border-radius:10px}
.logo img{width:44px;height:44px;border-radius:10px;display:block;box-shadow:0 2px 8px rgba(0,0,0,.35)}
.mlogo img{width:36px;height:36px;border-radius:50%;display:block;box-shadow:0 1px 4px rgba(0,0,0,.35)}
.login-logo{width:120px;height:120px;display:block;margin:0 auto 12px;border-radius:24px;box-shadow:0 6px 18px rgba(0,0,0,.25)}
.mlogo-img{width:38px;height:38px;border-radius:9px;flex:none;box-shadow:0 1px 4px rgba(0,0,0,.35)}

.btn.dangerfill{background:#dc2626;border-color:#dc2626;color:#fff}.btn.dangerfill:hover{background:#b91c1c}
.delic{width:42px;height:42px;border-radius:50%;background:#fee2e2;color:#dc2626;display:grid;place-items:center;flex:none}.delic svg{width:20px;height:20px}
.acts .btn.dan .dl-t{margin-left:4px}
@media (max-width:640px){.acts .btn.dan .dl-t{display:none}.acts .btn.dan{margin-left:auto}}
