:root{font-family:"Noto Sans Thai","Leelawadee UI",Tahoma,"Segoe UI",sans-serif;color:#223c4c;background:#f5faff;font-synthesis:none;--sky:#80caff;--navy:#235779;--blue:#2786bf;--pale:#eaf6ff;--line:#dce9f3;--muted:#6a8394;--good:#168763;--warn:#ad6e18;--red:#b33a46}*{box-sizing:border-box}body{margin:0;min-width:300px}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button:disabled{opacity:.48;cursor:not-allowed}main{min-width:0}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(1.5rem,2vw,2.1rem);letter-spacing:-.02em;margin-bottom:6px}h2{font-size:1.12rem;margin-bottom:12px}h3{font-size:1rem;margin-bottom:8px}small{font-size:.79rem}label{font-size:.89rem;font-weight:650;display:block;margin-bottom:6px}.muted,.hint{color:var(--muted)}.hint{font-size:.79rem;margin:6px 0 0;line-height:1.6}.app-shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}.sidebar{background:#e8f5ff;border-right:1px solid #d4e9fb;padding:22px 12px;display:flex;flex-direction:column;gap:25px}.logo-line{display:flex;align-items:center;gap:12px;padding:8px 12px}.logo{width:46px;height:46px;border-radius:14px}.brand strong{display:block;color:#225777;line-height:1.3;font-size:1.01rem}.brand small{display:block;color:#7796ab;margin-top:4px}.nav{display:grid;gap:5px}.nav a{border-radius:12px;color:#3f6881;display:flex;gap:12px;align-items:center;padding:12px 14px;font-size:.96rem}.nav a svg{width:19px;height:19px}.nav a.active{background:#cbeafb;color:#14527f;font-weight:730}.nav a:hover{background:#d8efff}.sidebar-foot{margin-top:auto;padding:14px 12px 0;border-top:1px solid #ccdfed}.content{padding:28px clamp(18px,3.8vw,55px) 70px;max-width:1430px;width:100%;margin:0 auto}.topline{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:26px}.crumb{color:#7e96a4;font-size:.86rem}.userpill{display:flex;gap:12px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 13px;font-size:.83rem}.initial{margin:35vh auto;text-align:center;color:#557d97}.spinner{display:inline-block;width:18px;height:18px;border:2px solid #bfd9e8;border-top-color:#287da9;border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle;margin-right:8px}@keyframes spin{to{transform:rotate(360deg)}}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:24px}.subtitle{color:var(--muted);margin:0;font-size:.91rem;line-height:1.65}.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:17px}.g4{grid-column:span 4}.g6{grid-column:span 6}.g8{grid-column:span 8}.g12{grid-column:span 12}.card{background:#fff;border:1px solid var(--line);border-radius:19px;padding:22px;box-shadow:0 3px 12px rgba(45,101,142,.035);min-width:0}.card.slim{padding:17px}.metric{display:flex;align-items:center;justify-content:space-between;gap:12px}.metric .val{font-size:2rem;color:#245b7d;font-weight:800;line-height:1.05}.metric .symbol{display:grid;place-items:center;width:44px;height:44px;border-radius:13px;background:#e8f5fc;color:#438eb8;font-size:1.45rem}.tag{display:inline-flex;align-items:center;gap:5px;font-size:.75rem;padding:5px 10px;border-radius:999px;background:#eaf1f7;color:#526d80;font-weight:680;white-space:nowrap}.tag.warn{background:#fff2d9;color:#9a691a}.tag.good{background:#e0f7e9;color:#177a58}.tag.bad{background:#ffeaec;color:#a73843}.tag.info{background:#e9f4ff;color:#286fa0}.tag.demo{background:#f6e9fe;color:#70499c}.row{display:flex;align-items:center;gap:10px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px}.wrap{flex-wrap:wrap}.stack{display:grid;gap:14px}.mutedbox{background:#f0f8fe;border:1px solid #d9ecfa;border-radius:14px;padding:16px}.btn{background:#eaf6fd;border:1px solid #badced;color:#225f83;border-radius:11px;padding:11px 16px;font-weight:650;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px}.btn:hover{filter:brightness(.98)}.btn.primary{background:#3a9dd4;color:white;border-color:#3a9dd4}.btn.outline{background:#fff;border-color:#cee0ed}.btn.good{background:#218d70;color:white;border-color:#218d70}.btn.danger{background:#fff1f1;color:#af333f;border-color:#ffd5d5}.btn.small{min-height:36px;padding:7px 10px;font-size:.83rem}.btn.full{width:100%}.field{margin-bottom:16px}.control{width:100%;min-height:44px;border:1px solid #cedfeb;background:#fff;border-radius:12px;padding:10px 12px;color:#243d4f;outline:0}.control:focus{border-color:#55a5d9;box-shadow:0 0 0 3px #d9f0ff}.control::placeholder{color:#9eb1c2}.control[readonly]{background:#f5f9fc}.control.textarea{resize:vertical;min-height:90px;line-height:1.55}.form-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-cols.three{grid-template-columns:repeat(3,1fr)}.section-title{display:flex;gap:8px;align-items:center;font-weight:770;color:#265879;font-size:1.04rem;margin-bottom:16px}.section-title .num{background:#dff0ff;border-radius:9px;padding:5px 9px;color:#2578a8}.task-card{border:1px solid var(--line);background:#fff;border-radius:16px;padding:17px;display:block;transition:box-shadow .12s,border-color .12s}.task-card:hover{border-color:#91c7e8;box-shadow:0 7px 24px rgba(38,107,151,.08)}.task-card .title{font-weight:770;font-size:1rem;color:#204b68}.task-card .detail{color:#637d8c;margin:9px 0;font-size:.85rem;line-height:1.65}.task-card .meta{font-size:.79rem;color:#718b9d}.task-list{display:grid;gap:11px}.pillbar{display:flex;gap:7px;flex-wrap:wrap}.pill{border:1px solid #d0e1ed;background:#fff;border-radius:10px;padding:8px 12px;font-size:.83rem;color:#57768a}.pill.selected{background:#dcefff;border-color:#83c0e8;color:#1c648e;font-weight:700}.empty{background:#fff;border:1px dashed #bcd9eb;border-radius:17px;padding:38px;text-align:center;color:#829aa9}.empty .symbol{font-size:2rem}.note{padding:12px 14px;background:#f1f8fe;border-left:3px solid #71b7df;border-radius:8px;font-size:.85rem;color:#4c7187;line-height:1.7}.note.warning{background:#fff6e8;border-left-color:#dfad58;color:#815c2c}.note.danger{background:#ffeff0;border-left-color:#cb6572;color:#8e3a46}.line{height:1px;background:var(--line);margin:16px 0}.patient{background:linear-gradient(120deg,#f0f9ff,#fff);border:1px solid #d7eaf6;border-radius:16px;padding:17px}.patient-name{font-size:1.18rem;color:#265d83;font-weight:770;margin-bottom:11px;line-height:1.5}.kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.kv label{font-size:.75rem;margin:0;color:var(--muted);font-weight:500}.kv strong{font-size:.91rem;overflow-wrap:anywhere}.step-row{padding:12px 0;border-bottom:1px solid #eef2f5;display:flex;gap:12px;align-items:center}.step-row:last-child{border-bottom:none}.step-row input{accent-color:#2f92c5;width:19px;height:19px}.timeline{margin:6px 0;padding-left:19px;border-left:2px solid #d6eafa}.timeline-entry{position:relative;margin:0 0 18px;padding-left:12px}.timeline-entry::before{content:"";position:absolute;left:-25px;top:8px;width:10px;height:10px;border-radius:50%;background:#64acda;border:2px solid #fff}.timeline-entry .date{font-size:.78rem;color:#7391a4}.timeline-entry .body{font-size:.91rem;white-space:pre-wrap;margin:5px 0;line-height:1.6}.barcode-block{border:1px solid #e1e9ef;border-radius:14px;padding:16px;background:white}.barcode-image{margin:8px auto;max-width:100%;background:white;overflow:hidden}.barcode-image svg{display:block;max-height:130px}.barcode-val{text-align:center;letter-spacing:.08em;font-size:.89rem;color:#23485f}.dropzone{padding:28px;border-radius:17px;border:2px dashed #a9d2e9;background:#f5fbff;text-align:center;cursor:pointer;color:#396f8b;display:block}.dropzone:hover,.dropzone.drag{background:#eaf6ff}.paste-preview{max-width:100%;max-height:260px;object-fit:contain;border:1px solid #dae9f4;border-radius:10px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at 7% 5%,#d7eeff,transparent 45%),#f7fbff}.login-panel{width:100%;max-width:480px;padding:35px}.login-panel h1{margin:0 0 9px;color:#214e6b}.login-panel .logo{width:56px;height:56px;margin-bottom:16px}.email-entry{display:flex;align-items:center;border:1px solid #cedfeb;border-radius:12px;overflow:hidden}.email-entry input{flex:1;border:0;outline:0;min-width:0}.email-entry span{background:#eff7fc;color:#6686a2;padding:11px;font-size:.84rem;white-space:nowrap}.link{color:#287aa9;text-decoration:underline;text-underline-offset:3px}.tiny{font-size:.75rem}.danger-text{color:var(--red)}.success-text{color:var(--good)}.toast{position:fixed;z-index:110;bottom:25px;left:50%;transform:translateX(-50%);background:#1c4e6a;color:#fff;padding:13px 20px;border-radius:14px;box-shadow:0 10px 35px #40698146;max-width:min(94vw,650px);font-size:.9rem}.toast.bad{background:#933a46}.modal-backdrop{position:fixed;inset:0;display:grid;place-items:center;background:#162f46a9;z-index:120;padding:15px}.modal-card{background:white;width:min(480px,100%);border-radius:20px;padding:24px}.mobile-nav{display:none}.desktop-only{}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid #e8eff4;font-size:.85rem;vertical-align:top}th{color:#687f8e;background:#f7fbfe}.table-scroll{max-width:100%;overflow:auto}.checkbox-card{display:flex;align-items:flex-start;gap:9px;background:#f7fbff;padding:11px;border:1px solid #e4eef5;border-radius:11px}.checkbox-card input{margin-top:5px;accent-color:#318fc9}.box-spaced{margin-top:20px}.hide{display:none!important}.error{color:#b43842;font-size:.85rem;margin:0 0 12px}
@media(max-width:1050px){.app-shell{grid-template-columns:210px 1fr}.content{padding:25px 22px 65px}.sidebar{padding:17px 9px}.nav a{padding:12px 10px}.g4{grid-column:span 6}}@media(max-width:730px){.app-shell{display:block}.sidebar{display:none}.content{padding:16px 13px 94px}.topline{margin-bottom:17px}.page-head{margin-bottom:16px}.page-head .row{flex-wrap:wrap}.grid{gap:11px}.g4,.g6,.g8,.g12{grid-column:span 12}.card{padding:16px;border-radius:15px}.form-cols,.form-cols.three{grid-template-columns:1fr 1fr;gap:9px}.mobile-nav{display:grid;position:fixed;bottom:0;left:0;right:0;grid-template-columns:repeat(4,1fr);z-index:60;background:rgba(250,253,255,.96);border-top:1px solid #dce9f4;padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -7px 22px #4d9dca14}.mobile-nav a{padding:10px 3px 7px;text-align:center;display:grid;gap:3px;justify-items:center;font-size:.69rem;color:#7d97a8}.mobile-nav a span{font-size:1.2rem}.mobile-nav a.active{color:#267fb1;font-weight:770}.userpill{font-size:.73rem;padding:6px 10px}.patient-name{font-size:1.09rem}.kv{grid-template-columns:repeat(2,minmax(0,1fr))}.page-head h1{font-size:1.5rem}.metric .val{font-size:1.65rem}.login-panel{padding:25px 20px}}
@media(max-width:380px){.form-cols,.form-cols.three{grid-template-columns:1fr}.email-entry span{font-size:.75rem;padding:10px 6px}.pill{padding:7px 9px}.btn{padding:9px}}
@media print{.sidebar,.mobile-nav,.topline,.btn,.page-head .row{display:none!important}.app-shell{display:block}.content{padding:0}.card{box-shadow:none}.task-card{break-inside:avoid}}

/* V1.0.1: centered and accessible Admin password reset */
.reset-card{max-width:490px;max-height:min(92dvh,740px);overflow:auto;box-shadow:0 18px 58px rgba(17,44,65,.24)}
.reset-card .error:not(:empty){padding:10px 12px;border-radius:10px;background:#ffeded}
.reset-card .reset-actions{justify-content:flex-end;margin-top:8px}
.reset-card input[type="checkbox"]{width:18px;height:18px;accent-color:#2f91c8}
@media(max-width:530px){.reset-card{padding:19px}.reset-card .reset-actions .btn{flex:1}}

/* V1.0.3 — small, accessible dictation helper; no extra navigation or popup blocking */
.voice-guide{margin-top:10px;padding:12px 14px;border-radius:12px;border:1px solid #cde3f0;background:#f0f9ff;color:#295977;font-size:.85rem;line-height:1.6}
.voice-guide strong{display:block;margin-bottom:4px}.voice-guide p{margin:5px 0}.voice-guide .hint{font-size:.76rem}
.voice-status{color:#236e91;font-weight:650}.voice-guide .voice-install{margin-top:8px}
.btn.recording{background:#fff0ef;border-color:#cf7671;color:#963e3a}
