:root{--teal:#087f7a;--teal2:#0ca49b;--ink:#17313a;--muted:#657b82;--bg:#f3f8f8;--line:#dce8e8;--white:#fff;--danger:#a9323e;--shadow:0 14px 40px rgba(14,61,65,.1)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,"Noto Sans Thai",sans-serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit}button,.button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:.72rem 1rem;color:var(--ink);cursor:pointer;text-decoration:none;display:inline-block}button:hover,.button:hover{border-color:var(--teal)}button:disabled{opacity:.45;cursor:not-allowed}.primary{background:linear-gradient(135deg,var(--teal),var(--teal2));border:0;color:#fff!important;font-weight:750}.install-body{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 10% 10%,#d8f3ef,transparent 32%),radial-gradient(circle at 90% 90%,#d9edf4,transparent 30%),var(--bg)}.install-card{width:min(470px,100%);background:#fff;border:1px solid var(--line);border-radius:25px;padding:36px;box-shadow:var(--shadow)}.logo{width:66px;height:66px;border-radius:19px;background:linear-gradient(145deg,var(--teal),#075e75);color:#fff;display:grid;place-items:center;font-size:32px;font-weight:900;box-shadow:0 10px 28px #087f7a40}.logo span{color:#8de9da}.logo.small{width:43px;height:43px;border-radius:13px;font-size:21px;box-shadow:none}.eyebrow{font-size:.7rem;letter-spacing:.16em;font-weight:850;color:var(--teal);margin:16px 0 5px}.install-card h1{font-size:2rem;margin:0}.muted{color:var(--muted)}label{display:grid;gap:6px;font-size:.85rem;font-weight:700;margin:13px 0}label small{font-weight:400;color:var(--muted)}input,select,textarea{width:100%;padding:.76rem .84rem;border:1px solid #cbdcdc;border-radius:10px;background:#fff;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:3px solid #0ca49b22;border-color:var(--teal2)}textarea{min-height:75px;resize:vertical}.install-card form .primary{width:100%;margin-top:10px}.checks{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:18px 0}.check{font-size:.8rem;background:#f5f9f9;padding:9px;border-radius:8px}.check.ok b{color:#087f7a}.check.bad b{color:var(--danger)}.emergency{text-align:center;color:var(--danger);font-size:.75rem;margin:20px 0 0}.alert{padding:13px 15px;border-radius:11px;margin:0 0 18px;background:#e8f6f3;color:#086c66;border:1px solid #bee4df}.alert.error{background:#fff0f1;color:#8f2934;border-color:#f0c4c8}.app{min-height:100vh;display:grid;grid-template-columns:250px 1fr}aside{background:#0e3038;color:#d8eaec;padding:23px 17px;display:flex;flex-direction:column;height:100vh;position:sticky;top:0}.brand{display:flex;gap:11px;align-items:center;padding:0 8px 25px}.brand small,.aside-foot small{display:block;color:#91adb2;margin-top:3px}nav{display:grid;gap:5px}nav a{color:#bad0d2;text-decoration:none;padding:11px 13px;border-radius:9px}nav a:hover,nav a.active{color:#fff;background:#ffffff13}.aside-foot{margin-top:auto;border-top:1px solid #ffffff18;padding:17px 8px 0}.link{background:none;border:0;color:#85ded2;padding:8px 0}.workspace{min-width:0}header{height:92px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:15px;padding:0 30px}header h1{font-size:1.4rem;margin:0}header .eyebrow{margin:0 0 2px}.online{margin-left:auto;color:#087b71;background:#e7f7f2;padding:7px 11px;border-radius:999px;font-size:.76rem;font-weight:700}.menu{display:none}.content{padding:28px 30px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:17px}.cards article,.panel,.table-wrap{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 4px 18px rgba(14,61,65,.04)}.cards article{padding:19px}.cards span{color:var(--muted);font-size:.82rem}.cards strong{display:block;font-size:2rem;margin-top:7px}.panel{padding:24px}.panel h2{margin-top:0}.hero{margin-top:20px;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(120deg,#fff,#e8f7f4)}.hero h2{margin:5px 0}.hero p{color:var(--muted)}.toolbar{display:flex;gap:10px;margin-bottom:15px}.toolbar input{max-width:380px}.toolbar .primary{margin-left:auto}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:720px}th,td{text-align:left;padding:13px 15px;border-bottom:1px solid #edf3f3;font-size:.86rem}th{background:#f8fbfb;color:var(--muted);font-size:.76rem}td small{display:block;color:var(--muted);margin-top:3px}.badge{display:inline-block;padding:5px 8px;border-radius:999px;background:#e6f5f2;color:#087069;font-size:.72rem}.status-form select{min-width:130px;padding:.5rem}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.wide{grid-column:1/-1}.checkline{display:flex!important;align-items:center}.checkline input{width:auto}.narrow{max-width:650px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}hr{border:0;border-top:1px solid var(--line);margin:20px 0}.total{background:#0e3038;color:#fff;border-radius:15px;padding:20px;margin-top:17px}.total span,.total small{display:block;color:#bcd1d3}.total strong{display:block;font-size:2rem;margin:6px 0}dialog{border:0;padding:0;border-radius:20px;width:min(760px,calc(100% - 24px));box-shadow:0 30px 80px #17313a55}dialog::backdrop{background:#17313a88;backdrop-filter:blur(3px)}dialog form{padding:23px}.dialog-head,.dialog-actions{display:flex;justify-content:space-between;align-items:center}.dialog-head h2{margin:0}.dialog-head button{border:0;font-size:1.25rem}.dialog-actions{justify-content:flex-end;gap:10px;border-top:1px solid var(--line);padding-top:16px;margin-top:17px}@media(max-width:900px){.app{grid-template-columns:1fr}aside{position:fixed;left:-265px;width:250px;z-index:30;transition:.2s}.menu-open aside{left:0}.menu{display:block}.content,header{padding-left:18px;padding-right:18px}.cards{grid-template-columns:1fr 1fr}.online{display:none}}@media(max-width:560px){.install-card{padding:26px 20px}.checks,.cards,.form-grid,.two-col{grid-template-columns:1fr}.wide{grid-column:auto}.hero{align-items:flex-start;flex-direction:column;gap:12px}.toolbar{flex-wrap:wrap}.toolbar .primary{margin-left:0}}

