@font-face{font-family:LocalUI;src:local('Segoe UI')}*{box-sizing:border-box}body{margin:0;font-family:LocalUI,system-ui,sans-serif;color:#233c38;background:#f4f6f4;font-size:14px}button,input,select,textarea{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.5}a{color:#117b6a}button:focus-visible,a:focus-visible{outline:3px solid #c18b35;outline-offset:3px}h1,h2,h3,p{margin-top:0}h1{font-size:30px;font-weight:650;letter-spacing:-1px;margin-bottom:7px}h2{font-size:19px;font-weight:650}h3{font-size:15px}p{line-height:1.6}small,.muted{color:#71817d;font-size:12px}.shell{display:grid;grid-template-columns:232px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:#113e38;color:#d3e5dc;padding:30px 17px;display:flex;flex-direction:column}.brand{display:flex;gap:11px;align-items:center;font-size:25px;font-weight:700;letter-spacing:-1px;color:white;padding:0 14px 31px}.brand-mark{display:grid;place-items:center;width:34px;height:36px;background:#d5e9a6;border-radius:9px;color:#164d3c;font-size:27px}.brand-sub{font-size:10px;letter-spacing:1.2px;font-weight:400;display:block;margin-top:2px;color:#abc6bc}.nav-caption{font-size:10px;letter-spacing:1.5px;color:#8fac9f;margin:19px 15px 10px}.nav-btn{display:flex;align-items:center;gap:12px;width:100%;padding:12px 15px;border:0;background:transparent;color:#bdd4ca;border-radius:8px;text-align:left;margin:3px 0}.nav-btn:hover{background:#1b4d44}.nav-btn.active{background:#dbe8b3;color:#183f31;font-weight:650}.icon{width:19px;height:19px;display:inline-block;vertical-align:middle;flex-shrink:0}.sidebar-bottom{margin-top:auto;border-top:1px solid #345b50;padding:20px 12px 0;display:flex;gap:10px;align-items:center}.avatar{border-radius:50%;background:#406359;color:#e0f0e8;width:34px;height:34px;display:grid;place-items:center;font-weight:600}.sidebar-bottom small{color:#a2beb1}.logout{background:none;border:0;color:#c7d8d0;margin-left:auto;padding:5px}.workspace{min-width:0}.topbar{height:76px;background:#fff;border-bottom:1px solid #e3e9e2;display:flex;align-items:center;justify-content:space-between;padding:0 38px;gap:12px}.crumb{color:#84908a;font-size:12px}.crumb b{color:#41564d;font-weight:500}.connection{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:#50806b;white-space:nowrap}.connection:before{content:'';width:7px;height:7px;border-radius:50%;background:#56a47c}.connection.off{color:#b74432}.connection.off:before{background:#c44f3b}.content{padding:33px 38px 45px;max-width:1530px;margin:auto}.page-title{display:flex;align-items:start;justify-content:space-between;gap:20px;margin-bottom:27px}.eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:2px;color:#678072;margin-bottom:12px}.subtitle{color:#7c8981;font-size:13px;margin:0}.btn{border:1px solid #d9e1d9;background:white;border-radius:7px;padding:10px 15px;color:#335348;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:550;text-decoration:none;min-height:40px}.btn:hover{background:#edf3ed}.btn.primary{background:#147a66;border-color:#147a66;color:white}.btn.primary:hover{background:#116854}.btn.danger{color:#b45240;border-color:#ebd4ce}.btn.small{font-size:12px;min-height:32px;padding:6px 11px}.btn.large{padding:17px 25px;font-size:17px}.btn.ghost{background:transparent;border-color:transparent;color:#718579}.actions{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:24px}.metric{background:white;border:1px solid #e1e7de;border-radius:10px;padding:22px;position:relative}.metric .label{font-size:12px;color:#758377;display:flex;justify-content:space-between;align-items:center}.metric .value{font-size:34px;letter-spacing:-1.1px;margin:13px 0 8px;font-weight:650}.metric .hint{font-size:11px;color:#8d998e}.metric:first-child{background:#edf2df;border-color:#e1e7cd}.panel{border:1px solid #e0e7df;border-radius:11px;background:white;margin-bottom:22px;overflow:hidden}.panel-head{padding:21px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #edf0ea}.panel-head h2{margin:0}.panel-body{padding:24px}.split{display:grid;grid-template-columns:1.65fr 1fr;gap:22px}.queue-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:17px}.queue-card{background:white;border:1px solid #dfe6dc;border-radius:10px;padding:24px}.queue-name{font-size:17px;font-weight:650;display:flex;align-items:center;gap:11px}.queue-symbol{width:37px;height:37px;border-radius:9px;background:#edf2e5;color:#7b8c50;display:grid;place-items:center;font-size:14px}.queue-current{font-size:36px;font-weight:600;letter-spacing:-1px;margin:18px 0 3px;color:#195546}.queue-foot{border-top:1px solid #edf0e9;margin-top:20px;padding-top:15px;display:flex;justify-content:space-between;font-size:12px;color:#7f8b80}.badge{display:inline-flex;border-radius:5px;background:#eaf4eb;color:#437359;padding:4px 8px;font-size:10px;font-weight:650;white-space:nowrap}.badge.amber{background:#fbf1da;color:#9b7624}.badge.gray{background:#eef1ee;color:#79837b}.badge.red{background:#fbe8e2;color:#ac5142}.empty{padding:45px 24px;text-align:center;color:#7f8c82;line-height:1.7}.empty h2{color:#304f40;margin-top:13px}.empty .icon{width:36px;height:36px;color:#a2b391}.notice{background:#f3f5e9;border:1px solid #e2e7ce;border-radius:8px;padding:14px 17px;font-size:12px;color:#647341;line-height:1.6;margin-bottom:20px}.notice.warn{background:#fff5e7;border-color:#f1dec0;color:#956c31}.notice.error{background:#fff0ed;border-color:#f1d6ce;color:#a94a3b}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}th{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:#8a958c;font-weight:600;background:#fafbf8;padding:13px 19px;white-space:nowrap}td{padding:16px 19px;border-top:1px solid #edf0e9;vertical-align:middle}td strong{font-weight:650}tr:last-child td{border-bottom:none}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:19px}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}.field label{font-size:12px;font-weight:600;color:#5b7064}.field input,.field select,.field textarea{padding:11px 12px;border:1px solid #d8e2d8;border-radius:7px;background:white;color:#284539;width:100%;min-height:42px}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid #b7d8be;outline-offset:1px}.field small{line-height:1.5}.span2{grid-column:1/-1}.checks{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0 22px}.check{display:flex;align-items:center;gap:9px;font-size:12px;line-height:1.5}.check input{accent-color:#187b64;width:17px;height:17px}.filters{display:flex;align-items:end;gap:13px;flex-wrap:wrap}.filters .field{margin:0;min-width:125px;flex:1}.filters .field select,.filters .field input{font-size:12px}.chart{width:100%;height:230px}.chart-text{fill:#8b978c;font-size:11px}.legend{display:flex;align-items:center;gap:7px;font-size:11px;color:#7e8a7f}.legend:before{content:'';width:9px;height:9px;background:#91b183;border-radius:2px}.desk-card{padding:30px;text-align:center}.desk-number{font-size:76px;letter-spacing:-4px;color:#165b48;font-weight:650;margin:16px 0}.desk-card .actions{justify-content:center}.operator-layout{display:grid;grid-template-columns:1.15fr 1fr;gap:22px}.queue-list{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.step{display:flex;gap:15px;align-items:start;margin-bottom:23px}.step-number{width:27px;height:27px;flex-shrink:0;background:#e9efdf;color:#71864e;border-radius:50%;display:grid;place-items:center;font-size:12px}.step p{font-size:12px;color:#7a897d;margin:6px 0 0}.step strong{font-size:13px}.loading{padding:80px;text-align:center;color:#748c7d}.login-page{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.login-art{background:#123f36;color:white;padding:70px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}.login-art:after{content:'';position:absolute;width:550px;height:550px;border:1px solid #426e54;border-radius:50%;left:-160px;bottom:-360px}.login-art h1{font-size:54px;line-height:1.1;max-width:500px;letter-spacing:-2px}.login-art p{color:#b4caba;max-width:370px;margin-top:20px}.login-art .eyebrow{color:#c9dfa1;margin-bottom:25px}.login-form{padding:50px;display:grid;place-items:center}.login-box{width:100%;max-width:390px}.login-box h2{font-size:28px;letter-spacing:-.5px}.login-box form{margin-top:30px}.login-box .btn{width:100%}.login-note{border-top:1px solid #e0e7dc;margin-top:30px;padding-top:20px;font-size:11px;color:#84917f;line-height:1.7}dialog{border:1px solid #dfe7da;border-radius:14px;box-shadow:0 20px 80px #16382e35;width:min(620px,94vw);max-height:90vh;padding:30px;color:#294b3b}dialog::backdrop{background:#123b325c;backdrop-filter:blur(3px)}dialog h2{font-size:23px}#toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);background:#163e34;color:white;border-radius:9px;box-shadow:0 5px 30px #183f332a;padding:14px 23px;max-width:90vw;z-index:100;opacity:0;pointer-events:none;transition:.2s}#toast.show{opacity:1;transform:translate(-50%,0)}.kiosk{min-height:100vh;background:#f5f6ed;padding:35px}.public-header{display:flex;justify-content:space-between;align-items:center;gap:20px;max-width:1200px;margin:auto}.public-header .brand{color:#184b3c;padding:0;font-size:23px}.public-main{max-width:1000px;margin:65px auto 30px;text-align:center}.public-main h1{font-size:42px;letter-spacing:-1.5px}.kiosk-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:20px;margin:42px auto}.kiosk-choice{padding:42px 25px;border:1px solid #d9e5d1;border-radius:17px;background:white;box-shadow:0 6px 20px #21432c04;color:#234d38}.kiosk-choice:hover{border-color:#729a63;background:#f9fcf2}.kiosk-choice strong{display:block;font-size:24px;margin:15px 0}.kiosk-choice .queue-symbol{margin:auto;width:58px;height:58px;font-size:25px}.receipt{max-width:380px;margin:25px auto;padding:30px;background:white;border:1px dashed #b7c5ae;border-radius:9px;box-shadow:0 7px 22px #193c2a08}.receipt .ticket-number{font-size:65px;font-weight:700;letter-spacing:-3px;color:#1f573f;margin:10px 0}.receipt img{width:145px;height:145px}.receipt p{margin-bottom:9px;font-size:13px}.customer-card{max-width:480px;margin:30px auto;padding:35px;border:1px solid #dce6d6;border-radius:18px;background:white}.customer-card .ticket-number{font-size:76px;color:#20533d;font-weight:700;letter-spacing:-3px}.ahead{background:#edf3e4;padding:18px;margin:22px 0;border-radius:10px;font-size:15px}.display-page{min-height:100vh;background:#0c322b;color:white;padding:35px}.display-page .public-header .brand{color:#e2efc9}.display-page .connection{color:#a3c887}.display-page .connection.off{color:#ffb7a5}.display-main{max-width:1400px;margin:50px auto}.display-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:23px}.display-card{background:#194b3d;border:1px solid #35634e;border-radius:16px;padding:30px;text-align:center}.display-card h2{font-size:25px;color:#c2d7b4}.display-ticket{font-size:clamp(55px,7vw,110px);font-weight:650;letter-spacing:-4px;color:#e6f0b7}.display-desk{font-size:20px;color:#bdd3bb}.display-note{text-align:center;color:#8dad9c;margin-top:40px}.code-field{word-break:break-all;background:#f2f5ee;border:1px solid #dbe5d5;padding:13px;border-radius:8px;font-size:12px;line-height:1.6}.mobile-brand{display:none}.report-summary{padding:16px 22px;font-size:11px;color:#859180;line-height:1.6}.status-line{margin:14px 0;color:#6e8173;font-size:12px}.error-text{color:#b04736;font-size:12px;margin-bottom:14px;line-height:1.5}.tight{margin:0}.report-details{max-height:420px;overflow:auto}.permission-info{margin:5px 0 20px;font-size:12px;color:#748475}.audit-data{max-width:420px;word-break:break-word;font-size:11px;color:#7c8b7e}.linklike{border:none;background:none;color:#19765b;text-decoration:underline;padding:0;font-size:inherit}.hamburger{display:none}.no-wrap{white-space:nowrap}
@media(max-width:1100px){.content{padding:25px}.topbar{padding:0 25px}.shell{grid-template-columns:205px 1fr}.metrics{gap:10px}.metric{padding:17px}.split{grid-template-columns:1fr}.operator-layout{grid-template-columns:1fr}.login-art{padding:45px}.login-art h1{font-size:44px}}
@media(max-width:750px){.shell{display:block}.sidebar{position:relative;height:auto;padding:14px}.brand{padding-bottom:14px;font-size:22px}.sidebar nav{display:flex;overflow:auto;gap:5px}.nav-caption,.sidebar-bottom{display:none}.nav-btn{width:auto;white-space:nowrap;padding:10px;font-size:12px}.sidebar .brand{padding:0 8px 12px}.topbar{height:53px;padding:0 18px}.content{padding:23px 16px}.metrics{grid-template-columns:repeat(2,1fr)}.metric .value{font-size:29px}.page-title{align-items:start}.page-title h1{font-size:26px}.form-grid{grid-template-columns:1fr}.span2{grid-column:auto}.panel-head,.panel-body{padding:18px}.login-page{display:block}.login-art{padding:30px;min-height:190px}.login-art h1{font-size:32px;margin:0}.login-art p,.login-art .eyebrow{display:none}.login-art .brand{margin-bottom:25px;padding:0}.login-form{padding:35px 25px}.checks{grid-template-columns:1fr}.kiosk{padding:20px}.public-main{margin-top:45px}.public-main h1{font-size:31px}.public-header .brand{font-size:18px}.public-header .brand-mark{width:30px;height:32px}.customer-card{padding:25px}.display-page{padding:22px}.display-grid{grid-template-columns:1fr}.display-card{padding:22px}.filters .field{min-width:140px}.queue-current{font-size:31px}.desk-number{font-size:68px}}
@media print{body{background:white!important}body>*{display:none!important}body>#app{display:block!important}.kiosk{padding:0!important;background:white!important}.kiosk>*{display:none!important}.kiosk>.public-main{display:block!important;margin:0!important}.public-main>*{display:none!important}.public-main>.receipt{display:block!important;border:0;box-shadow:none;margin:0 auto;padding:8mm;max-width:78mm}.receipt .ticket-number{font-size:48px}.receipt img{width:35mm;height:35mm}@page{margin:0;size:auto}}
@media(min-width:751px){.display-page{height:100dvh;display:flex;flex-direction:column;padding:25px;overflow:hidden}.display-page .public-header{width:100%}.display-main{width:100%;margin:23px auto 0;flex:1;display:flex;flex-direction:column;min-height:0}.display-main h1{font-size:28px;margin-bottom:14px}.display-main .eyebrow{margin-bottom:8px}.display-grid{flex:1;grid-template-columns:repeat(var(--display-cols,2),minmax(0,1fr));grid-auto-rows:minmax(0,1fr);min-height:0;gap:15px}.display-card{padding:15px;display:flex;flex-direction:column;justify-content:center}.display-card h2{font-size:clamp(16px,2.5vh,25px);margin-bottom:6px}.display-ticket{font-size:clamp(38px,9vh,100px);line-height:1.2}.display-desk{font-size:17px}.display-note{margin:14px 0;font-size:12px}}


.ticket-promotion{border-top:1px dashed #444;margin-top:16px;padding-top:12px;break-inside:avoid}.receipt img.promotion-image{width:100%;height:auto;max-width:100%;image-rendering:pixelated}.ticket-promotion p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}

@media screen{.kiosk-print-only{position:absolute;left:-10000px;top:0;width:80mm}}
@media print{.kiosk-print-only{position:static;width:auto}}
