:root{--bg:#f4f6fb;--card:#fff;--ink:#1b2236;--mute:#6b7389;--line:#e4e8f1;--pri:#2349c8;--pri2:#e9eeff;--acc:#f0a20b;--ok:#13915f;--okb:#e3f6ee;--warn:#c76a00;--warnb:#fff3df;--bad:#cf2f3d;--badb:#fde8ea;--nn:#2f62e0;--ht:#7b4fd6;--hd:#0f8f95;--cong:#13915f;--r:14px;--sh:0 1px 2px rgba(20,30,60,.06),0 4px 16px rgba(20,30,60,.05)}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{font-family:"Be Vietnam Pro",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--pri)}
.app{display:flex;min-height:100vh}
.side{width:236px;background:#141c33;color:#cfd6ea;padding:18px 12px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:2px;flex-shrink:0;overflow-y:auto}
.brand{display:flex;gap:10px;align-items:center;padding:4px 8px 16px;color:#fff}
.brand .logo{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#3d6bff,#f0a20b);display:grid;place-items:center;font-weight:800;font-size:15px}
.brand b{display:block;font-size:15px}.brand small{color:#8d97b5;font-size:12px}
.nav{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;color:#cfd6ea;text-decoration:none;cursor:pointer;border:0;background:none;width:100%;text-align:left;font-size:14.5px}
.nav:hover{background:#1f2948}.nav.on{background:#2b3a6b;color:#fff;font-weight:600}
.nav .ic{width:20px;text-align:center;font-size:16px}.nav .bd{margin-left:auto;background:var(--acc);color:#1b1300;border-radius:20px;font-size:11.5px;padding:0 7px;font-weight:700}
.side .foot{margin-top:auto;padding:10px;font-size:12.5px;color:#8d97b5;border-top:1px solid #26304f}
.main{flex:1;min-width:0;padding:22px 26px 90px}
.top{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.top h1{font-size:22px;margin:0;font-weight:700;letter-spacing:-.01em}.top .sub{color:var(--mute);font-size:13.5px}
.top .sp{flex:1}
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:16px;border:1px solid var(--line)}
.card h3{margin:0 0 10px;font-size:15.5px}
.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.stat .n{font-size:28px;font-weight:700;letter-spacing:-.02em}.stat .l{color:var(--mute);font-size:13px}.stat .h{font-size:12.5px;margin-top:2px}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;padding:8px 14px;border-radius:10px;cursor:pointer;font-weight:600;font-size:14px;white-space:nowrap}
.btn:hover{border-color:#c9d0e2}.btn.p{background:var(--pri);color:#fff;border-color:var(--pri)}.btn.p:hover{filter:brightness(1.07)}
.btn.g{background:var(--ok);color:#fff;border-color:var(--ok)}.btn.r{color:var(--bad)}.btn.rr{background:var(--bad);color:#fff;border-color:var(--bad)}
.btn.s{padding:5px 10px;font-size:13px;border-radius:8px}.btn:disabled{opacity:.5;cursor:default}
.in,select.in,textarea.in{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:#fff;outline:none}
.in:focus{border-color:var(--pri);box-shadow:0 0 0 3px var(--pri2)}
label.f{display:block;font-size:13px;color:var(--mute);margin:10px 0 4px;font-weight:500}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row>div.grow,.row>input.grow{flex:1;min-width:160px}.row>span.grow{flex:1;min-width:0}
.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl th{text-align:left;color:var(--mute);font-weight:600;font-size:12.5px;padding:8px;border-bottom:1px solid var(--line);white-space:nowrap;position:sticky;top:0;background:#fff}
.tbl td{padding:8px;border-bottom:1px solid #f0f2f7}.tbl tr:hover td{background:#fafbff}.tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.scroll{overflow:auto;max-height:70vh}
.chip{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:20px;font-size:12.5px;background:#eef1f8;color:#3a4361;font-weight:500;white-space:nowrap}
.chip.nn{background:#e7eeff;color:var(--nn)}.chip.ht{background:#f1eaff;color:var(--ht)}.chip.hd{background:#e0f5f5;color:var(--hd)}.chip.cong{background:var(--okb);color:var(--ok)}
.chip.ok{background:var(--okb);color:var(--ok)}.chip.warn{background:var(--warnb);color:var(--warn)}.chip.bad{background:var(--badb);color:var(--bad)}.chip.pri{background:var(--pri2);color:var(--pri)}
.tabs{display:flex;gap:4px;background:#e9ecf4;padding:4px;border-radius:12px;flex-wrap:wrap;margin-bottom:14px}
.tab{padding:7px 13px;border-radius:9px;cursor:pointer;border:0;background:none;font-weight:600;font-size:13.5px;color:#4a5370}.tab.on{background:#fff;color:var(--ink);box-shadow:var(--sh)}
.sgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.sc{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;cursor:pointer;position:relative;transition:.12s;user-select:none}
.sc:hover{border-color:#b9c4e4;transform:translateY(-1px)}.sc.sel{border-color:var(--pri);box-shadow:0 0 0 3px var(--pri2)}
.sc .nm{font-weight:600;font-size:14px;line-height:1.25;padding-right:46px}.sc .meta{font-size:12px;color:var(--mute)}.sc .pt{position:absolute;top:9px;right:10px;font-weight:700;font-size:14px}
.up{color:var(--ok)}.dn{color:var(--bad)}.mid{color:var(--warn)}
.rk{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#eef1f8;font-weight:700;font-size:12.5px}
.rk.r1{background:#ffd75e;color:#5a3d00}.rk.r2{background:#dfe5ef;color:#39435e}.rk.r3{background:#f4c39b;color:#5c2d06}
.empty{color:var(--mute);text-align:center;padding:26px 10px;font-size:14px}
.list .it{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid #f0f2f7;align-items:flex-start}.list .it:last-child{border:0}
.kan{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}
.col{background:#eceff6;border-radius:var(--r);padding:10px}.col h4{margin:2px 4px 10px;font-size:14px;display:flex;justify-content:space-between}
.tk{background:#fff;border-radius:11px;padding:11px;margin-bottom:9px;box-shadow:var(--sh);cursor:pointer;border-left:4px solid transparent}
.tk.high{border-left-color:var(--bad)}.tk .t{font-weight:600;font-size:14px}.tk .m{font-size:12.5px;color:var(--mute);margin-top:4px}
.bar{height:6px;background:#e9ecf4;border-radius:5px;overflow:hidden;margin-top:7px}.bar>i{display:block;height:100%;background:var(--pri)}
.mask{position:fixed;inset:0;background:rgba(15,22,45,.45);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px;animation:fd .15s}
.modal{background:#fff;border-radius:18px;width:100%;max-width:620px;max-height:92vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.modal.wide{max-width:900px}.mh{display:flex;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff;z-index:2}
.mh h2{margin:0;font-size:17px;flex:1}.mb{padding:16px 18px}.mf{padding:12px 18px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;position:sticky;bottom:0;background:#fff}
.x{border:0;background:#f1f3f8;width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:18px}
.toast{position:fixed;bottom:84px;left:50%;transform:translateX(-50%);background:#1b2236;color:#fff;padding:10px 18px;border-radius:12px;z-index:99;font-size:14px;box-shadow:0 6px 24px rgba(0,0,0,.25);animation:fd .2s}
.toast.err{background:var(--bad)}
@keyframes fd{from{opacity:0}to{opacity:1}}
.rules{max-height:min(46vh,420px);overflow:auto;padding-right:4px;margin-bottom:6px}.rules .rg{margin-bottom:12px}.rules .rg b{font-size:13px;display:block;margin-bottom:6px}
.rbtn{display:flex;justify-content:space-between;gap:8px;width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 11px;margin-bottom:6px;cursor:pointer;font-size:13.5px}
.rbtn:hover{border-color:var(--pri)}.rbtn.on{border-color:var(--pri);background:var(--pri2)}.rbtn .v{font-weight:700;white-space:nowrap}
.hero{background:linear-gradient(135deg,#2349c8,#4b73ff 60%,#6a8cff);color:#fff;border-radius:18px;padding:20px;position:relative;overflow:hidden}
.hero .big{font-size:44px;font-weight:800;letter-spacing:-.03em;line-height:1}.hero small{opacity:.85}
.hero .pill{background:rgba(255,255,255,.18);border-radius:20px;padding:4px 12px;font-size:13px;display:inline-block;margin:8px 6px 0 0}
.login{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(1200px 600px at 10% -10%,#dfe6ff,transparent),radial-gradient(900px 500px at 110% 110%,#ffeccc,transparent),var(--bg)}
.login .box{width:100%;max-width:420px}.login h1{font-size:24px;margin:10px 0 2px}
.demo{background:#fff8e6;border:1px solid #f6dc9c;border-radius:12px;padding:12px;margin-top:14px;font-size:13.5px}
.bnav{display:none}
.chk{display:flex;gap:8px;align-items:center;padding:6px 0;cursor:pointer}
.pick{max-height:46vh;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:4px 10px}
.mut{color:var(--mute)}.sm{font-size:13px}.b{font-weight:600}.r{text-align:right}.mt{margin-top:14px}.nowrap{white-space:nowrap}
.photo{max-width:100%;max-height:260px;border-radius:10px;border:1px solid var(--line)}
@media (max-width:900px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:1fr}.kan{grid-template-columns:1fr}}
@media (max-width:760px){
 .side{display:none}.main{padding:14px 12px 96px}.g2{grid-template-columns:1fr}.top h1{font-size:19px}
 .bnav{display:flex;position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);z-index:40;padding:4px 4px calc(4px + env(safe-area-inset-bottom));overflow-x:auto}
 .bnav button{flex:1;min-width:64px;border:0;background:none;display:flex;flex-direction:column;align-items:center;font-size:10.5px;padding:5px 2px;color:var(--mute);gap:1px;position:relative}
 .bnav button .ic{font-size:19px}.bnav button.on{color:var(--pri);font-weight:700}
 .bnav .bd{position:absolute;top:1px;right:14%;background:var(--bad);color:#fff;border-radius:10px;font-size:10px;padding:0 5px}
 .sgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.modal{border-radius:18px 18px 0 0;max-height:94vh;align-self:flex-end}.mask{padding:0}
}
@media print{.side,.bnav,.top .btn,.noprint{display:none!important}.main{padding:0}.card{box-shadow:none;border:0}.scroll{max-height:none;overflow:visible}}
.tt td{vertical-align:top;min-width:96px}.ttc{border-radius:8px;padding:6px 8px;font-size:13px;font-weight:500;line-height:1.25}
.tt-mob{display:none}.ph-legend{display:none}
@media (max-width:760px){.tt-desk{display:none}.tt-mob{display:block}.phtbl .lb,.hide-m{display:none}.ph-legend{display:block}.phtbl td,.phtbl th{padding:6px 4px}.phtbl .btn.s{padding:6px 8px}}
.tbl.xl th,.tbl.xl td{border:1px solid #e1e5ef;padding:4px 6px;font-size:13px}.tbl.xl th{background:#f6f7fb;position:static}.tbl.xl .c{text-align:center}.tbl.xl .vh{font-size:11.5px;line-height:1.2;min-width:52px}
.bad-c{background:#fdecee;color:var(--bad);font-weight:700}.ok-c{background:#e8f7ef;color:var(--ok);font-weight:700}.sheet-title{text-align:center;margin-bottom:10px;line-height:1.5}
@media print{body.print-sheet .main>*:not(#sheetPrint){display:none!important}body.print-sheet #sheetPrint{display:block!important;border:0;box-shadow:none}body.print-sheet .sheet-grid{grid-template-columns:1fr 230px!important}body.print-sheet .tbl.xl th,body.print-sheet .tbl.xl td{font-size:10.5px;padding:2px 4px}}
.bk-layout{display:grid;grid-template-columns:340px minmax(0,1fr);gap:14px;align-items:start}.bk-toc{position:sticky;top:12px;max-height:calc(100vh - 30px);overflow:auto}.bk-it{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #f0f2f7;font-size:13.5px}.bk-it a{color:var(--ink);text-decoration:none}.bk-it a:hover{color:var(--pri)}
.bk-preview{background:#e8ebf2;border-radius:14px;padding:18px;max-height:calc(100vh - 140px);overflow:auto}.bk-paper{font-family:"Times New Roman",Times,serif;font-size:15px;color:#000;line-height:1.45}.bk-preview .bk-page,#bookPrint .bk-page{background:#fff;width:100%;max-width:800px;margin:0 auto 18px;padding:48px 44px 48px 64px;box-shadow:0 2px 10px rgba(0,0,0,.12);min-height:400px}
.bk-paper .bk-h{text-align:center;font-size:17px;font-weight:bold;text-transform:uppercase;margin:0 0 4px}.bk-paper .bk-sub{text-align:center;margin-bottom:12px}.bk-paper .bk-tbl{width:100%;border-collapse:collapse;margin:8px 0}.bk-paper .bk-tbl th,.bk-paper .bk-tbl td{border:1px solid #000;padding:3px 6px;vertical-align:top;font-size:14px}.bk-paper .c{text-align:center}.bk-paper p{margin:4px 0}.bk-paper .bk-dots{color:#666}.bk-paper .bk-pos{font-size:12px;font-style:italic}.bk-paper .bk-board{text-align:center;border:1px solid #000;width:40%;margin:8px auto;padding:4px;font-weight:bold}.bk-paper .bk-seat{font-size:13px;min-width:70px}
.bk-paper .bk-cover{text-align:center}.bk-paper .bk-frame{border:4px double #000;padding:40px 30px;min-height:900px}.bk-paper .bk-big{font-size:38px;font-weight:bold;margin:150px 0 110px;line-height:1.4}.bk-paper .bk-cv{margin:0 auto;text-align:left;font-size:18px}.bk-paper .bk-cv td{padding:4px 10px}.bk-paper .bk-year{margin-top:140px;font-size:18px}.bk-paper .bk-small td,.bk-paper .bk-small th{font-size:12.5px;padding:2px 3px}.bk-paper .bk-grp{background:#eee}.bk-paper .bk-tall td{height:70px}.bk-paper .bk-sp{height:16px}.bk-paper .bk-rich table{border-collapse:collapse}.bk-paper .bk-rich td,.bk-paper .bk-rich th{border:1px solid #000;padding:3px 5px}
.rte{min-height:340px;max-height:60vh;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:14px 16px;font-family:"Times New Roman",serif;font-size:15.5px;line-height:1.5;outline:none}.rte:focus{border-color:var(--pri);box-shadow:0 0 0 3px var(--pri2)}.rte table{border-collapse:collapse}.rte td,.rte th{border:1px solid #999;padding:3px 5px}.bk-mini{font-family:"Times New Roman",serif;font-size:14px;max-height:140px;overflow:auto;margin-top:6px}
#bookPrint{position:fixed;inset:0;background:#e8ebf2;z-index:80;overflow:auto;padding:0 0 30px}.bk-ovbar{position:sticky;top:0;background:#fff;display:flex;gap:8px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--line);z-index:2;margin-bottom:16px}
@media (max-width:900px){.bk-layout{grid-template-columns:1fr}.bk-toc{position:static;max-height:none}.bk-preview .bk-page{padding:24px 16px}}
@media print{body.print-book>*:not(#bookPrint){display:none!important}body.print-book #bookPrint{position:static;background:#fff;padding:0;overflow:visible}body.print-book #bookPrint .bk-page{box-shadow:none;margin:0;padding:0;max-width:none;min-height:0;break-before:page;page-break-before:always}body.print-book #bookPrint .bk-paper>div:first-child>.bk-page:first-child,body.print-book #bookPrint .bk-paper>.bk-page:first-child{break-before:auto;page-break-before:auto}body.print-book .bk-tbl tr{break-inside:avoid}body.print-book .bk-tbl thead{display:table-header-group}body.print-book .bk-paper{font-size:13pt}body.print-book .bk-paper .bk-tbl td,body.print-book .bk-paper .bk-tbl th{font-size:12pt}@page{size:A4 portrait;margin:18mm 15mm 18mm 25mm}}
/* ---- trình chiếu ---- */
.present{position:fixed;inset:0;z-index:120;background:radial-gradient(1200px 700px at 20% 0%,#2a3c8f,transparent),radial-gradient(900px 600px at 100% 100%,#6b3d00,transparent),#0b1020;color:#fff;display:flex;flex-direction:column}
.pr-slide{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;animation:fd .35s}
.pr-kicker{font-size:22px;opacity:.75;letter-spacing:.08em;text-transform:uppercase}.pr-title{font-size:60px;font-weight:800;letter-spacing:-.02em;margin:10px 0}.pr-sub{font-size:24px;opacity:.85}
.pr-stats{display:flex;gap:28px;margin-top:40px;flex-wrap:wrap;justify-content:center}.pr-stats div{background:rgba(255,255,255,.08);border-radius:20px;padding:22px 30px;min-width:200px}.pr-stats b{display:block;font-size:54px}.pr-stats span{opacity:.8;font-size:18px}
.podium{display:flex;align-items:flex-end;gap:18px;margin-top:30px}.pz-col{width:260px}.pz-names{font-size:24px;font-weight:700;margin-bottom:10px;line-height:1.3}.pz-bar{border-radius:18px 18px 0 0;padding:14px;display:flex;flex-direction:column;justify-content:flex-start;gap:2px;font-size:18px}.pz-rank{font-size:42px}.pz-pt{opacity:.9}.pz-money{font-weight:800;font-size:22px}
.p1 .pz-bar{background:linear-gradient(#f5c542,#b8860b)}.p2 .pz-bar{background:linear-gradient(#cfd6e4,#7d8aa5)}.p3 .pz-bar{background:linear-gradient(#e9a46a,#9a5521)}
.pr-list{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:12px 26px;margin-top:20px;font-size:26px;min-width:min(900px,90vw)}.pr-list.big{grid-template-columns:1fr;font-size:36px;min-width:min(700px,90vw)}.pr-list div{display:flex;justify-content:space-between;gap:20px;background:rgba(255,255,255,.07);padding:12px 20px;border-radius:14px}.pr-list b{color:#ffd166}
.pr-nav{display:flex;gap:14px;justify-content:center;align-items:center;padding:16px;font-size:18px}.pr-nav button{background:rgba(255,255,255,.12);border:0;color:#fff;width:46px;height:46px;border-radius:50%;font-size:22px;cursor:pointer}
@media (max-width:760px){.pr-title{font-size:34px!important}.pz-col{width:31vw}.pz-names{font-size:14px}.pz-bar{font-size:12px}.pr-list{grid-template-columns:1fr;font-size:18px}.pr-stats div{min-width:120px;padding:14px}.pr-stats b{font-size:34px}}
/* ---- giao diện tối ---- */
[data-theme=dark]{--bg:#0f1218;--card:#181c25;--ink:#e7eaf2;--mute:#97a0b5;--line:#2a3040;--pri:#6f8cff;--pri2:#1f2a4d;--okb:#123526;--warnb:#3a2a10;--badb:#3d1820}
[data-theme=dark] body{background:var(--bg);color:var(--ink)}[data-theme=dark] .card,[data-theme=dark] .modal,[data-theme=dark] .mh,[data-theme=dark] .mf,[data-theme=dark] .sc,[data-theme=dark] .tk,[data-theme=dark] .rbtn,[data-theme=dark] .btn,[data-theme=dark] .in,[data-theme=dark] .tbl th,[data-theme=dark] .bnav,[data-theme=dark] .tab.on{background:var(--card);color:var(--ink);border-color:var(--line)}
[data-theme=dark] .btn.p{background:var(--pri);color:#fff}[data-theme=dark] .btn.g{background:var(--ok);color:#fff}[data-theme=dark] .btn.rr{background:var(--bad);color:#fff}[data-theme=dark] .tabs,[data-theme=dark] .col,[data-theme=dark] .bar,[data-theme=dark] .chip,[data-theme=dark] .x,[data-theme=dark] .rk{background:#222838;color:var(--ink)}[data-theme=dark] .tab{color:var(--mute)}
[data-theme=dark] .tbl td{border-color:#232838}[data-theme=dark] .tbl tr:hover td{background:#1d2230}[data-theme=dark] .login{background:var(--bg)}[data-theme=dark] .demo{background:#2a2310;border-color:#5a4a1a}[data-theme=dark] .tbl.xl th{background:#1f2433}[data-theme=dark] .tbl.xl th,[data-theme=dark] .tbl.xl td{border-color:#2a3040}
[data-theme=dark] .chip.ok{background:var(--okb)}[data-theme=dark] .chip.warn{background:var(--warnb)}[data-theme=dark] .chip.bad{background:var(--badb)}[data-theme=dark] .chip.pri{background:var(--pri2);color:#b9c7ff}[data-theme=dark] .bk-preview{background:#0b0e14}
[data-theme=dark] select.in option{background:var(--card)}[data-theme=dark] .bad-c{background:#3d1820}[data-theme=dark] .ok-c{background:#123526}
.navh{font-size:11px;letter-spacing:.06em;color:#7a86a8;font-weight:700;padding:12px 12px 4px}
.gsr{position:absolute;left:0;right:0;top:100%;background:#1f2948;border-radius:10px;z-index:30;overflow:hidden;box-shadow:0 8px 24px rgba(0,0,0,.35)}.gsr button{display:block;width:100%;text-align:left;border:0;background:none;color:#fff;padding:7px 10px;cursor:pointer;font-size:13.5px}.gsr button:hover{background:#2b3a6b}.gsr span{color:#9aa4c4;font-size:12px}
body.priv .sens{filter:blur(5px);user-select:none}
.grp.r1{border-color:#f2c94c;box-shadow:0 0 0 3px #fff3c4}.grpbig{font-size:40px;font-weight:800;text-align:center;margin:10px 0 0;letter-spacing:-.02em}
.ck{font-weight:500}
/* ---- lịch ---- */
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:middle}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.cal-h{text-align:center;font-weight:700;font-size:12.5px;color:var(--mute);padding:4px}
.cal-d{background:var(--card);border:1px solid var(--line);border-radius:10px;min-height:112px;padding:6px;cursor:pointer;overflow:hidden}.cal-d:hover{border-color:#b9c4e4}.cal-d.out{opacity:.45}.cal-d.today{border-color:var(--pri);box-shadow:0 0 0 2px var(--pri2)}.cal-d.hol,.cal-col.hol{background:repeating-linear-gradient(135deg,var(--card),var(--card) 8px,#f2f3f7 8px,#f2f3f7 16px)}
.cal-n{display:flex;justify-content:space-between;font-weight:700;font-size:13px;margin-bottom:3px}.cal-d.today .cal-n span:first-child{background:var(--pri);color:#fff;border-radius:50%;width:22px;height:22px;display:inline-grid;place-items:center}.cal-w{font-size:10.5px;color:var(--mute);font-weight:600}
.cal-it{border-left:3px solid var(--c);background:color-mix(in srgb,var(--c) 10%,transparent);border-radius:6px;padding:4px 7px;margin-bottom:4px;font-size:13px;line-height:1.3}.cal-it.sm2{font-size:11.5px;padding:2px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.cal-sub{font-size:11.5px;color:var(--mute);margin-top:1px}.cal-more{font-size:11px;color:var(--mute)}
.cal-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;align-items:start}.cal-col{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px;min-height:300px}.cal-col.today{border-color:var(--pri);box-shadow:0 0 0 2px var(--pri2)}.cal-ch{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:6px;margin-bottom:6px;cursor:pointer}.cal-ch span{font-size:12.5px;color:var(--mute)}.cal-add{width:100%;justify-content:center;margin-top:4px;opacity:.7}
@media (max-width:900px){.cal-week{grid-template-columns:1fr}.cal-col{min-height:0}.cal-d{min-height:64px}.cal-it.sm2{font-size:0;padding:0;height:6px;margin:2px 0;border-left-width:0;background:var(--c)}.cal-more{display:none}}
