@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+Thai:wght@400;500;600;700&display=swap');
:root{font-family:'Noto Sans Thai',Tahoma,sans-serif;color:#173d34;background:#f3f7f4;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #d49b35;outline-offset:4px}[hidden]{display:none!important}header{max-width:1140px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:28px 30px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit;font-size:19px}.brand b{font-weight:500;color:#087e62}.brand small{display:block;font-size:11px;color:#70847b;margin-top:3px}.logo{background:#087e62;color:white;border-radius:18px 18px 18px 4px;width:49px;height:49px;display:grid;place-content:center;font-size:28px;font-weight:bold;position:relative}.logo span{position:absolute;left:26px;top:15px;font-size:17px;color:#f2cf74}main{max-width:1080px;margin:auto;padding:0 30px 35px}.demo{display:inline-block;background:#fff2d5;color:#88651c;font-size:12px;padding:6px 12px;border-radius:8px;margin:12px 0 28px}#login{display:grid;grid-template-columns:1.1fr 1fr;gap:80px;align-items:center;padding:20px 0 50px}.eyebrow{font-size:12px;letter-spacing:1px;color:#087e62;font-weight:600}h1{font-size:42px;line-height:1.4;letter-spacing:-1px;margin:12px 0}h2{font-size:25px;margin:8px 0}p{color:#718178;line-height:1.9;font-size:14px}.panel{background:white;border:1px solid #e0e9e2;border-radius:26px;padding:32px;box-shadow:0 12px 45px #153e2906}label{display:block;font-size:13px;font-weight:600;margin:21px 0 8px}input{display:block;width:100%;min-width:0;border:1px solid #d9e4dd;background:#fafcfb;border-radius:11px;padding:13px;margin-top:8px;font-size:16px;color:#173d34}.primary{background:#087e62;color:white;border:0;padding:14px 20px;border-radius:12px;width:100%;margin-top:20px}.quiet{border:1px solid #d5e5db;border-radius:10px;background:#fff;color:#087e62;padding:10px 15px}.demo-accounts{margin-top:25px;padding-top:20px;border-top:1px solid #e8eee9;font-size:12px}.demo-accounts p{font-size:12px}.demo-accounts button{border:0;background:#edf5f0;color:#086449;border-radius:8px;padding:8px 13px;margin:3px}.illustration{margin-top:35px;background:#e4efe5;border-radius:80px 80px 24px 24px;text-align:center;padding:20px;color:#337d58}.illustration>span{font-size:60px;color:#c8a84a}.illustration div{font-size:19px}.illustration b{padding:0 15px}.illustration small{display:block;padding:15px;font-size:11px}.heading{margin-bottom:25px}.heading h1{font-size:32px}.card-layout{display:grid;grid-template-columns:450px 1fr;gap:35px;align-items:start}.pickup{padding:0;overflow:hidden;touch-action:pan-y}.card-head{background:#087e62;color:white;padding:20px 25px;display:flex;justify-content:space-between;align-items:center;font-size:11px;letter-spacing:1px}.badge{background:#ffffff20;padding:5px 8px;border-radius:7px;font-size:10px;letter-spacing:0}.people{display:flex;align-items:center;justify-content:center;gap:20px;padding:30px 15px 22px;background:linear-gradient(#e9f4eb,white)}.people>div{flex:1;text-align:center}.avatar{display:grid;place-content:center;font-size:54px;width:100px;height:100px;border:5px solid white;border-radius:50%;background:#f5e7c7;margin:0 auto 12px}.adult{background:#d6e7dd}.people small,.people strong{display:block;font-size:11px;color:#75877b}.people strong{font-size:14px;color:#173d34;margin-top:5px}.connection{color:#88ad98;font-size:25px}.student-meta{display:flex;justify-content:space-between;margin:0 25px;padding:15px 0;border-top:1px solid #e5eee7;border-bottom:1px solid #e5eee7;font-size:12px;color:#657b6f}.qr-area{text-align:center;padding:22px}#qr{width:216px;height:216px;padding:12px;margin:auto;background:white}#qr img,#qr canvas{width:192px;height:192px}#qrStatus{font-size:13px;color:#087e62;margin:12px 0 5px}.qr-area small{font-size:10px;color:#718178;display:block;margin-top:12px}progress{width:150px;height:5px;accent-color:#087e62}.card-foot{text-align:center;padding:13px;background:#f7faf7;color:#85928a;font-size:10px}.instruction h2{font-size:22px}#children{display:grid;gap:10px;margin-top:25px}#children button{display:flex;gap:15px;align-items:center;text-align:left;padding:14px;border-radius:14px;border:1px solid #e1eae3;background:white;color:#173d34}#children button.active{border-color:#087e62;background:#eef7f0}#children span{font-size:30px}#children small{display:block;color:#789080;font-size:11px}.tip{background:#f5f8f2;padding:18px;border-radius:15px;margin:24px 0 17px;font-size:13px}.tip p{font-size:12px;margin-bottom:0}details{border-top:1px solid #e4ece6;margin-top:20px;padding-top:20px;font-size:11px}details input{font-size:11px}details button{margin-top:10px}#message{color:#a3482e;min-height:25px}#staff{max-width:650px;margin:auto}#scanResult{margin-top:20px}#scanResult h2{color:#087e62}.result-people{display:flex;gap:25px;margin-top:20px}.result-people>div{flex:1;text-align:center}footer{text-align:center;font-size:11px;color:#819387;padding:20px 20px 30px}@media(max-width:800px){header{padding:20px}main{padding:0 20px 20px}#login{display:block;padding:0}.intro{margin-bottom:30px}.intro h1{font-size:30px}.intro p{font-size:13px}.illustration{display:none}.panel{padding:25px}.card-layout{display:block}.pickup{padding:0;max-width:460px;margin:auto}.instruction{margin:20px auto 0;max-width:460px}.heading h1{font-size:28px}.demo{margin-bottom:18px}.brand{font-size:16px}.brand small{font-size:10px}.people{gap:8px}.avatar{width:88px;height:88px;font-size:48px}header>.quiet{font-size:11px;padding:8px}.heading p{font-size:12px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
.pickup{cursor:grab;user-select:none;-webkit-user-select:none;transition:transform .18s ease;touch-action:pan-y pinch-zoom}.pickup.dragging{cursor:grabbing;transition:none}#qr img,#qr canvas{pointer-events:none;-webkit-user-drag:none}.swipe-hint{font-size:12px;color:#087e62;margin:12px 0 4px}@media(prefers-reduced-motion:reduce){.pickup{transition:none}}
/* Focused login layout; other application screens keep their existing layout. */
body.login-view{min-height:100svh;background:radial-gradient(ellipse at 85% 0%,#dcebdd,transparent 60%),linear-gradient(135deg,#f0f5f1,#e2ebe3);display:grid;place-items:center;padding:30px 14px}
.login-view>header,.login-view>footer,.login-view main>.demo{display:none}
.login-view main{width:100%;max-width:482px;padding:0;margin:auto}
.login-view #login{display:block;padding:0}
.login-view #loginForm{padding:35px 32px 29px;border:0;border-radius:27px;box-shadow:0 20px 50px #23452d0c}
.login-brand{display:flex;align-items:center;gap:13px;margin-bottom:40px}
.login-brand img{width:43px;height:49px;object-fit:contain}
.login-brand strong{display:block;font-size:20px;line-height:1.3;letter-spacing:-.6px}
.login-brand span{display:block;font-size:12px;letter-spacing:1.6px;font-weight:600;color:#75847d;margin-top:5px}
#loginForm .eyebrow{font-size:10px;letter-spacing:2px;color:#168067}
#loginForm h1{font-size:25px;font-weight:700;line-height:1.45;letter-spacing:-1px;margin:20px 0 9px}
#loginForm .login-subtitle{font-size:13px;margin:0 0 25px;color:#7b8982}
#loginForm label{margin:20px 0 0;font-size:13px;color:#243e35}
.login-input{position:relative;margin-top:9px}
.login-input svg{width:18px;height:18px;position:absolute;left:17px;top:18px;stroke:#8ca398;stroke-width:1.5;fill:none;pointer-events:none}
#loginForm input{height:56px;border:1px solid #dce5df;border-radius:13px;background:#f7f9f7;margin:0;padding:14px 15px 14px 44px;font-size:15px;font-weight:400}
#loginForm input::placeholder{color:#9bab9f}
#loginForm .primary{height:56px;margin-top:21px;background:linear-gradient(135deg,#2c846c,#20745f);border:1px solid #1e725b;border-radius:13px;font-weight:600;box-shadow:0 5px 10px #20654e24;display:flex;align-items:center;justify-content:center;gap:20px}
#loginForm .primary span{font-size:24px;font-weight:400}
#loginForm .login-foot{display:flex;align-items:center;justify-content:center;gap:8px;font-size:11px;color:#8a9a90;margin:26px 0 0}
.login-foot svg{width:16px;height:16px;stroke:currentColor;stroke-width:1.4;fill:none;flex-shrink:0}
.login-view #message{margin:12px 15px 0;text-align:center;font-size:13px;min-height:0}.login-view #message:empty{display:none}
@media(max-width:390px){.login-view #loginForm{padding:30px 23px 25px}#loginForm h1{font-size:22px}.login-brand{margin-bottom:30px}}
.header-logo{width:36px;height:42px;object-fit:contain}.parent-view{background:#f4f8f5;min-height:100svh}.parent-view header{max-width:1040px;padding:25px 22px}.parent-view header .brand{font-size:17px}.parent-view header .brand small{font-size:10px}.parent-view main{max-width:1000px;padding:10px 22px 110px}.parent-view main>.demo{display:none}.parent-view>footer{display:none}.home-greeting{margin:25px 0 32px}.home-greeting .eyebrow{font-size:10px;letter-spacing:2px}.home-greeting h1{font-size:28px;margin:10px 0 3px}.home-greeting p{margin:0;font-size:13px}.service-title-row{display:flex;align-items:center;gap:12px;margin-bottom:14px}.service-title-row h2{font-size:20px;margin:0}.service-title-row>span{background:#e5eee8;border-radius:9px;padding:1px 11px;font-size:12px;color:#477966}.service-search{position:relative;margin:0 0 20px}.service-search>span{position:absolute;left:18px;top:8px;font-size:26px;color:#8da096}.service-search input{background:white;padding-left:46px;border-radius:16px;height:53px;font-size:14px;box-shadow:0 2px 3px #193c2103}.service-hero{width:100%;min-height:175px;border-radius:24px;border:1px solid #34846a;background:linear-gradient(110deg,#195b47,#124b3e);color:white;display:flex;align-items:center;text-align:left;padding:30px 24px;gap:18px;position:relative;overflow:hidden;box-shadow:0 10px 16px #174b3621}.service-hero:before{content:'';width:260px;height:260px;border:35px solid #ffffff04;border-radius:50%;position:absolute;right:-125px;top:-170px}.service-hero:after{content:'';width:160px;height:160px;border-radius:50%;position:absolute;right:-70px;bottom:-85px;background:#85b98622}.hero-label{position:absolute;right:23px;top:20px;font-size:10px;border:1px solid #ffffff22;border-radius:20px;padding:4px 11px;color:#c0ded0}.service-symbol{width:65px;height:65px;display:grid;place-items:center;border-radius:18px;background:#ffffff19;border:1px solid #ffffff30;flex-shrink:0}.service-symbol svg{width:36px;height:36px;fill:none;stroke:#d9eed7;stroke-width:1.5}.hero-copy strong{display:block;font-size:20px}.hero-copy small{display:block;color:#b4d2c5;font-size:12px;margin-top:6px}.hero-arrow{margin-left:auto;align-self:flex-end;font-size:24px;z-index:1;color:#d7ebdf}.family-summary{display:flex;align-items:center;gap:14px;padding:23px 20px;background:#fff;border:1px solid #e4ece6;border-radius:22px;margin-top:18px;box-shadow:0 6px 10px #214a2e05}.family-mark{font-size:32px;color:#317f63;background:#edf5ed;border-radius:16px;padding:3px 13px}.family-summary strong{font-size:14px}.family-summary p{font-size:11px;margin:5px 0 0}.family-count{margin-left:auto;color:#42775d;font-size:12px;white-space:nowrap}.coming-note{font-size:11px;text-align:center;margin:24px 0;color:#94a399}.bottom-nav{position:fixed;bottom:calc(12px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:calc(100% - 28px);max-width:600px;display:flex;justify-content:space-around;padding:7px;background:#ffffffed;border:1px solid white;border-radius:21px;box-shadow:0 8px 35px #27432e16;backdrop-filter:blur(12px);z-index:10}.bottom-nav button{min-width:70px;border:0;border-radius:15px;background:transparent;color:#86978c;display:flex;flex-direction:column;align-items:center;gap:4px;padding:5px 15px;font-size:10px}.bottom-nav button.active{background:#e8f3eb;color:#087e62}.bottom-nav svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.utility-page h1{font-size:28px}.utility-page{padding-top:25px}.back-home{background:none;border:0;padding:5px 0 15px;color:#087e62;font-size:13px}.parent-view #logout{font-size:11px}.empty-state{text-align:center;padding:45px 20px}@media(min-width:801px){#home{max-width:800px;margin:0 auto}.home-greeting{margin-top:35px}.service-hero{min-height:200px}.family-summary{max-width:440px}.coming-note{text-align:left}}@media(max-width:380px){.hero-copy strong{font-size:18px}.service-hero{padding:27px 18px;gap:12px}.service-symbol{width:54px;height:58px}.family-summary{padding:18px 12px;gap:10px}.family-summary p{font-size:10px}.bottom-nav button{padding:5px 10px;min-width:60px}}
.card-layout{display:block;max-width:450px;margin:0 auto}.card-layout .pickup{width:100%}#qrStatus{cursor:pointer}
.card-stage{position:relative;overflow:hidden;border-radius:26px;isolation:isolate}.card-stage .pickup{transition:none;will-change:transform}.card-stage .neighbour-card{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;pointer-events:none}.qr-pending{display:grid;place-items:center;background:#f4f8f5!important;border-radius:16px;color:#8ca397;font-size:12px}
.avatar{overflow:hidden;font-size:12px;color:#708479}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.avatar:has(img){display:block}.neighbour-card .avatar img{width:100%;height:100%;object-fit:cover}
