:root{--ink:#1B2420;--muted:#56635D;--line:#E1E4DE;--bg:#F3F4F1;--card:#fff;--brand:#1E3A32;--green:#2F5D50;--greenT:#E4EEE8;--gold:#B7791F;--goldT:#FBF1DF;--red:#A2402A;--redT:#FBE8E3;font-family:Be Vietnam Pro,system-ui,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0}a{color:var(--green)}button,input,select{font:inherit}.app{display:flex;flex-wrap:wrap;min-height:100vh}.side{flex:1 1 240px;max-width:260px;background:var(--brand);color:#c9d6d0;padding:24px 16px;display:flex;flex-direction:column;gap:24px}.brand{display:flex;gap:10px;align-items:center;color:#fff;font-weight:700}.brand small{display:block;font-weight:400;color:#9fb5ac;font-size:12px}.mark{width:40px;height:48px;border-radius:8px;background:#fff;padding:4px;object-fit:contain;flex:none}.nav{display:flex;flex-direction:column;gap:4px}.nav a{color:#c9d6d0;text-decoration:none;padding:10px 12px;border-radius:10px;min-height:44px;display:flex;align-items:center}.nav a.active,.nav a:hover{background:#2f5d50;color:#fff}.who{margin-top:auto;font-size:13px}.who button{margin-top:8px;background:transparent;border:1px solid #4A6A60;color:#c9d6d0;border-radius:8px;padding:6px 10px;cursor:pointer}main{flex:999 1 560px;min-width:0;padding:28px 32px 48px}h1{font-family:Lora,serif;font-weight:600;font-size:28px;margin:0 0 6px}.sub{color:var(--muted);margin:0 0 20px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.btn{min-height:44px;padding:0 18px;border-radius:10px;border:1px solid #D5DAD2;background:#fff;cursor:pointer}.btn.primary{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}.btn:disabled{opacity:.5;cursor:default}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;flex:1 1 240px}.field label{font-weight:500}.field input,.field select{min-height:44px;border:1px solid #D5DAD2;border-radius:10px;padding:0 12px;background:#fff}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.table{width:100%;border-collapse:collapse;font-size:14px}.table th{text-align:left;font-size:12px;color:var(--muted);font-weight:500;padding:10px 12px}.table td{padding:12px;border-top:1px solid #EEF0EC;vertical-align:middle}.code{font-family:ui-monospace,monospace;font-size:12.5px;color:var(--green);font-weight:600}.pill{font-size:12px;padding:3px 8px;border-radius:6px;background:#eceeea;white-space:nowrap}.pill.approved{background:#e3f0ea;color:#24493e}.pill.pending_review{background:var(--goldT);color:#7a4e0f}.err{background:var(--redT);color:#8e3420;border-radius:10px;padding:12px 14px}.ok{background:#e3f0ea;color:#24493e;border-radius:10px;padding:12px 14px}.progress{height:8px;background:#e6e9e4;border-radius:4px;overflow:hidden}.progress>div{height:8px;background:var(--green)}.login{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:calc(env(safe-area-inset-top) + 28px) 16px calc(env(safe-area-inset-bottom) + 20px);color:#fff;background:radial-gradient(120% 70% at 50% 0%,rgba(183,121,31,.16),transparent 60%),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='520' height='2000' viewBox='0 0 520 2000'%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='.045' stroke-width='2'%3E%3Cpath d='M60 2000V250Q60 60 260 60T460 250V2000'/%3E%3Cpath d='M110 2000V270Q110 115 260 115T410 270V2000'/%3E%3Cpath d='M160 2000V290Q160 170 260 170T360 290V2000'/%3E%3C/g%3E%3C/svg%3E") center 8vh/min(560px,120vw) auto no-repeat,linear-gradient(180deg,#21423a,#1a3630 55%,#142b25)}.login .card{max-width:400px;width:100%;display:flex;flex-direction:column;gap:14px;color:var(--ink);border:0;border-radius:18px;padding:24px 22px;box-shadow:0 18px 50px #00000047}.login .field{flex:none}.loginBrand{display:flex;flex-direction:column;align-items:center;text-align:center}.loginLogo{width:132px;height:132px;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:0 8px 30px #00000040,0 0 0 6px #ffffff14}.loginLogo img{height:104px;width:auto}.loginTitle{font-family:Lora,serif;font-weight:600;font-size:34px;margin-top:16px;letter-spacing:.3px}.loginSub{color:#cfe0d8;font-size:14.5px;margin-top:4px}.loginH{font-family:Lora,serif;font-weight:600;font-size:22px;margin:0 0 2px;text-align:center;color:var(--brand)}.gbtn{display:flex;align-items:center;justify-content:center;gap:10px;min-height:48px;border-radius:12px;border:1px solid #D5DAD2;background:#fff;font-weight:600;color:#1f1f1f;cursor:pointer}.gbtn:hover{background:#f7f8f6}.orLine{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12.5px}.orLine:before,.orLine:after{content:"";flex:1;height:1px;background:var(--line)}.mailField{display:flex;align-items:center;gap:10px;min-height:48px;border:1px solid #CBD3CD;border-radius:12px;padding:0 14px;color:var(--muted);background:#fff}.mailField:focus-within{border-color:var(--green);box-shadow:0 0 0 3px var(--greenT)}.mailField input{flex:1;border:0;outline:0;font-size:16px;min-height:44px;background:transparent;color:var(--ink)}.login .btn.primary{min-height:48px;border-radius:12px}.loginHelp{margin:2px 0 0;color:var(--muted);font-size:12.5px;text-align:center}.loginFoot{color:#9fb8ae;font-size:12px}.tableWrap{overflow-x:auto}.pill.changes_requested{background:var(--redT);color:#8e3420}.note{font-size:12.5px;color:#8e3420;margin-top:4px}.badge{display:inline-block;min-width:20px;padding:0 6px;margin-left:8px;border-radius:10px;background:var(--gold);color:#fff;font-size:12px;font-weight:600;text-align:center;line-height:20px}.tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.tabs button{min-height:40px;padding:0 16px;border-radius:10px;border:1px solid #D5DAD2;background:#fff;cursor:pointer}.tabs button[aria-selected=true]{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}.checks{display:flex;flex-wrap:wrap;gap:8px 16px}.checks label{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:400;min-height:32px}.muted{color:var(--muted);font-size:12.5px}.row-actions{display:flex;gap:6px;flex-wrap:nowrap}.viewerPage{display:flex;flex-direction:column;gap:12px}.viewerBar{display:flex;gap:14px;align-items:center;position:sticky;top:0;z-index:3;background:var(--bg);padding:8px 0 10px;border-bottom:1px solid var(--line)}.viewerTitle{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.vtop{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.vver{font-size:12px;font-weight:600;color:var(--muted);background:#eceeea;border-radius:6px;padding:1px 7px}.vname{font-size:16px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.vmeta{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.viewerTools{display:flex;align-items:center;gap:10px;flex:none}.zoom{display:flex;align-items:center;border:1px solid #D5DAD2;border-radius:10px;background:#fff;overflow:hidden}.zoom button{width:40px;height:40px;border:0;background:transparent;font-size:18px;cursor:pointer;color:var(--ink)}.zoom button:disabled{color:#b8c0ba;cursor:default}.zoom span{min-width:48px;text-align:center;font-size:13px;color:var(--muted);border-left:1px solid var(--line);border-right:1px solid var(--line);line-height:40px}.backBtn{flex:none}.viewerStage{position:relative;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;overflow:hidden}.pdfHost{display:flex;flex-direction:column;align-items:center;gap:12px}.pdfPage{box-shadow:0 1px 4px #00000026;background:#fff;max-width:100%}.viewImg{display:block;max-width:100%;max-height:85vh;width:auto;height:auto;margin:0 auto;border-radius:8px}.videoWrap{position:relative;width:fit-content;max-width:100%;margin:0 auto}.videoMark{position:absolute;top:0;right:0;bottom:56px;left:0;pointer-events:none;background-repeat:repeat;border-radius:8px}@media print{body.viewing #root{display:none!important}body.viewing:after{content:"Tài liệu chỉ được xem trên AHG Hub, không in từ trình xem. Dùng nút Tải về nếu bạn được phép.";display:block;padding:40px;font:16px sans-serif;color:#000}}.topbar,.backdrop{display:none}@media(max-width:860px){.app{display:block}.topbar{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:20;background:var(--brand);color:#fff;min-height:56px;padding:calc(env(safe-area-inset-top) + 6px) 12px 6px;box-shadow:0 1px 6px #0000002e}.topbar b{font-size:17px}.mark.sm{width:30px;height:36px;padding:3px;border-radius:7px}.menuBtn{position:relative;width:44px;height:44px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;background:transparent;border:0;border-radius:10px;cursor:pointer}.menuBtn span{display:block;width:22px;height:2px;background:#fff;border-radius:2px}.menuBtn .dot{position:absolute;top:8px;right:7px;width:9px;height:9px;border-radius:50%;background:var(--gold)}.side{position:fixed;top:0;bottom:0;left:0;z-index:40;width:min(82vw,300px);max-width:none;transform:translate(-105%);transition:transform .22s ease;overflow-y:auto;padding-top:calc(env(safe-area-inset-top) + 20px)}.side.open{transform:none;box-shadow:4px 0 24px #0000004d}.backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#0000006b}main{padding:16px 16px calc(env(safe-area-inset-bottom) + 40px)}h1{font-size:23px}.sub{margin-bottom:14px}.card{padding:16px}.row>.field{flex:1 1 100%!important;max-width:none!important}.row>.btn,.row>a.btn{flex:1 1 auto;justify-content:center}main>.row:first-child{margin-bottom:14px}.viewerBar{position:static;display:grid;grid-template-columns:auto 1fr;gap:10px 12px;padding-top:2px}.backBtn{width:44px;padding:0;font-size:18px}.backBtn .lbl{display:none}.viewerTools{grid-column:1 / -1;justify-content:space-between}.viewerTools:not(:has(.zoom)){justify-content:flex-end}.dlBtn{min-width:120px}}@media(max-width:760px){.table.stack thead{display:none}.table.stack,.table.stack tbody,.table.stack tr,.table.stack td{display:block;width:100%}.table.stack tr{padding:14px 16px;border-top:1px solid #EEF0EC}.table.stack tr:first-child{border-top:0}.table.stack td{border:0;padding:3px 0;white-space:normal!important}.table.stack td[data-label]{display:flex;gap:12px;align-items:baseline}.table.stack td[data-label]:before{content:attr(data-label);flex:0 0 92px;color:var(--muted);font-size:12px}.table.stack td.cardHead{padding-bottom:2px}.table.stack td.actions{display:flex;flex-wrap:wrap;gap:8px;padding-top:10px}.table.stack td.actions .btn,.table.stack td.actions a.btn{flex:1 1 auto;justify-content:center}.table.stack .row-actions{flex-wrap:wrap;width:100%}.table.stack .row-actions .btn{flex:1 1 auto}}#toasts{position:fixed;right:16px;bottom:calc(env(safe-area-inset-bottom) + 16px);z-index:60;display:flex;flex-direction:column;gap:8px;max-width:min(420px,calc(100vw - 32px))}.toast{padding:12px 16px;border-radius:10px;box-shadow:0 4px 16px #0000002e;font-size:14px;transition:opacity .3s}.toast.err{background:#8e3420;color:#fff}.toast.ok{background:var(--green);color:#fff}.viewerStage.zoomed{overflow-x:auto;-webkit-overflow-scrolling:touch}.viewerStage.zoomed .pdfHost{align-items:flex-start}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:12px}.tile{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:2px;border-left-width:5px}.tile b{font-size:26px;font-family:Lora,serif}.tile span{color:var(--muted);font-size:13px}.g-over{border-left-color:#7a1f12}.g-red{border-left-color:var(--red)}.g-gold{border-left-color:var(--gold)}.g-soft{border-left-color:#7fa294}.g-ok{border-left-color:var(--green)}.grpH{font-family:Lora,serif;font-size:18px;margin:6px 0 8px;padding-left:10px;border-left:4px solid}.grpH span{color:var(--muted);font-family:Be Vietnam Pro,sans-serif;font-size:14px;font-weight:400}.left{font-size:12.5px;font-weight:600}.left.g-over{color:#7a1f12}.left.g-red{color:var(--red)}.left.g-gold{color:#7a4e0f}.left.g-soft,.left.g-ok{color:var(--muted)}.notif{display:flex;gap:12px;align-items:flex-start;width:100%;padding:14px 16px;border:0;border-top:1px solid #EEF0EC;background:#fff;cursor:pointer;font:inherit;color:inherit}.notif:first-child{border-top:0}.notif.unread{background:#f7faf8;font-weight:500}.ndot{width:10px;height:10px;border-radius:50%;background:#9aa59f;margin-top:6px;flex:none}.ndot.red{background:var(--red)}.ndot.gold{background:var(--gold)}.sharedMain{max-width:1100px;margin:0 auto;padding:16px 16px 40px}.upList{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.upList li{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}.upList li .code{flex:none}.upList .upName{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upIcon{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:13px;background:#eceeea;color:var(--muted);margin-top:8px}.up-done .upIcon{background:var(--greenT);color:var(--green)}.up-err{border-color:#ebc3b8!important;background:#fffaf8!important}.up-err .upIcon{background:var(--redT);color:var(--red)}.up-up .upIcon{background:var(--greenT);color:var(--green)}.upBody{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.upBody input{min-height:40px;border:1px solid #D5DAD2;border-radius:8px;padding:0 10px;font:inherit;width:100%;background:#fff}.upBody input:disabled{background:#f6f7f4;color:var(--ink)}.upFile{font-size:12.5px;overflow-wrap:anywhere}.upErr{color:var(--red)}.progress.thin,.progress.thin>div{height:5px}.btn.ghost{background:transparent;border-color:transparent;min-width:40px;padding:0 8px;color:var(--muted)}.dlgBack{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#14201c73;display:flex;align-items:center;justify-content:center;padding:16px;animation:dlgIn .12s ease-out}.dlg{background:var(--card);border-radius:16px;box-shadow:0 18px 50px #00000047;width:100%;max-width:440px;padding:22px;display:flex;flex-direction:column;gap:14px}.dlg h2{margin:0;font-size:18px;line-height:1.35}.dlgMsg{color:var(--muted);font-size:14.5px;line-height:1.55}.dlgMsg b{color:var(--ink)}.dlgErr{color:var(--red);font-size:13px}.dlgBtns{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.btn.danger{background:var(--red);border-color:var(--red);color:#fff}.btn.danger:hover{filter:brightness(.95)}@keyframes dlgIn{0%{opacity:0}to{opacity:1}}@media(max-width:860px){.dlgBack{align-items:flex-end;padding:0}.dlg{max-width:none;border-radius:18px 18px 0 0;padding:20px 16px calc(env(safe-area-inset-bottom) + 16px)}.dlgBtns{flex-direction:column-reverse}.dlgBtns .btn{width:100%}}@media(hover:none)and (pointer:coarse){input,select,textarea{font-size:16px!important}}.vplayer{position:relative;width:fit-content;max-width:100%;margin:0 auto;background:#000;border-radius:8px;overflow:hidden;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.vplayer video{display:block;max-width:100%;max-height:78vh;width:auto;height:auto;margin:0 auto}.vplayer .videoMark{top:0;right:0;bottom:44px;left:0;border-radius:0}.vplayer.vfs{width:100vw;max-width:none;height:100vh;height:100dvh;border-radius:0}.vplayer.vfs video{position:absolute;left:0;top:0;width:100%;height:calc(100% - 44px);max-width:none;max-height:none;margin:0;object-fit:contain}.vplayer.vfsCss{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000}body.vfsLock{overflow:hidden}.vbar{position:absolute;left:0;right:0;bottom:0;height:44px;display:flex;align-items:center;gap:8px;padding:0 10px;background:linear-gradient(transparent,#000000bf);color:#fff;z-index:2}.vplayer:not(.vfs) .vbar{position:relative;background:#111}.vplayer:not(.vfs) .videoMark{top:0;right:0;bottom:44px;left:0}.vbar button{background:transparent;border:0;color:#fff;font-size:16px;min-width:36px;min-height:36px;cursor:pointer;padding:0}.vbar input[type=range]{flex:1;min-width:60px;accent-color:#E9C98B}.vtime{font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;opacity:.9}.vbig{position:absolute;left:50%;top:calc(50% - 22px);transform:translate(-50%,-50%);width:64px;height:64px;border-radius:50%;border:0;background:#0000008c;color:#fff;font-size:24px;cursor:pointer;z-index:2}.vwait{position:absolute;left:50%;top:calc(50% - 22px);width:36px;height:36px;margin:-18px 0 0 -18px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:vspin .8s linear infinite;z-index:2}@keyframes vspin{to{transform:rotate(360deg)}}.verr{position:absolute;left:12px;right:12px;top:12px;background:#fbe8e3;color:#8e3420;border-radius:8px;padding:8px 12px;font-size:14px;z-index:3}.bdayBack{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;background:#12221d9e;display:flex;align-items:center;justify-content:center;padding:16px;overflow:hidden;animation:bdayFade .3s ease}.bdayCard{position:relative;z-index:1;width:min(420px,100%);background:#fff;border-radius:20px;padding:30px 26px 24px;text-align:center;box-shadow:0 20px 60px #0000004d;border-top:6px solid #E9C98B;animation:bdayPop .45s cubic-bezier(.2,1.4,.4,1)}.bdayCake{font-size:56px;line-height:1;margin-bottom:6px;animation:bdayBob 1.6s ease-in-out infinite}.bdayDate{display:inline-block;font-weight:700;letter-spacing:.18em;color:#7a4e0f;background:#fbf1df;border-radius:999px;padding:4px 14px;font-size:13px;margin-bottom:10px}.bdayCard h2{margin:0 0 12px;font-family:Lora,Georgia,serif;font-size:28px;line-height:1.2;color:#1e3a32}.bdayCard h2 span{font-size:38px;color:#2f5d50}.bdayCard p{margin:0 0 18px;color:#3d4943;line-height:1.55}.bdayCard .btn{width:100%;min-height:48px;font-size:16px}.bdayConfetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.bdayConfetti i{position:absolute;top:-20px;width:9px;height:14px;border-radius:2px;opacity:.9;animation:bdayFall linear infinite}.bdayConfetti i:nth-child(4n){background:#e9c98b}.bdayConfetti i:nth-child(4n+1){background:#2f5d50}.bdayConfetti i:nth-child(4n+2){background:#e8826f}.bdayConfetti i:nth-child(4n+3){background:#8fc1d4}@keyframes bdayFall{to{transform:translateY(110vh) rotate(540deg)}}@keyframes bdayPop{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}@keyframes bdayFade{0%{opacity:0}to{opacity:1}}@keyframes bdayBob{50%{transform:translateY(-6px) rotate(-4deg)}}@media(prefers-reduced-motion:reduce){.bdayConfetti i,.bdayCake,.bdayCard,.bdayBack{animation:none}.bdayConfetti{display:none}}.bkWarn{border-color:#e5b9ac;background:#fdf4f1}
