:root{--green:#b92332;--lime:#fde8e9;--ink:#24272d;--muted:#777b82;--line:#e8e6e2;--brand:#ed1c24}
body{background:#f5f4f0;font-family:'Pretendard','Apple SD Gothic Neo','Malgun Gothic',sans-serif;-webkit-font-smoothing:antialiased}header{padding:20px max(28px,calc((100vw - 1180px)/2 + 28px));gap:24px;background:#fff;border-bottom:1px solid #ebe9e5}.brand{display:flex;align-items:center;gap:13px;letter-spacing:-.6px;white-space:nowrap}.brand img{width:49px;height:45px;object-fit:contain}.brand-name{font-size:22px;font-weight:800}.brand small{font-size:10px;letter-spacing:2.5px;color:#93949a;font-weight:500;margin-top:4px}.header-service{display:flex;align-items:center;gap:10px;font-size:13px;color:#7c7d83}.header-service:before{content:'';width:7px;height:7px;border-radius:50%;background:#d32a36}.demo{background:#f0efeb;color:#85817a;padding:8px max(28px,calc((100vw - 1180px)/2 + 28px));font-size:11px}.wrap{margin:30px auto 0}.top{margin:0 0 22px}.top .badge{background:none;border-radius:0;padding:0;color:#b72935;font-size:11px;font-weight:800;letter-spacing:2px}.top h1{font-size:34px;letter-spacing:-1.8px;margin:12px 0}.top p{font-size:14px;margin:0}.top>button{font-size:12px;border-radius:30px;color:#666b73;padding:12px 18px;background:transparent}.badge{background:#f8eeee;color:#a83b45;font-weight:600}.layout{grid-template-columns:minmax(0,1fr) 310px;gap:22px;margin-top:22px;align-items:stretch}.card{border:1px solid #e9e7e3;border-radius:22px;padding:32px;box-shadow:0 8px 30px #34302a04}.layout>.card{padding:32px 36px}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:30px;font-size:12px;font-weight:600}.steps>*{padding-bottom:12px;border-bottom:3px solid #f0efed;color:#aaa9a6}.steps>b{color:#b92332;border-color:#c82b3a}h2{font-size:24px;letter-spacing:-1px}.card>p{font-size:14px}button{transition:background .15s,border-color .15s,box-shadow .15s;min-height:48px;border-radius:12px}button:hover{background:#fcf7f7;border-color:#b92332}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #eab6bd;outline-offset:3px}.primary{background:#b92332;border-color:#b92332;color:white;box-shadow:0 4px 10px #b9233214}.primary:hover{background:#a31d2b;color:white}.input{background:#faf9f7;border:1px solid #deddd8;border-radius:12px;letter-spacing:8px;text-align:center;font-weight:700;padding:18px;margin:12px 0 16px;color:#282a30}.input::placeholder{font-weight:400;letter-spacing:0;color:#a6a5a1;font-size:18px}.pad{gap:9px;max-width:510px;margin:0 auto 18px}.pad button{font-size:24px;font-weight:500;padding:13px;border-color:#e9e7e3;background:white;border-radius:11px;min-height:56px}.pad button:hover{background:#fbefef}.pad button:nth-child(10),.pad button:nth-child(12){font-size:17px;color:#83848a;background:#f8f7f4}.full{min-height:53px;font-size:16px}.info{background:#f7f6f2;border:1px solid #eceae5;padding:20px 22px;color:#44484f;border-radius:14px}.info strong{letter-spacing:-1px}.info small{color:#797d83;font-size:12px}.intro{background:#292d34;color:#fff;border:0;position:relative;overflow:hidden;padding:32px!important;display:flex;flex-direction:column;box-shadow:none}.intro:before{content:'';position:absolute;right:-100px;top:20px;width:250px;height:250px;border:1px solid #ffffff08;border-radius:50%;pointer-events:none}.intro .side-eyebrow{font-size:10px;letter-spacing:3px;color:#f3b7ba;font-weight:600}.intro h2{font-size:28px;font-weight:600;line-height:1.6;letter-spacing:-1.4px;margin:18px 0 0}.intro p{font-size:13px;color:#bdc0c6;line-height:1.9}.meal-art{display:block;width:205px;max-width:100%;margin:24px auto 20px}.side-bottom{margin-top:auto;border-top:1px solid #ffffff1a;padding-top:20px}.side-bottom b{font-size:13px;font-weight:600}.side-bottom .note{font-size:12px;color:#b3b6bd}.side-bottom .note span{display:inline-block;color:#ea9ea6;font-size:10px;margin-right:9px}.choice button.active{background:#fbeded;border-color:#cc6771}.date{border-radius:14px;border:1px solid #e5e3df;padding:20px 8px;background:#fcfbf9}.date strong{font-size:30px}.date.selected{background:#b92332;border-color:#b92332;color:white}.date.selected:hover{background:#a31d2b}.date small{font-size:12px}.date.sold-out{background:#f1f0ed;color:#a2a29c}.date.sold-out strong{color:#b3b3ad}.success{padding:45px 12px}.success h2{font-size:27px}.check{width:78px;height:78px;background:#fbebed;color:#bc2636;font-weight:400;font-size:34px;box-shadow:0 0 0 10px #fff8f8}.success .info{margin:24px auto;max-width:420px}.meal-notice{border:1px solid #eadfc9;border-left:3px solid #bd9958;background:#fcfaf5;border-radius:12px;padding:19px 22px}.meal-notice h3{font-size:16px;color:#6c592f;letter-spacing:-.5px}.meal-notice p{font-size:14px;line-height:1.85;color:#646057}.meal-notice .meal-notice-charge{color:#9b4d36;font-weight:700}.meal-notice .meal-notice-thanks{font-size:12px}.availability{padding:23px 28px;background:#fff;margin-top:0}.availability h2{font-size:19px}.availability .badge{font-size:11px;border:1px solid #eee3e4;padding:7px 11px;background:#fffafa}.availability-table{min-width:500px;margin-top:12px;border-collapse:separate;border-spacing:0;table-layout:fixed}.availability-table caption{font-size:11px;color:#8a8b8a;padding:0 0 12px}.availability-table th,.availability-table td{padding:12px 8px;border-bottom:1px solid #f0eeeb}.availability-table thead th{font-size:13px;color:#5f646a;background:#f8f7f4;border-bottom:0}.availability-table thead th:first-child{border-radius:8px 0 0 8px;width:105px}.availability-table thead th:last-child{border-radius:0 8px 8px 0}.availability-table tbody th{font-size:14px}.availability-table small{font-size:10px;color:#9b9b96;margin-top:4px}.availability-number{font-size:26px;letter-spacing:-1px;color:#343a40}.availability-number small{letter-spacing:0}.availability-number.low{color:#bb6e22}.availability-number.empty{font-size:15px;color:#b4b2ad;background:#f2f1ee;border-radius:20px;display:inline-block;padding:7px 12px;letter-spacing:0}.availability>.note{font-size:11px;color:#9a9892}.stat{box-shadow:none;border-color:#e7e5e0}.stat strong{color:#b92332}.admin-grid h2{font-size:21px}footer{border-top:1px solid #e5e3de;margin-top:28px;padding:22px 0 26px;text-align:center;font-size:11px;color:#9a9892}.danger{color:#b13c49;border-color:#edd5d8}dialog{box-shadow:0 24px 90px #11182724}dialog::backdrop{background:#20242d80;backdrop-filter:blur(4px)}
@media(max-width:850px){.layout{grid-template-columns:minmax(0,1fr)}.intro{display:none}.layout>.card{padding:28px}.top h1{font-size:29px}.wrap{margin-top:24px}.availability{padding:22px}.brand-name{font-size:20px}.header-service{font-size:12px}}
@media(max-width:520px){header{padding:17px 20px;gap:10px}.brand{gap:8px}.brand img{width:38px;height:35px}.brand-name{font-size:18px}.brand small{font-size:8px;letter-spacing:2px}.header-service{font-size:10px;gap:6px}.demo{padding:7px 20px;font-size:10px}.wrap{padding:0 14px}.top{gap:10px}.top h1{font-size:25px}.top p{font-size:12px}.top>button{padding:10px 12px;font-size:11px;white-space:nowrap}.layout>.card{padding:24px 20px}.steps{gap:7px;font-size:10px;margin-bottom:25px}.availability{padding:20px 15px}.availability h2{font-size:17px}.availability .badge{font-size:10px}.pad button{min-height:54px}.dates{gap:5px}.date{padding:18px 3px}.date strong{font-size:24px}.date small{font-size:10px}.meal-notice{padding:17px}.row>button{padding:13px 16px}h2{font-size:22px}}
@media(prefers-reduced-motion:reduce){button{transition:none}}

.factory-management{margin-top:24px;border-top:4px solid #235c8a}.factory-management a{display:inline-block;color:#235c8a;padding:14px 18px;background:#edf4fa;border-radius:10px;font-weight:700;text-decoration:none}body[data-factory="donam"] .header-service{background:#e8f1fb;color:#245a87;padding:10px 18px;border-radius:24px}body[data-factory="chaesin"] .header-service{background:#edf3e8;color:#145d4c;padding:10px 18px;border-radius:24px}

/* Touch-first 10-inch kiosks: keep the keypad and main action together. */
button,a,input,select{touch-action:manipulation}
@media (min-width:600px) and (max-width:1400px){
 header{padding:12px 24px;min-height:64px}.brand img{width:40px;height:37px}.brand-name{font-size:20px}
 .demo{padding:6px 24px}.wrap{max-width:1180px;padding:0 24px;margin:16px auto 0}
 .top{margin-bottom:16px;gap:16px}.top h1{font-size:28px;margin:6px 0;letter-spacing:-1px}.top p{font-size:14px}.top>button{min-height:48px;font-size:14px;white-space:nowrap}
 .layout{grid-template-columns:minmax(0,1fr);margin-top:0}.intro{display:none}
 .card,.layout>.card{padding:22px 24px;border-radius:18px;min-width:0}
 .steps{margin-bottom:18px;font-size:13px;gap:10px}.steps>*{padding-bottom:9px}
 h2{font-size:23px}.card>p{margin:8px 0;font-size:15px}
 .input{min-height:56px;padding:12px;margin:10px 0 12px;font-size:27px}
 .pad{max-width:none;gap:10px;margin-bottom:12px}.pad button{min-height:56px;padding:9px;font-size:25px}
 .full{min-height:56px;font-size:18px}.row>button{min-height:52px;font-size:16px}
 .dates{gap:12px;margin:20px 0}.date{min-height:142px;padding:16px 8px}.date strong{font-size:32px;margin:12px 0}.date small{font-size:14px}
 .info{margin:16px 0;padding:16px 20px}.info small{font-size:14px;line-height:1.6}
 .meal-notice p{font-size:16px;line-height:1.7}.meal-notice{margin:18px 0;padding:18px 20px}
 .availability{margin:0}.availability-table{min-width:0;width:100%}.availability-table thead th:first-child{width:90px}.availability-table th,.availability-table td{padding:14px 5px}.availability-number{font-size:25px}.availability-number.empty{font-size:13px;padding:6px}.availability-table small{font-size:11px}
 select{min-height:48px;font-size:16px}th,td{padding:14px 10px}input[type=checkbox]{width:26px;height:26px}.admin-grid{grid-template-columns:1fr}.stats{gap:12px}.stat strong{font-size:28px}
 footer{margin-top:16px;padding:14px 0;font-size:11px}dialog{max-height:90dvh;overflow:auto}
 #app[data-mode="kiosk"][data-stage="1"]{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
 #app[data-mode="kiosk"][data-stage="1"]>.top{grid-row:1;margin-bottom:0}
 #app[data-mode="kiosk"][data-stage="1"]>.layout{grid-row:2}
 #app[data-mode="kiosk"][data-stage="1"]>.availability{grid-row:3}
 #app[data-mode="kiosk"][data-stage="1"]>footer{grid-row:4;margin-top:0}
}
@media (min-width:900px) and (max-width:1400px) and (orientation:landscape){
 #app[data-mode="kiosk"][data-stage="1"]{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:20px;align-items:start}
 #app[data-mode="kiosk"][data-stage="1"]>.top{grid-column:1/-1}
 #app[data-mode="kiosk"][data-stage="1"]>.layout{grid-column:1;grid-row:2}
 #app[data-mode="kiosk"][data-stage="1"]>.availability{grid-column:2;grid-row:2}
 #app[data-mode="kiosk"][data-stage="1"]>footer{grid-column:1/-1;grid-row:3}
 .availability .row{align-items:flex-start;gap:8px}.availability h2{font-size:18px}.availability .badge{font-size:12px}
 #app[data-mode="kiosk"]:not([data-stage="1"]){max-width:1000px}
}
@media (pointer:coarse){button:disabled{opacity:.55} .scroll{overscroll-behavior-x:contain}}
@media (min-width:900px) and (max-width:1400px) and (max-height:850px) and (orientation:landscape){
 header{min-height:52px;padding:8px 24px}.brand img{width:34px;height:32px}.brand-name{font-size:18px}.brand small{font-size:8px}.demo{padding:4px 24px}
 .wrap{margin-top:10px}.top h1{font-size:25px;margin:4px 0}.top p{font-size:13px}
 #app[data-mode="kiosk"][data-stage="1"]{gap:12px 20px}
 #app[data-mode="kiosk"] .layout>.card{padding:16px 20px}
 .steps{margin-bottom:12px;font-size:12px}.steps>*{padding-bottom:7px}
 .input{height:50px;min-height:50px;padding:8px;margin:8px 0 10px}
 .pad{gap:8px;margin-bottom:8px}.pad button{min-height:48px;padding:6px;font-size:24px}.full{min-height:52px}
 #app[data-mode="kiosk"] h2{font-size:22px}footer{padding:10px 0}
}

.header-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}
#fullscreen-toggle{min-height:48px;padding:10px 16px;font-size:14px;white-space:nowrap;border-color:#ddd}
html:fullscreen{background:#f5f4f0;overflow:auto}
@media(max-width:600px){.header-actions{gap:6px}.header-actions .header-service{display:none}#fullscreen-toggle{padding:10px 12px;font-size:12px}}

/* Date selection: the primary action stays in the viewport. */
.save-bar{position:fixed;inset:auto 0 0;z-index:20;background:#fff;border-top:1px solid #e4dfd9;box-shadow:0 -5px 24px #24272d0d;padding:12px 24px calc(12px + env(safe-area-inset-bottom,0px))}
.save-bar-inner{max-width:1100px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px}
.save-bar-inner>strong{font-size:18px}.save-bar-inner>strong b{color:#b92332;font-size:24px;margin-left:8px}
.save-bar button{min-height:56px;font-size:18px}.save-bar .primary{min-width:240px}
#app[data-mode="kiosk"][data-stage="3"]{padding-bottom:110px}
#app[data-mode="kiosk"][data-stage="3"] .intro{display:none}
#app[data-mode="kiosk"][data-stage="3"] .layout{grid-template-columns:minmax(0,1fr)}
#app[data-mode="kiosk"][data-stage="3"]>.top h1{font-size:24px;margin:4px 0}
#app[data-mode="kiosk"][data-stage="3"]>.top p{display:none}
#app[data-mode="kiosk"][data-stage="3"] .info{margin:10px 0;padding:10px 16px}
#app[data-mode="kiosk"][data-stage="3"] .dates{margin:14px 0}
#app[data-mode="kiosk"][data-stage="3"] .date{min-height:120px;padding:10px 8px}
#app[data-mode="kiosk"][data-stage="3"] .date strong{margin:8px 0}
.selection-help{font-size:14px!important;line-height:1.5;margin:12px 0 4px!important}
.my-requests{margin-top:12px;border:1px solid #e4dfd9;border-radius:12px;background:#faf9f7}
.my-requests>summary,.selection-rules>summary{cursor:pointer;min-height:48px;padding:13px 16px;font-size:15px;font-weight:700;touch-action:manipulation}
.my-requests>summary:focus-visible,.selection-rules>summary:focus-visible{outline:3px solid #eab6bd;outline-offset:2px}
.my-requests[open]>summary{border-bottom:1px solid #e4dfd9;color:#b92332}
.my-requests>.card{margin-top:0!important;border:0;box-shadow:none;padding:16px}
.selection-rules>summary{padding-left:0;font-size:13px;color:#777b82}
#toast{z-index:30;bottom:110px}
@media(max-width:600px){.save-bar{padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px))}.save-bar-inner{gap:8px}.save-bar-inner>strong{font-size:13px}.save-bar-inner>strong b{font-size:18px;margin-left:2px}.save-bar .row{gap:6px}.save-bar button{font-size:14px;padding:12px;min-height:52px}.save-bar .primary{min-width:0}}
