:root{--primary:#07543d;--primary-hover:#064331;--accent:#f3c83e;--info:#1d63b7;--info-hover:#174f92;--background:#f5f7f6;--surface:#fff;--text:#20352e;--muted:#5c7067;--border:#d6e1db;--danger:#a52b2b;--danger-bg:#fff1ef;--success:#176943;--warning-bg:#fff8df;--on-primary:#fff;--focus:#9d7500;font-family:'Leelawadee UI','Noto Sans Thai',Tahoma,sans-serif;font-size:16px;line-height:1.65;color:var(--text);background:var(--background)}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--primary);min-height:46px;padding:9px 18px}button:hover{background:var(--background)}button:disabled{opacity:.55;cursor:wait}.primary{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.primary:hover{background:var(--primary-hover)}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}a{color:var(--primary);text-underline-offset:4px}h1{font-size:1.85rem;line-height:1.4;margin:0 0 12px}h2{font-size:1.2rem;margin:0 0 12px}p{margin:0 0 18px}.muted{color:var(--muted);font-size:.925rem}.brand{font-size:1.1rem;letter-spacing:.07em;font-weight:700;display:flex;align-items:center;gap:12px}.brand-mark{display:inline-grid;place-items:center;width:46px;height:46px;border-radius:8px;background:var(--accent);color:var(--primary);letter-spacing:0}.auth-layout{min-height:100vh;display:grid;grid-template-columns:minmax(260px,36%) 1fr}.identity-panel{padding:48px;background:var(--primary);color:var(--on-primary);display:flex;flex-direction:column;justify-content:space-between;gap:40px;border-bottom:6px solid var(--accent)}.identity-panel h2{font-size:1.65rem;max-width:300px}.identity-panel p{opacity:.85;max-width:300px}.identity-panel small{font-size:.875rem}.form-area{display:grid;place-items:center;padding:40px 24px}.login-card{width:100%;max-width:420px}.login-card form{display:grid;gap:20px;margin:28px 0 20px}label{display:grid;gap:8px;font-size:.95rem;font-weight:600}input,select{width:100%;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);padding:11px 12px;min-height:48px}input:disabled{opacity:.65}.password-row{display:flex;gap:8px}.password-row input{min-width:0;flex:1}.password-row button{white-space:nowrap;padding:8px 12px;font-size:.875rem}.message{font-size:.95rem;padding:12px 16px;border-radius:8px;margin:16px 0;background:var(--warning-bg)}.message.error{background:var(--danger-bg);color:var(--danger)}.message:empty{display:none}.back-link{display:inline-block;font-size:.925rem;margin-top:20px}.loading{padding:80px 24px;text-align:center}.workspace{max-width:1200px;margin:0 auto;padding:32px 24px}.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:20px 32px;display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}.topbar .brand{color:var(--primary)}.account-actions{display:flex;align-items:center;gap:12px}.account-section{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;margin:24px 0}.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.account-grid dt{color:var(--muted);font-size:.925rem}.account-grid dd{margin:6px 0 0;font-weight:600;overflow-wrap:anywhere}.tags{display:flex;gap:8px;flex-wrap:wrap}.tag{display:inline-block;background:var(--background);border:1px solid var(--border);padding:5px 12px;border-radius:6px;font-size:.925rem}.account-section label{max-width:450px}.table-wrap{overflow:auto;max-height:480px;margin-top:20px}table{width:100%;border-collapse:collapse;text-align:left;font-size:.95rem}th{background:var(--background);position:sticky;top:0;color:var(--muted);font-weight:600}td,th{padding:14px 16px;border-bottom:1px solid var(--border)}tbody tr:hover{background:var(--background)}.table-footer{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;margin-top:16px}.error-actions{display:flex;gap:10px;flex-wrap:wrap}.small-note{font-size:.875rem;color:var(--muted);border-top:1px solid var(--border);padding-top:18px;margin-top:24px}
@media(max-width:760px){.auth-layout{grid-template-columns:1fr}.identity-panel{padding:24px;gap:16px}.identity-panel>div:nth-child(2),.identity-panel small{display:none}.form-area{padding:32px 20px;place-items:start center}.topbar{padding:16px 20px}.workspace{padding:24px 16px}.account-grid{grid-template-columns:1fr}.account-section{padding:20px}.account-actions{flex-wrap:wrap}h1{font-size:1.5rem}.identity-panel .brand{font-size:1rem}}
.admin-heading{display:flex;justify-content:space-between;align-items:start;gap:16px;flex-wrap:wrap}.admin-heading p{margin-bottom:0}.admin-account-table{max-height:560px}.admin-active{display:flex!important;grid-template-columns:auto 1fr;align-items:center}.admin-active input{width:22px;height:22px;min-height:0}#admin-dialog{color:var(--text);width:min(620px,94vw);max-height:90vh;overflow:auto;border:1px solid var(--border);border-radius:12px;padding:26px;background:var(--surface)}#admin-dialog::backdrop{background:rgb(0 0 0 / 35%)}#admin-dialog label{margin:16px 0}#admin-dialog select[multiple]{min-height:230px}
.retention-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:20px}.retention-count{font-size:2rem;color:var(--primary)}#retention-dialog{color:var(--text);width:min(560px,94vw);max-height:90vh;overflow:auto;border:1px solid var(--border);border-radius:12px;padding:26px;background:var(--surface)}#retention-dialog::backdrop{background:rgb(0 0 0 / 35%)}#retention-dialog label{margin:16px 0}

html{scroll-behavior:smooth}body{min-height:100vh;background:var(--background);text-rendering:optimizeLegibility}button,input,select,textarea{transition:border-color .16s ease,background-color .16s ease,box-shadow .16s ease}input:hover,select:hover,textarea:hover{border-color:#a9bbb2}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px rgb(7 84 61 / 12%)}.skip-link{position:fixed;z-index:1000;left:16px;top:12px;transform:translateY(-160%);padding:10px 16px;border-radius:8px;background:var(--surface);box-shadow:0 8px 24px rgb(0 0 0 / 18%);font-weight:700}.skip-link:focus{transform:translateY(0)}.identity-panel{background:linear-gradient(160deg,#07543d 0%,#064633 62%,#043727 100%);position:relative;overflow:hidden}.identity-panel::after{content:"";position:absolute;width:360px;height:360px;border:1px solid rgb(255 255 255 / 10%);border-radius:50%;right:-170px;bottom:-170px;box-shadow:0 0 0 56px rgb(255 255 255 / 3%),0 0 0 112px rgb(255 255 255 / 2%)}.identity-panel>*{position:relative;z-index:1}.environment-badge{display:inline-block;margin-bottom:18px;padding:4px 10px;border:1px solid rgb(255 255 255 / 28%);border-radius:999px;color:#fff6c7;background:rgb(255 255 255 / 8%);font-size:.78rem;font-weight:700;letter-spacing:.03em}.form-area{background:radial-gradient(circle at 70% 15%,#fff 0,transparent 32%)}.login-card{padding:34px;border:1px solid var(--border);border-radius:16px;background:rgb(255 255 255 / 94%);box-shadow:0 18px 55px rgb(25 53 43 / 9%)}.login-card .primary{width:100%;font-weight:700}.support-note{margin-top:8px}.loading{min-height:100vh;display:grid;place-items:center;color:var(--muted)}.loading::before{content:"";display:inline-block;width:22px;height:22px;margin-right:10px;vertical-align:middle;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}.topbar{position:sticky;top:0;z-index:30;box-shadow:0 4px 18px rgb(25 53 43 / 5%)}.account-actions>span{font-weight:600;overflow-wrap:anywhere}.account-section,.table-wrap{box-shadow:0 6px 24px rgb(25 53 43 / 4%)}.table-wrap{border:1px solid var(--border);border-radius:10px;background:var(--surface)}.table-wrap table{min-width:680px}.table-wrap th:first-child,.table-wrap td:first-child{padding-left:18px}.table-wrap th:last-child,.table-wrap td:last-child{padding-right:18px}tbody tr:last-child td{border-bottom:0}dialog{box-shadow:0 24px 70px rgb(0 0 0 / 24%)}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:760px){.login-card{padding:24px}.form-area{background:none}.identity-panel::after{display:none}.environment-badge{display:none}.topbar{position:static}.account-actions{width:100%;justify-content:space-between}.table-footer>div{display:flex;gap:8px}.table-footer button{flex:1}.table-wrap{max-width:calc(100vw - 32px)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media(max-width:760px){.admin-account-table{max-height:none;overflow:visible;border:0;background:transparent;box-shadow:none}.admin-account-table table{min-width:0}.admin-account-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.admin-account-table tbody{display:grid;gap:14px}.admin-account-table tr{display:block;padding:8px 16px;border:1px solid var(--border);border-radius:10px;background:var(--surface);box-shadow:0 5px 18px rgb(25 53 43 / 4%)}.admin-account-table td{display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:12px;padding:11px 0;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.admin-account-table td::before{color:var(--muted);font-size:.82rem;font-weight:700}.admin-account-table td:nth-child(1)::before{content:"อีเมล"}.admin-account-table td:nth-child(2)::before{content:"ชื่อผู้ใช้"}.admin-account-table td:nth-child(3)::before{content:"บทบาท / สาขา"}.admin-account-table td:nth-child(4)::before{content:"สถานะ"}.admin-account-table td:nth-child(5)::before{content:"ดำเนินการ"}.admin-account-table td:last-child{border-bottom:0}.admin-account-table td:last-child button{width:100%}.admin-account-table td[colspan]{display:block;text-align:center}.admin-account-table td[colspan]::before{content:none}}
.account-actions-row{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}.dashboard-main{background:linear-gradient(180deg,#f1f7f4 0,#f7f9f8 360px)}.dashboard-retention-note{display:inline-flex;align-items:center;padding:8px 12px;border:1px solid #c9ded3;border-radius:999px;background:#edf8f2;color:var(--success);font-size:.86rem;font-weight:700}.dashboard-filter label{min-width:180px}.dashboard-cards{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:14px;margin:24px 0}.dashboard-cards .dashboard-card{--dashboard-card-bg:#fff;--dashboard-card-accent:#07543d;--dashboard-card-border:#d6e1db;padding:18px 20px 20px;border:1px solid var(--dashboard-card-border);border-top:3px solid var(--dashboard-card-accent);border-radius:12px;background:var(--dashboard-card-bg);box-shadow:0 6px 18px rgb(15 23 42 / 6%)}.dashboard-cards .dashboard-card--appointments{--dashboard-card-bg:#eff6ff;--dashboard-card-accent:#1e40af;--dashboard-card-border:#bfdbfe}.dashboard-cards .dashboard-card--attended{--dashboard-card-bg:#f5f3ff;--dashboard-card-accent:#6d28d9;--dashboard-card-border:#ddd6fe}.dashboard-cards .dashboard-card--absent{--dashboard-card-bg:#fffbeb;--dashboard-card-accent:#92400e;--dashboard-card-border:#fde68a}.dashboard-cards .dashboard-card--passed{--dashboard-card-bg:#ecfdf5;--dashboard-card-accent:#047857;--dashboard-card-border:#a7f3d0}.dashboard-cards .dashboard-card--failed{--dashboard-card-bg:#fef2f2;--dashboard-card-accent:#b91c1c;--dashboard-card-border:#fecaca}.dashboard-cards .dashboard-card span{display:block;min-height:44px;color:#334155;font-size:.88rem;font-weight:600}.dashboard-cards .dashboard-card strong{display:inline-block;max-width:100%;margin-right:6px;color:var(--dashboard-card-accent);font-size:2rem;line-height:1.2;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.dashboard-cards .dashboard-card small{color:#475569}.dashboard-outcome-section{overflow:hidden}.dashboard-outcome-layout{display:grid;grid-template-columns:minmax(260px,1fr) minmax(260px,1fr);align-items:center;gap:36px;margin-top:16px}.dashboard-donut{display:grid;justify-items:center;min-width:0}.dashboard-donut-svg{display:block;width:min(100%,320px);height:auto;overflow:visible}.dashboard-donut-track,.dashboard-donut-segment{fill:none;stroke-width:42}.dashboard-donut-track{stroke:#e2e8f0}.dashboard-donut-track.is-empty{stroke:#cbd5e1}.dashboard-donut-segment{transform:rotate(-90deg);transform-origin:120px 120px}.dashboard-donut-segment--passed{stroke:#008b68}.dashboard-donut-segment--failed{stroke:#ef4760}.dashboard-donut-separator{stroke:#fff;stroke-width:4}.dashboard-donut-count,.dashboard-donut-center-label,.dashboard-donut-percent{text-anchor:middle;dominant-baseline:middle;font-family:inherit}.dashboard-donut-count{fill:#0f172a;font-size:28px;font-weight:800;font-variant-numeric:tabular-nums}.dashboard-donut-center-label{fill:#475569;font-size:12px}.dashboard-donut-percent{fill:#020617;font-size:11px;font-weight:800;paint-order:stroke;stroke:rgb(255 255 255 / 55%);stroke-width:1px}.dashboard-donut-empty{margin:4px 0 0;color:#475569;text-align:center}.dashboard-outcome-legend{display:grid;gap:0;margin:0}.dashboard-outcome-legend>div{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:16px 0;border-bottom:1px solid #e2e8f0}.dashboard-outcome-legend dt{display:flex;align-items:center;gap:10px;color:#334155;font-weight:700}.dashboard-outcome-legend i{width:12px;height:12px;border-radius:999px;background:#008b68}.dashboard-outcome-legend i.failed{background:#ef4760}.dashboard-outcome-legend dd{display:flex;align-items:baseline;gap:14px;margin:0;font-variant-numeric:tabular-nums}.dashboard-outcome-legend dd strong{min-width:5ch;color:#0f172a;font-size:1.45rem;text-align:right}.dashboard-outcome-legend dd span{min-width:4.5ch;color:#475569;text-align:right}.dashboard-outcome-legend .total{border-bottom:0}.dashboard-outcome-note{margin:18px 0 0;padding-top:14px;border-top:1px solid #e2e8f0;color:#475569;font-size:.84rem}.dashboard-table{max-height:560px}.dashboard-table td:not(:first-child),.dashboard-table th:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}
@media(max-width:1180px){.dashboard-cards{grid-template-columns:repeat(3,minmax(150px,1fr))}}
@media(max-width:760px){.account-actions-row>*{flex:1}.dashboard-main{background:var(--background)}.dashboard-retention-note{border-radius:9px}.dashboard-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.dashboard-cards .dashboard-card{padding:14px 16px 16px}.dashboard-cards .dashboard-card span{min-height:40px}.dashboard-cards .dashboard-card strong{font-size:1.55rem}.dashboard-outcome-layout{grid-template-columns:1fr;gap:12px}.dashboard-donut-svg{width:min(100%,280px)}.dashboard-outcome-legend{width:100%}.dashboard-table{max-width:calc(100vw - 32px)}}
@media(max-width:430px){.dashboard-cards{grid-template-columns:1fr}.dashboard-cards .dashboard-card span{min-height:0}}
.dashboard-cards.ai-dashboard-cards{grid-template-columns:repeat(3,minmax(180px,1fr));max-width:960px}
@media(max-width:760px){.dashboard-cards.ai-dashboard-cards{grid-template-columns:1fr}}
