:root{--navy: #1b2f5e;--navy-dark: #12204a;--navy-tint: #e9eef8;--gold: #d4af5a;--gold-line: #c9a24a;--gold-pale: #e8d9a8;--gold-tint: #f7efdf;--gold-ink: #6b4510;--bg: #fbf8f3;--card: #ffffff;--line: #e7e0d6;--line-strong: #d9cfc1;--ink: #1f1b16;--muted: #5f5a52;--ok: #2f7d4f;--ok-ink: #1f4d33;--ok-tint: #e8f3ec;--bad: #b42318;--bad-ink: #8f1b12;--bad-tint: #fbe9e7;--warn-ink: #7a3a08;--warn-tint: #fbeedd;--radius: 14px}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink)}body{font-family:IBM Plex Sans Thai,system-ui,sans-serif;font-size:15px;line-height:1.5;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--navy)}h1,h2,h3{margin:0}.serif{font-family:"Noto Serif Thai",serif}.app{max-width:560px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}.app.wide{max-width:1100px}.page{padding:4px 20px 32px;display:flex;flex-direction:column;gap:14px}.band{display:block;width:100%;height:18px}.corners{display:flex;justify-content:space-between;height:30px;padding:2px 2px 0;pointer-events:none}.head{display:flex;align-items:center;justify-content:space-between;gap:12px}.title{font-family:"Noto Serif Thai",serif;font-size:22px;font-weight:700}.sub{font-size:13px;color:var(--muted)}.small{font-size:12px;color:var(--muted)}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:12px}.card.tint{background:var(--navy-tint);border-color:transparent}.card.gold{background:var(--gold-tint);border-color:#f0d9b5;color:var(--gold-ink)}.card.bad{background:var(--bad-tint);border-color:#f2c4be;color:var(--bad-ink)}.row{display:flex;align-items:center;justify-content:space-between;gap:10px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.btn{min-height:48px;border-radius:var(--radius);border:none;background:var(--navy);color:#fff;font-size:16px;font-weight:600;padding:0 18px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none}.btn.big{min-height:56px;font-size:18px}.btn.outline{background:#fff;color:var(--navy);border:1px solid var(--navy)}.btn.ghost{background:transparent;color:var(--navy);min-height:44px;padding:0 10px}.btn.danger{background:#fff;color:var(--bad);border:1px solid var(--bad)}.btn.sm{min-height:40px;font-size:14px;padding:0 14px;border-radius:10px}.btn:disabled{background:var(--line);color:#4a443c;border-color:transparent;cursor:not-allowed}.chip{border-radius:10px;padding:8px 10px;display:flex;flex-direction:column}.chip .k{font-size:12px}.chip .v{font-size:14px;font-weight:700}.chip.ok{background:var(--ok-tint);color:var(--ok-ink)}.chip.bad{background:var(--bad-tint);color:var(--bad-ink)}.chip.wait{background:#efe8de;color:#3b362f}.chip.info{background:var(--navy-tint);color:var(--navy-dark)}.pill{font-size:12px;font-weight:600;border-radius:999px;padding:3px 10px;white-space:nowrap}.pill.ok{background:var(--ok-tint);color:var(--ok-ink)}.pill.late{background:var(--warn-tint);color:var(--warn-ink)}.pill.bad{background:var(--bad-tint);color:var(--bad-ink)}.pill.muted{background:#efe8de;color:#3b362f}.pill.duty{border:1.5px solid #b8862b;color:var(--gold-ink);background:transparent}.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 6px;text-align:center}.stat b{display:block;font-size:20px}.stat span{font-size:12px;color:var(--muted)}label.field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.input{min-height:44px;border:1px solid var(--line-strong);border-radius:10px;padding:0 12px;font-size:15px;background:#fff;color:var(--ink);width:100%}label.check{display:flex;align-items:center;gap:10px;min-height:40px;font-size:15px}label.check input{width:20px;height:20px;accent-color:var(--navy)}.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;font-size:12px;text-align:center}.steps li{padding:6px 0;border-radius:999px;background:#efe8de;color:#4a443c;font-weight:600}.steps li.on{background:var(--navy);color:#fff}.steps li.done{background:var(--ok-tint);color:var(--ok-ink)}.camera{position:relative;border-radius:18px;overflow:hidden;background:#2a2320;aspect-ratio:3 / 4;max-height:52vh}.camera video,.camera img{width:100%;height:100%;object-fit:cover;display:block;transform:scaleX(-1)}.camera .oval{position:absolute;left:50%;top:8%;width:46%;height:62%;transform:translate(-50%);border:3px solid var(--gold-pale);border-radius:50%}.camera .tag{position:absolute;left:12px;top:12px;font-size:11px;font-weight:600;color:#fff;background:#00000080;border-radius:999px;padding:3px 10px}.sigpad{width:100%;height:190px;background:#fff;border:1.5px dashed #cdbfae;border-radius:16px;touch-action:none;display:block}.list-row{display:flex;align-items:center;justify-content:space-between;min-height:44px;border-bottom:1px solid #f1ebe3;gap:10px}.list-row:last-child{border-bottom:none}.tabs{display:flex;gap:4px;background:#efe8de;border-radius:12px;padding:4px;overflow-x:auto}.tabs button{flex:1;min-height:40px;border:none;border-radius:9px;background:transparent;font-weight:600;color:var(--muted);white-space:nowrap;padding:0 12px}.tabs button.on{background:#fff;color:var(--navy-dark)}.topnav{display:flex;gap:4px;flex-wrap:wrap}.topnav a{min-height:40px;display:inline-flex;align-items:center;padding:0 14px;border-radius:10px;color:#3b362f;font-size:14px;text-decoration:none}.topnav a.on{background:var(--navy-tint);color:var(--navy-dark);font-weight:600}.error{background:var(--bad-tint);color:var(--bad-ink);border-radius:12px;padding:10px 14px;font-size:14px}.notice{background:var(--ok-tint);color:var(--ok-ink);border-radius:12px;padding:10px 14px;font-size:14px}.center{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:24px}.code{font-family:ui-monospace,monospace;font-size:28px;letter-spacing:4px;font-weight:700;color:var(--navy-dark)}.kiosk{min-height:100vh;display:grid;grid-template-columns:minmax(280px,40%) 1fr}.kiosk .left{background:var(--navy-dark);color:#fff;padding:0 36px 36px;display:flex;flex-direction:column;gap:22px}.kiosk .clock{font-size:clamp(64px,10vw,110px);font-weight:600;line-height:1}.kiosk .right{padding:40px;display:flex;flex-direction:column;gap:18px}@media (max-width: 720px){.kiosk{grid-template-columns:1fr}}
