:root { --ink:#17263c; --muted:#66758a; --navy:#172f51; --navy2:#0d4966; --line:#e2e8f0; --bg:#f4f6fa; --panel:#fff; --mint:#e8f5f3; --green:#127a65; --warn:#925e08; --red:#ae3440; --soft:#f8fafc; }
* {box-sizing:border-box} html,body{margin:0;min-height:100%;font-family:system-ui,-apple-system,"Malgun Gothic","맑은 고딕",sans-serif;color:var(--ink);background:var(--bg)} button,input,select,textarea{font:inherit} button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}
.topbar{background:var(--navy);color:white;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:15px max(24px,calc((100vw - 1200px)/2));box-shadow:0 3px 16px #1a315029;flex-wrap:wrap}
.brand{display:flex;gap:13px;align-items:center}.brand-mark{background:#ffffff25;padding:10px 14px;font-size:26px;border-radius:13px}.brand b{display:block;font-size:17px}.brand small{display:block;font-size:12px;color:#c1d4e5;margin-top:3px}
nav{display:flex;gap:6px;flex-wrap:wrap}nav button{border:1px solid transparent;border-radius:9px;background:transparent;color:#e9f4ff;padding:11px 16px;font-size:13px;font-weight:700}nav button.active{background:#fff;color:#193856}
.container{max-width:1200px;margin:28px auto;padding:0 18px;min-height:68vh}.heading{margin-bottom:20px;display:flex;justify-content:space-between;align-items:flex-end;gap:15px;flex-wrap:wrap}.heading h1{font-size:24px;margin:0 0 6px;letter-spacing:-.5px}.heading p{color:var(--muted);margin:0;font-size:14px;line-height:1.6}
.layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.85fr);gap:19px;align-items:start}.card{background:white;border:1px solid var(--line);border-radius:15px;padding:22px;box-shadow:0 2px 10px #12274108;margin-bottom:18px}.card h2{font-size:17px;margin:0 0 15px}.label{display:block;font-size:13px;font-weight:800;color:#354965;margin-bottom:9px}.hint{font-size:12px;color:var(--muted);line-height:1.65}.muted{color:var(--muted)}.subheading{display:flex;gap:10px;justify-content:space-between;align-items:center;margin-bottom:14px}.subheading strong{font-size:17px}.stack{display:grid;gap:14px}.segment{display:flex;gap:8px;flex-wrap:wrap}.segment button,.line-pill{border:1px solid #cfd9e5;background:white;border-radius:10px;padding:13px 20px;font-weight:750;color:#435a72}.segment button.selected,.line-pill.selected{background:#e8f2fa;border:1px solid #4388b1;color:#0d5a8b}.line-grid{display:flex;gap:10px;flex-wrap:wrap}.line-pill{display:flex;align-items:center;gap:7px;min-width:110px;justify-content:center}.line-pill .tick{font-weight:900;color:#2073a1}
.line-card{border:1px solid #d7e2eb;border-radius:13px;margin-bottom:13px;overflow:hidden}.line-head{background:#f1f5f9;padding:13px 16px;display:flex;justify-content:space-between;gap:12px;align-items:center;font-weight:800}.line-body{padding:5px 16px}.item-card{padding:13px 0;border-bottom:1px solid #eef1f5}.item-card:last-child{border-bottom:0}.item-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.checkline{display:inline-flex;gap:9px;align-items:center;font-weight:750;cursor:pointer}.checkline input{width:19px;height:19px;accent-color:#1c6b98}.small-tag{display:inline-block;padding:3px 8px;background:#f0f3f7;border-radius:7px;font-size:11px;color:#5a6b7a}.item-config{display:flex;gap:13px;align-items:end;margin:12px 0 3px 27px;flex-wrap:wrap}.field{flex:1;min-width:110px}.field>label{display:block;font-size:12px;font-weight:700;color:#5b6c7d;margin-bottom:5px}.field input,.field select, .control,textarea,input[type="date"]{border:1px solid #ccd6e1;background:white;border-radius:9px;padding:11px 12px;width:100%;outline:none;color:var(--ink)}input:focus,select:focus,textarea:focus{border-color:#2578a3;box-shadow:0 0 0 2px #78adcc40}.unit-toggle{display:flex;gap:5px}.unit-toggle button{flex:1;border:1px solid #ccd7e2;padding:10px 14px;background:white;color:#3f536b;border-radius:8px;font-weight:800;white-space:nowrap}.unit-toggle button.selected{background:#195b89;color:#fff;border-color:#195b89}
.primary,.secondary,.outline,.danger{border:0;border-radius:9px;padding:12px 18px;font-weight:750}.primary{background:#176c98;color:white}.secondary{background:#e7eef5;color:#1d4a70}.outline{background:white;color:#255775;border:1px solid #b8c9d8}.danger{background:#fff0ef;color:#a02e3c;border:1px solid #f0bec1}.block{width:100%}.btn-small{padding:8px 11px;font-size:12px}.buttons{display:flex;gap:8px;flex-wrap:wrap}.qty{max-width:120px}textarea{min-height:106px;resize:vertical;line-height:1.6}.summary-table,.admin-table{border-collapse:collapse;width:100%;font-size:13px}.summary-table td,.summary-table th,.admin-table td,.admin-table th{border-bottom:1px solid #e7ebf0;padding:10px 8px;text-align:left;vertical-align:middle}.summary-table th,.admin-table th{background:#f4f7fa;color:#445970;font-weight:800;white-space:nowrap}.summary-table td:last-child,.summary-table th:last-child{text-align:right}.admin-table td input,.admin-table td select{min-width:95px;padding:8px}.table-wrap{overflow:auto;width:100%}
.note-box{background:#fff9ea;border:1px solid #f3e4af;border-radius:10px;padding:12px 14px;font-size:13px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}.empty{padding:33px 18px;text-align:center;color:#7c8c9e;border:1px dashed #cbd5e0;background:#f8fafc;border-radius:11px}.notice{padding:13px 14px;border-radius:10px;background:#ebf5fd;color:#25577a;font-size:13px;line-height:1.7}.success{background:#e4f5ed;color:#166b4e;padding:12px;border-radius:8px;font-size:13px}.pill{display:inline-flex;align-items:center;border-radius:99px;padding:5px 9px;font-size:11px;font-weight:800;background:#eaf1fa;color:#225883}.pill.wait{background:#fff1eb;color:#a15030}.pill.prep{background:#fff5d9;color:#96620c}.pill.partial{background:#e4f0fb;color:#215b93}.pill.done{background:#def4e9;color:#0e7753}.kpi-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}.kpi{background:#fff;border:1px solid var(--line);border-radius:12px;padding:17px}.kpi span{font-size:12px;color:var(--muted)}.kpi b{font-size:24px;display:block;margin-top:8px}.order-card{border:1px solid var(--line);border-radius:14px;background:white;margin-bottom:16px;overflow:hidden}.order-top{background:#f7f9fc;padding:14px 17px;display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}.order-top strong{font-size:14px}.order-top small{color:var(--muted)}.order-body{padding:15px}.warehouse-item{display:grid;grid-template-columns:1fr auto;gap:12px;padding:13px 0;border-bottom:1px solid #e9edf2;align-items:center}.warehouse-item:last-child{border-bottom:0}.warehouse-item h4{margin:0 0 7px;font-size:14px}.warehouse-item p{margin:0;color:#60748a;font-size:12px;line-height:1.6}.warehouse-item .buttons{justify-content:flex-end}.meta{font-size:12px;color:#677a8e}.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:end}.filters .field{max-width:215px}
#modal-root:not(:empty){position:fixed;inset:0;z-index:100;background:#091a2b9a;display:flex;align-items:center;justify-content:center;padding:15px}.modal{width:min(100%,500px);background:#fff;border-radius:17px;padding:25px;box-shadow:0 20px 60px #0002;max-height:94vh;overflow:auto}.modal h2{margin:0 0 18px;font-size:19px}.modal .buttons{justify-content:flex-end;margin-top:20px}#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#1a394f;color:white;border-radius:10px;padding:12px 20px;display:none;z-index:200;max-width:90vw;box-shadow:0 8px 30px #0002}#toast.show{display:block}.footer{text-align:center;color:#8794a5;font-size:11px;padding:18px 10px 24px}.admin-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:15px}.admin-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.admin-actions .card{margin:0}.check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}.check-grid label{border:1px solid var(--line);border-radius:9px;padding:11px;font-size:13px}.check-grid input{accent-color:#176c98}.section-space{margin-top:20px}
@media(max-width:850px){.layout,.admin-actions{grid-template-columns:1fr}.topbar{padding:13px 15px}.container{margin:20px auto}.card{padding:17px}.kpi-row{grid-template-columns:repeat(3,1fr)}}
@media(max-width:550px){nav{width:100%}nav button{flex:1;white-space:nowrap;padding:10px 5px;font-size:12px}.heading h1{font-size:21px}.kpi{padding:11px}.kpi b{font-size:20px}.card{padding:14px}.warehouse-item{grid-template-columns:1fr}.warehouse-item .buttons{justify-content:flex-start}.item-config{margin-left:0}.summary-table,.admin-table{font-size:12px}.summary-table td,.summary-table th{padding:9px 5px}.line-pill{min-width:95px;padding:12px}.brand-mark{font-size:21px}.order-top{align-items:start}}

.staff-card{border-color:#96b6ca;background:#f4faff}.staff-card .field{max-width:340px}.staff-card input{font-size:16px}.busy-message{color:#ae3440!important;font-weight:700}

/* New-order sound settings and unobtrusive notification strip */
#bell-indicator{font-size:12px;padding-left:3px;opacity:.65}
#bell-indicator.bell-on{color:#1ec1a0;opacity:1}
.alarm-card{max-width:820px}
.alarm-card .alarm-switch button{min-width:135px}
.alarm-card input[type=range]{width:min(100%,450px);padding:0;accent-color:#176c98;margin-top:9px}
.alarm-card .buttons button{font-size:13px}
.alarm-card .hint{margin-top:13px}
.alert-strip{position:sticky;top:0;z-index:30;background:#fff8dc;border-bottom:1px solid #e5ca6c;color:#52421e;padding:10px max(18px,calc((100vw - 1200px)/2));display:flex;align-items:center;gap:12px;flex-wrap:wrap;box-shadow:0 4px 12px #00000012}
.alert-strip span{font-size:13px;font-weight:700;flex:1}
.alert-strip button{background:white}
@media(max-width:550px){.topbar nav button{min-width:0}.alarm-card .alarm-switch button{min-width:0;flex:1}.alert-strip .btn-small{padding:7px}}

@media(max-width:550px){nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}nav button{text-align:center}}

/* In-app notifications are supported over LAN HTTP, unlike OS native push. */
.new-order-popup{position:fixed;top:18px;right:18px;width:min(440px,calc(100vw - 24px));z-index:150;background:#fff;border:2px solid #d09c25;box-shadow:0 15px 52px #101e3f4d;border-radius:16px;overflow:hidden;animation:pop-in .22s ease-out}
.popup-head{display:flex;align-items:center;justify-content:space-between;background:#f5b945;color:#483211;padding:11px 16px;font-weight:900;font-size:16px}
.popup-close{background:#ffffff7d;border:0;font-size:24px;border-radius:8px;line-height:1;padding:4px 10px;color:#5c4117}
.popup-body{padding:16px 18px}.popup-heading{display:flex;justify-content:space-between;gap:10px;align-items:baseline;flex-wrap:wrap}.popup-heading b{font-size:19px}.popup-heading span{font-size:11px;color:#5b7084}.popup-requester{font-size:13px;margin:9px 0;color:#50637a}
.popup-items{list-style:none;padding:0;margin:13px 0;max-height:180px;overflow:auto}.popup-items li{border-bottom:1px solid #e9edf1;display:flex;gap:7px;align-items:center;padding:9px 0;font-size:13px}.popup-items li strong{margin-left:auto;white-space:nowrap;color:#134e76}.popup-note{padding:10px 12px;border:1px solid #efda9b;background:#fff9e7;border-radius:9px;font-size:12px}.popup-note p{margin:4px 0 0;white-space:pre-wrap;overflow-wrap:anywhere;max-height:100px;overflow:auto}.popup-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;padding-top:13px}.popup-actions span{color:#65748a;font-size:12px}.popup-actions button{padding:11px 14px}
.alarm-activate{position:fixed;bottom:15px;left:15px;z-index:85;max-width:min(95vw,540px);background:#183d5a;color:#fff;border-radius:12px;padding:12px;display:flex;flex-wrap:wrap;gap:10px;align-items:center;box-shadow:0 6px 28px #142d4c55;font-size:13px}.alarm-activate span{flex:1;min-width:170px}.alarm-activate button{font-size:12px;padding:9px}
@keyframes pop-in{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:550px){.new-order-popup{top:8px;right:8px;max-height:calc(100dvh - 16px)}.popup-body{padding:12px}.popup-items{max-height:100px}.alarm-activate{bottom:8px;left:8px}}

/* Local sound selection and secure push enrollment */
.alarm-card input[type=file]{width:100%;max-width:550px;background:white;border:1px solid #d4dde7;border-radius:9px;padding:12px;font-size:13px}
.alarm-card .notice{margin-top:16px;line-height:1.65}
