/* NECall 키오스크 UI 시안 — 1080×1920 고정 캔버스, 뷰포트에 맞춰 축소 */
:root{
  --blue:#1b4f9e; --blue-2:#2a63c4; --blue-3:#e8eef8;
  --red:#e4342e; --red-2:#c92922;
  --dark:#2b2b2b; --dark-2:#3a3a3a;
  --bg:#f3f3f3; --panel:#ffffff; --line:#d8d8d8; --line-2:#eaeaea;
  --text:#222; --muted:#6d6d6d; --teal:#17a2b3; --orange:#f39a1e;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:#0f0f0f;font-family:Pretendard,"Noto Sans KR","Apple SD Gothic Neo",system-ui,sans-serif;color:var(--text);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;padding:0;margin:0}
button:focus-visible{outline:4px solid var(--orange);outline-offset:2px}
input,select{font:inherit}

#viewport{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
#stage{width:1080px;height:1920px;background:var(--bg);position:relative;overflow:hidden;transform-origin:center center;box-shadow:0 0 0 2px #000,0 30px 80px rgba(0,0,0,.6);flex:none}


/* ---------- 공통 ---------- */
.screen{position:absolute;inset:0;display:flex;flex-direction:column}
.brand{font-weight:900;font-size:64px;letter-spacing:-1px;color:var(--blue);line-height:1}
.brand small{font-weight:600;font-size:22px;color:var(--muted);letter-spacing:4px;margin-left:14px;vertical-align:middle}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;border-radius:10px;font-weight:700}
.btn-red{background:var(--red);color:#fff}
.btn-blue{background:var(--blue);color:#fff}
.btn-dark{background:var(--dark);color:#fff}
.btn-light{background:#fff;color:var(--text);border:2px solid var(--line)}
.btn-ghost{background:#eee;color:var(--text)}
.ico{width:1em;height:1em;flex:none;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.multi{font-size:20px;color:var(--muted);line-height:1.5}
.sep-dot{border:0;border-top:3px dotted #bbb;margin:26px 0}

/* ---------- 대기(영업시작) ---------- */
.idle{align-items:center;background:#f5f5f5}
.idle .brandline-unused{margin-top:28px;font-size:44px;font-weight:900;color:var(--blue);letter-spacing:6px}
.idle .datepill{margin-top:60px;background:var(--blue);color:#fff;border-radius:40px;padding:14px 60px;font-size:32px;font-weight:600;display:flex;gap:28px;align-items:baseline}
.idle .datepill b{font-size:40px;font-weight:800}
.idle .grid{margin-top:120px;display:grid;grid-template-columns:200px 200px 200px 280px;grid-template-rows:200px 200px 100px;gap:16px}
.idle .tile{background:#fff;border:2px solid var(--line);border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;font-size:26px;font-weight:600;color:#333}
.idle .tile .ico{width:66px;height:66px;stroke-width:1.6;color:#555}
.idle .open{grid-column:4;grid-row:1/4;background:var(--blue);color:#fff;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:30px;font-size:46px;font-weight:900}
.idle .open small{font-size:26px;font-weight:600;opacity:.9;letter-spacing:4px}
.idle .open .ico{width:120px;height:120px;stroke-width:1.5}
.idle .wide{grid-row:3;height:100px;flex-direction:row;font-size:28px;font-weight:700;gap:18px;border:0}
.idle .wide .ico{width:48px;height:48px;color:#fff}
.idle .admin{grid-column:1/3;background:var(--dark);color:#fff}
.idle .exit{grid-column:3;background:var(--red);color:#fff;font-size:24px;padding:0 10px}
.idle .foot{margin-top:auto;margin-bottom:60px;color:#999;font-size:22px}

/* ---------- 주문 ---------- */
.order .hdr{height:170px;padding:48px 60px 0;display:flex;align-items:flex-start;justify-content:space-between}
.lang{display:flex;align-items:center;gap:12px;font-size:26px;color:#444;height:60px;padding:0 10px;border-radius:8px}
.lang .flag{width:34px;height:34px;border-radius:50%;background:conic-gradient(#cd2e3a 0 50%,#0047a0 50%);display:inline-block;border:2px solid #fff;box-shadow:0 0 0 1px #ccc}
.lang .ico{width:22px;height:22px}
.catbar{height:130px;margin:0 60px;display:flex;align-items:stretch;gap:0}
.catbar .tab{flex:1;background:var(--blue);color:#fff;font-size:34px;font-weight:700;display:flex;align-items:center;justify-content:center;border-right:2px solid #0f3a7c;position:relative}
.catbar .tab:last-child{border-right:0}
.catbar .tab.on{background:#fff;color:#1b2b4a;border-left:10px solid var(--blue);border-right:0;flex:1.15}
.catbar .tab.on:before{content:"";position:absolute;top:8px;left:50%;transform:translateX(-50%);border:10px solid transparent;border-top-color:var(--blue)}
.catbar .tab.empty{background:#2f66c6;opacity:.85}
.products{flex:1;margin:40px 60px 0;display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:380px;gap:30px;align-content:start}
.card{background:#fff;border:2px solid var(--line-2);border-radius:12px;display:flex;flex-direction:column;overflow:hidden;text-align:left}
.card:active{transform:scale(.98)}
.card .thumb{height:230px;background:#f4f4f4;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line-2);overflow:hidden}
.card .thumb img{width:100%;height:100%;object-fit:cover;display:block}
.card .thumb .noimg{width:150px;height:110px;border:3px solid #ccc;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#aaa;font-weight:800;font-size:20px;letter-spacing:1px;position:relative;background:#fff}
.card .thumb .noimg:before{content:"";position:absolute;top:-28px;width:30px;height:30px;border:3px solid #ccc;border-radius:50%;background:#f8f8f8}
.card .name{padding:22px 24px 0;font-size:30px;font-weight:700;color:#222}
.card .price{padding:8px 24px 0;font-size:30px;font-weight:800;color:var(--blue)}
.card .price:before{content:"₩ ";font-weight:600;color:#666}
.card.soldout .thumb{filter:grayscale(1);opacity:.5}
.card.soldout .name:after{content:" · 품절";color:var(--red);font-size:22px}
.pager{height:110px;margin:0 60px;display:flex;align-items:center;justify-content:space-between}
.pager .arrow{width:120px;height:60px;background:var(--blue);color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center}
.pager .arrow .ico{width:44px;height:44px;stroke-width:2.5}
.pager .arrow[disabled]{opacity:.35}
.pager .dots{display:flex;gap:14px}
.pager .dots i{width:18px;height:18px;border-radius:50%;background:#c8c8c8}
.pager .dots i.on{background:var(--blue-2)}
.cartwrap{background:#e3e3e3;border-top:2px solid #cfcfcf;position:relative}
.cartwrap .tag{position:absolute;left:60px;top:8px;background:#111;color:#fff;font-size:22px;font-weight:600;padding:8px 18px;border-radius:4px}
.cart{height:300px;padding:60px 60px 0;display:flex;gap:20px}
.cart .items{flex:1;display:flex;gap:18px;overflow:hidden}
.cart .item{width:190px;height:230px;background:#fff;border:2px solid var(--line);border-radius:10px;position:relative;display:flex;flex-direction:column;align-items:center;padding-top:16px;flex:none}
.cart .item .x{position:absolute;right:-14px;top:-14px;width:40px;height:40px;border-radius:50%;background:var(--red);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(0,0,0,.3)}
.cart .item .x .ico{width:20px;height:20px;stroke-width:3}
.cart .item .mini{width:120px;height:90px;border:2px solid #e0e0e0;border-radius:8px;overflow:hidden;background:#f4f4f4}
.cart .item .mini img{width:100%;height:100%;object-fit:cover;display:block}
.cart .item .nm{margin-top:14px;font-size:20px;font-weight:600;max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cart .item .qty{margin-top:auto;margin-bottom:14px;display:flex;align-items:center;gap:14px;font-size:26px;font-weight:700}
.cart .item .qty button{width:40px;height:40px;border-radius:50%;background:#2a63c4;color:#fff;display:flex;align-items:center;justify-content:center}
.cart .item .qty button.minus{background:#9a9a9a}
.cart .item .qty .ico{width:22px;height:22px;stroke-width:3}
.cart .side{width:170px;display:flex;flex-direction:column;align-items:flex-end;gap:16px}
.cart .side .pg{display:flex;gap:8px}
.cart .side .pg button{width:60px;height:60px;background:#f4f4f4;border:2px solid #ddd;border-radius:6px;color:#bbb;display:flex;align-items:center;justify-content:center}
.cart .side .trash{width:120px;height:110px;background:var(--dark);color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center}
.cart .side .trash .ico{width:50px;height:50px;stroke-width:1.8}
.cart .empty{align-self:center;color:#8a8a8a;font-size:24px;padding-left:10px}
.sumbar{height:150px;display:flex;align-items:stretch;background:#e3e3e3}
.sumbar .nums{flex:1;display:flex;align-items:center;gap:60px;padding:0 60px;font-size:30px;font-weight:700}
.sumbar .nums .col{display:flex;flex-direction:column;gap:8px}
.sumbar .nums .k{color:#333}
.sumbar .nums .v{color:var(--red);font-weight:800}
.sumbar .nums .v.blue{color:var(--blue-2)}
.sumbar .nums .total{font-size:34px;display:flex;align-items:center;gap:24px}
.sumbar .nums .total .v{font-size:44px}
.sumbar .pay{width:400px;background:var(--red);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-size:42px;font-weight:900}
.sumbar .pay small{font-size:22px;font-weight:500;opacity:.9}
.sumbar .pay[disabled]{background:#b9b9b9}

/* ---------- 결제 / 임의매출 공통 머리글 ---------- */
.payhead{background:linear-gradient(#f4f4f4,#e9e9e9);padding:70px 60px 40px;text-align:center}
.payhead h1{margin:0;font-size:44px;font-weight:800;letter-spacing:-1px}
.payhead .multi{margin-top:10px}
.payhead hr{border:0;border-top:2px dotted #b9b9b9;margin:30px 0 0}
.pay .list{flex:1;background:#fff;margin:0;padding:40px 70px;overflow:hidden}
.pay .row{display:flex;align-items:center;font-size:32px;padding:22px 0;border-bottom:1px solid var(--line-2)}
.pay .row .n{flex:1;font-weight:600}
.pay .row .p{width:260px;text-align:right;color:var(--red);font-weight:800}
.pay .row .p:after{content:attr(data-u);font-size:22px;color:#333;font-weight:600;margin-left:4px}
.pay .row .q{width:120px;text-align:right;font-weight:800}
.pay .row .q:after{content:" " attr(data-u);font-size:22px;font-weight:600}
.pay .totals{background:#fff;padding:20px 70px 40px;border-top:2px dotted #c9c9c9}
.pay .totals .line{display:grid;grid-template-columns:1fr 1fr;gap:14px 60px;font-size:32px;font-weight:700}
.pay .totals .line .k{color:#333;display:inline-block;width:170px}
.pay .totals .line .v{color:var(--blue-2);font-weight:800}
.pay .totals .line .v.red{color:var(--red);font-size:40px}
.pay .totals .warn{margin-top:30px;padding-top:30px;border-top:2px dotted #c9c9c9;text-align:center;font-size:38px;font-weight:600;color:#444}
.pay .totals .warn b{color:var(--blue-2)} .pay .totals .warn em{font-style:normal;color:var(--red)}
.pay .bottom{height:560px;background:radial-gradient(ellipse at 50% 30%,#4a4a4a,#1e1e1e 70%);position:relative;display:flex;flex-direction:column;align-items:center;padding-top:40px}
.pay .anysale-unused{position:absolute;left:60px;bottom:70px;width:190px;height:130px;background:#fff;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;font-size:24px;font-weight:700;color:#222}
.pay .anysale .ico{width:46px;height:46px;stroke-width:1.6;color:#444}
.pay .methods{display:flex;gap:24px;margin-top:30px}
.pay .method{width:230px;height:200px;background:#fff;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;font-size:28px;font-weight:800;color:var(--blue)}
.pay .method small{font-size:20px;font-weight:500;color:#666}
.pay .method .ico{width:60px;height:60px;stroke-width:1.6}
.pay .method.teal{color:var(--teal)} .pay .method.orange{color:var(--orange)}
.pay .hint{margin-top:30px;color:#ddd;font-size:26px}
.pay .cancel{position:absolute;bottom:70px;left:50%;transform:translateX(-50%);width:330px;height:84px;font-size:32px;border-radius:8px}


/* ---------- 완료 ---------- */
.done{background:#f6f6f6}
.done .hdr{padding:60px 60px 0;border-bottom:3px solid #e0e0e0;height:170px}
.done .body{flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;padding-top:300px}
.done h1{margin:0;font-size:60px;font-weight:900}
.done h1 span{font-weight:500;font-size:46px}
.done h2{margin:18px 0 0;font-size:46px;font-weight:800;color:var(--red)}
.done h2 span{color:#333;font-weight:500;font-size:40px}
.done .multi{margin-top:16px;font-size:22px}
.done hr{width:760px;border:0;border-top:3px dotted #bbb;margin:60px 0}
.done .ono{font-size:34px;color:#444;font-weight:600}
.done .num{font-size:240px;font-weight:900;color:#2a63c4;line-height:1;letter-spacing:-6px;margin-top:10px}
.done .thanks{font-size:44px;font-weight:800}
.done .count{margin-top:60px;color:#999;font-size:26px}

/* ---------- 관리자 메뉴 ---------- */
.admin{background:#fff}
.admin .top{height:170px;padding:0 50px;display:flex;align-items:center;justify-content:space-between;border-bottom:3px solid #e6e6e6;background:#f7f7f7}
.admin .top h1{margin:0;font-size:60px;font-weight:900;color:var(--blue);letter-spacing:-1px}
.admin .top .close{width:72px;height:72px;border:3px solid var(--blue);border-radius:8px;color:var(--blue);display:flex;align-items:center;justify-content:center;background:#fff}
.admin .top .close .ico{width:40px;height:40px;stroke-width:2.5}
.admin .wrap{flex:1;display:flex;min-height:0}
.admin .side{width:220px;background:var(--dark);display:flex;flex-direction:column}
.admin .side button{height:150px;color:#fff;font-size:26px;font-weight:700;border-bottom:1px solid #4a4a4a;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.3;position:relative;padding:0 10px}
.admin .side button.on{background:#f4f4f4;color:#222}
.admin .side button.on:after{content:"";position:absolute;right:14px;border:9px solid transparent;border-left-color:var(--red)}
.admin .main{flex:1;padding:40px 44px;display:flex;flex-direction:column;min-width:0;overflow:hidden}
.admin h2{margin:0;font-size:40px;font-weight:800;display:flex;align-items:center;gap:14px;padding-bottom:16px;border-bottom:2px dotted #bbb}
.admin h2 .mark{width:34px;height:34px;background:var(--red);border-radius:4px;display:inline-flex;align-items:center;justify-content:center;color:#fff}
.admin h2 .mark .ico{width:20px;height:20px;stroke-width:3}
.subtabs{display:flex;margin-top:30px;height:66px;align-items:stretch}
.subtabs button{flex:1;background:var(--blue);color:#fff;font-size:24px;font-weight:700;border-right:2px solid #0f3a7c}
.subtabs button:last-child{border-right:0}
.subtabs button.on{background:#fff;color:#222;border-left:8px solid var(--blue);border-right:0;position:relative}
.subtabs button.on:before{content:"";position:absolute;top:2px;left:50%;transform:translateX(-50%);border:8px solid transparent;border-top-color:var(--blue)}
.subtabs2{display:flex;margin-top:12px;border-bottom:2px solid #ccc}
.subtabs2 button{padding:14px 26px;font-size:24px;font-weight:600;color:#555;border:2px solid transparent;border-bottom:0}
.subtabs2 button.on{background:#fff;color:#222;border-color:#ccc;margin-bottom:-2px;border-bottom:2px solid #fff}
.tbl{width:100%;border-collapse:collapse;font-size:22px;margin-top:14px;table-layout:auto}
.tbl.wide th,.tbl.wide td{font-size:19px;padding:12px 6px}
.tbl th{background:#efefef;color:#444;font-weight:700;padding:14px 10px;border:1px solid #d6d6d6;white-space:nowrap}
.tbl td{padding:14px 10px;border:1px solid #e3e3e3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbl tr.sel td{background:#d6e6fb}
.tbl td.r{text-align:right} .tbl td.c{text-align:center}
.tbl.compact th,.tbl.compact td{padding:10px 8px;font-size:20px}
.formrow{display:grid;grid-template-columns:repeat(3,1fr);gap:20px 30px;margin-top:26px}
.field label{display:block;font-size:22px;font-weight:600;color:#444;margin-bottom:8px}
.field input,.field select{width:100%;height:60px;border:2px solid #ccc;border-radius:6px;padding:0 14px;font-size:24px;background:#fff;color:#222}
.minibtns{display:flex;justify-content:center;gap:8px;margin-top:14px}
.minibtns button{height:46px;padding:0 18px;border-radius:4px;color:#fff;font-size:20px;font-weight:700}
.minibtns .b{background:var(--blue-2)} .minibtns .d{background:var(--dark)} .minibtns .r{background:var(--red)}
.listbox{border:1px solid #d6d6d6;height:300px;overflow:hidden;background:#fff}
.searchbar{display:flex;align-items:center;gap:18px;border:1px solid #d6d6d6;padding:18px 22px;margin-top:26px;font-size:22px;flex-wrap:wrap}
.searchbar input{height:52px;border:2px solid #ccc;border-radius:4px;padding:0 12px;width:260px}
.chk{display:inline-flex;align-items:center;gap:10px;font-size:22px;font-weight:600}
.chk i{width:32px;height:32px;border:2px solid #bbb;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;background:#fff}
.chk i .ico{width:20px;height:20px;stroke-width:3.5;color:var(--blue-2);display:none}
.chk.on i .ico{display:block}
.chk.on i{border-color:var(--blue-2)}
.optlist{margin-top:10px;border:1px solid #ddd;background:#fff}
.optlist .row{display:flex;align-items:center;gap:16px;padding:20px 24px;border-bottom:1px solid #eee;font-size:24px}
.optlist .row:last-child{border-bottom:0}
.actions{margin-top:auto;display:flex;justify-content:center;gap:16px;padding-top:30px}
.actions .btn{height:84px;padding:0 40px;font-size:28px;border-radius:6px;white-space:nowrap}
.admin .main .fill{flex:1;min-height:0}
.placeholder{flex:1;display:flex;align-items:center;justify-content:center;color:#aaa;font-size:30px;border:3px dashed #ddd;border-radius:12px;margin-top:30px;text-align:center;line-height:1.6}

/* ---------- 모달 ---------- */
.overlay{position:absolute;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:20}
.modal{background:#fff;border-radius:6px;box-shadow:0 20px 60px rgba(0,0,0,.5);position:relative}
.modal .mh{display:flex;align-items:center;justify-content:space-between;padding:36px 44px 0}
.modal .mh h3{margin:0;font-size:50px;font-weight:800;color:var(--blue)}
.modal .mh .close{width:60px;height:60px;border:3px solid var(--blue-2);border-radius:6px;color:var(--blue-2);display:flex;align-items:center;justify-content:center}
.modal .mh .close .ico{width:34px;height:34px;stroke-width:2.5}
.dine{width:800px;padding-bottom:70px}
.dine .lead{text-align:center;margin-top:40px;padding:0 44px 30px;border-bottom:2px dotted #bbb}
.dine .lead h4{margin:0;font-size:34px;font-weight:800}
.dine .lead .multi{margin-top:8px;font-size:18px}
.dine .opts{display:flex;justify-content:center;gap:0;margin-top:90px}
.dine .opt{width:360px;display:flex;flex-direction:column;align-items:center;gap:18px;font-size:30px;color:#222}
.dine .opt + .opt{border-left:3px solid #ddd}
.dine .opt .sq{width:250px;height:230px;border-radius:30px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#fff;font-size:90px;font-weight:900;letter-spacing:-2px}
.dine .opt .sq .ico{width:70px;height:70px;stroke-width:1.8}
.dine .opt.togo .sq{background:#e5332d} .dine .opt.here .sq{background:#2a6fd6}
.dine .opt b{font-size:34px;font-weight:800}
.proc{width:680px;padding:60px 40px 50px;text-align:center;border-radius:24px}
.proc h3{margin:0;font-size:50px;font-weight:800}
.proc p{margin:16px 0 0;font-size:28px;color:#555}
.proc .spin{margin:50px auto 30px;width:170px;height:170px;border-radius:50%;border:14px solid #e2e2e2;border-top-color:var(--blue-2);animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.proc .ld{font-size:26px;color:#888;letter-spacing:2px}
.confirm{width:700px;padding:90px 50px 60px;text-align:center;border-radius:14px}
.confirm h3{margin:0;font-size:44px;font-weight:800;line-height:1.5}
.confirm .bts{display:flex;justify-content:center;gap:24px;margin-top:70px}
.confirm .bts .btn{height:84px;padding:0 40px;font-size:30px;border-radius:6px}
.login{width:460px;padding-bottom:40px}
.login .mh h3{font-size:44px}
.login .fld{margin:34px 40px 0;display:flex;flex-direction:column;gap:14px}
.login .fld div{height:68px;border:2px solid #bbb;border-radius:4px;display:flex;align-items:center;padding:0 20px;font-size:28px;font-weight:700;color:#444;gap:16px;background:#fff}
.login .fld div span{color:#222;font-weight:600;letter-spacing:2px}
.login .fld div.on{border-color:var(--blue-2)}
.login .pad{margin:30px 40px 0;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.login .pad button{height:84px;border:2px solid #ccc;border-radius:6px;font-size:36px;font-weight:600;color:var(--blue-2);background:#fff}
.login .pad button.fn{font-size:24px;color:#444}
.login .pad button:active{background:#e8eef8}
.login .ok{margin:20px 40px 0;height:84px;width:calc(100% - 80px);font-size:32px;border-radius:6px}
.periph{width:820px;padding-bottom:50px}
.periph .grid{display:grid;grid-template-columns:140px 1fr 140px 1fr;gap:18px 14px;align-items:center;margin:40px 44px 0;font-size:24px}
.periph .grid label{text-align:right;color:#444;font-weight:600}
.periph .grid input,.periph .grid select{height:56px;border:2px solid #ccc;border-radius:4px;padding:0 12px;font-size:22px;width:100%;background:#fff}
.periph .grid .w{grid-column:2/5}
.periph .save{margin:46px auto 0;display:flex;width:280px;height:80px;font-size:30px;border-radius:6px}
.toast{position:absolute;left:50%;bottom:220px;transform:translateX(-50%);background:rgba(0,0,0,.8);color:#fff;padding:22px 40px;border-radius:12px;font-size:28px;z-index:30;animation:fade 2.4s forwards}
@keyframes fade{0%{opacity:0;transform:translate(-50%,20px)}15%{opacity:1;transform:translate(-50%,0)}80%{opacity:1}100%{opacity:0}}

/* ---------- 로고 ---------- */
.logo{display:block}
.idle .idlelogo{margin-top:300px}
.idle .storename{margin-top:30px;font-size:36px;font-weight:700;color:#333;letter-spacing:1px}
.order .hdr{align-items:center;padding-top:40px}
.done .hdr{display:flex;align-items:center}
.nomenu{grid-column:1/4;text-align:center;color:#999;font-size:30px;padding:120px 0}
.card .thumb .noimg,.cart .item .mini .noimg,.pthumb .noimg{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#bbb;font-weight:800;font-size:18px;background:#f4f4f4;border:0;border-radius:0}
.card .thumb .noimg:before{display:none}
.cart .item .mini .noimg{font-size:13px}

/* ---------- 로그인 ---------- */
.loginscr{align-items:center;justify-content:center;background:linear-gradient(#f7f7f7,#e9edf3)}
.loginscr .box{width:760px;background:#fff;border-radius:24px;padding:80px 90px 60px;box-shadow:0 30px 80px rgba(0,0,0,.12);display:flex;flex-direction:column;align-items:center}
.loginscr h1{margin:60px 0 0;font-size:44px;font-weight:800}
.loginscr .sub{margin:12px 0 40px;color:#777;font-size:24px}
.loginscr form{width:100%;display:flex;flex-direction:column;gap:22px}
.loginscr label{display:flex;flex-direction:column;gap:10px;font-size:24px;font-weight:600;color:#444}
.loginscr input{height:84px;border:2px solid #ccc;border-radius:10px;padding:0 22px;font-size:30px;background:#fff;color:#222}
.loginscr input:focus{outline:none;border-color:var(--blue-2)}
.btn.big{height:96px;font-size:32px;border-radius:12px;margin-top:10px}
.btn[disabled]{opacity:.5}
.err{color:var(--red);font-size:22px;font-weight:600;background:#fdecec;border-radius:8px;padding:14px 18px}
.loginscr .foot{margin-top:40px;color:#aaa;font-size:20px}

/* ---------- 결제 화면 추가 ---------- */
.pay .discbtn{position:absolute;left:60px;bottom:70px;width:190px;height:130px;background:#fff;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;font-size:24px;font-weight:700;color:#222}
.pay .discbtn .ico{width:46px;height:46px;stroke-width:1.6;color:var(--orange)}
.pay .totals .dc{font-size:20px;color:var(--orange);font-weight:600}
.done .detail{margin-top:20px;font-size:26px;color:#555;line-height:1.6}
.done .donebtn{margin-top:30px;height:84px;padding:0 80px;font-size:30px}
.done .count{margin-top:40px}

/* ---------- 모달 추가 ---------- */
.modal.declined{width:720px;padding:70px 50px 50px;text-align:center;border-radius:16px}
.modal.declined .icon .ico{width:120px;height:120px;color:var(--red);stroke-width:1.6}
.modal.declined h3{margin:20px 0 0;font-size:46px;font-weight:900;color:var(--red)}
.modal.declined .big{font-size:36px;font-weight:800;margin:24px 0 0}
.modal.declined p{font-size:26px;color:#555;margin:14px 0 0;line-height:1.5}
.modal.declined .bts{margin-top:50px}
.modal.declined .bts .btn{height:84px;padding:0 40px;font-size:28px;border-radius:6px}
.modal .mtext{font-size:26px;color:#555;margin:20px 0 0;line-height:1.5}
.login .fld .lb{font-weight:700;color:#444;white-space:nowrap}
.login .fld input{border:0;outline:none;font:inherit;font-size:28px;flex:1;min-width:0;background:transparent;color:#222;font-weight:600}
.login .fld .dots{letter-spacing:4px}
.login .fld .val{font-size:34px;color:var(--blue-2);font-weight:800;letter-spacing:0}
.login .err{margin:18px 40px 0}
.modal.rep{width:760px;padding-bottom:40px;max-height:1600px;display:flex;flex-direction:column}
.report{margin:30px 44px 0;border:1px solid #e3e3e3;border-radius:10px;overflow:auto;max-height:1100px}
.rrow{display:flex;justify-content:space-between;padding:16px 24px;border-bottom:1px solid #eee;font-size:24px}
.rrow b{font-weight:800;color:#222} .rrow span{color:#555}
.rsub{background:#f3f5f8;padding:10px 24px;font-size:20px;font-weight:700;color:var(--blue);border-bottom:1px solid #eee}
.modal.rep .actions{padding:30px 44px 0}
.modal.orders{width:900px}
.olist{margin:30px 44px 0;max-height:1200px;overflow:auto;display:flex;flex-direction:column;gap:12px}
.orow{display:flex;align-items:center;gap:20px;border:1px solid #e3e3e3;border-radius:10px;padding:16px 20px}
.orow.cancelled{opacity:.55}
.orow .ono{width:90px;height:90px;border-radius:12px;background:var(--blue-3);color:var(--blue);font-size:38px;font-weight:900;display:flex;align-items:center;justify-content:center;flex:none}
.orow .oinfo{flex:1;font-size:24px;line-height:1.5;min-width:0} .orow .oinfo small{color:#777;font-size:20px}
.orow .tagc{color:var(--red);font-weight:700;font-size:22px}
.empty2{text-align:center;color:#999;font-size:26px;padding:60px}
.btn.sm{height:56px;padding:0 24px;font-size:22px;border-radius:6px;white-space:nowrap}
.modal.formm{width:860px;padding-bottom:40px}
.modal.formm form{padding:0 44px}
.formrow.two{grid-template-columns:repeat(2,1fr)}
.field input[type=hidden]{display:none}
.field label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sw{position:relative;display:inline-block;width:92px;height:48px;margin-top:6px}
.sw input{opacity:0;width:0;height:0}
.sw span{position:absolute;inset:0;background:#ccc;border-radius:48px;transition:.2s}
.sw span:before{content:"";position:absolute;width:40px;height:40px;left:4px;top:4px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 2px 4px rgba(0,0,0,.2)}
.sw input:checked+span{background:var(--blue-2)} .sw input:checked+span:before{transform:translateX(44px)}
.imgrow{display:flex;align-items:center;gap:24px;margin-top:26px}
.imgrow .small{color:#888;font-size:20px}
.pthumb{width:72px;height:54px;border-radius:6px;overflow:hidden;background:#f4f4f4;display:inline-block}
.pthumb img{width:100%;height:100%;object-fit:cover;display:block}
.pthumb.big{width:200px;height:150px;border:1px solid #ddd}
.modal.formm .actions{margin-top:30px}

/* ---------- 관리자 추가 ---------- */
.admin .top .who{font-size:22px;color:#666;margin-left:auto;margin-right:30px}
.admin .top .who span{color:var(--blue);font-weight:700}
.loading{color:#999;font-size:28px;padding:80px;text-align:center}
.lnk{color:var(--blue-2);font-weight:700;font-size:20px;text-decoration:underline;padding:4px 6px}
.lnk.red{color:var(--red)}
.split{display:flex;gap:20px;margin-top:26px}
.catbox{flex:1;border:1px solid #ddd;border-radius:8px;padding:14px 18px;background:#fafafa}
.boxhead{display:flex;justify-content:space-between;align-items:center;font-size:24px;font-weight:700}
.searchbar .grow{flex:1}
.searchbar #prodFilter{width:300px}
.tblwrap{flex:1;min-height:0;overflow:auto;margin-top:14px}
.tbl .chk{display:inline-flex}
.chk i .ico{stroke:var(--blue-2)}
.statrow{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:30px}
.statrow div{background:#f5f7fa;border-radius:10px;padding:24px;display:flex;flex-direction:column;gap:8px;align-items:center}
.statrow b{font-size:36px;font-weight:900;color:var(--blue)} .statrow span{font-size:20px;color:#666}
.optlist .row .grow{flex:1}
.optlist .row small{color:#777;font-size:20px}
.optlist input[type=date]{height:52px;border:2px solid #ccc;border-radius:6px;padding:0 10px;font-size:22px;margin-right:12px}
.admin .main form{display:flex;flex-direction:column;flex:1;min-height:0}

/* ---------- 주문 화면 레이아웃 고정 (헤더·탭이 상품 그리드에 눌리지 않게) ---------- */
.order .hdr{flex:none;height:150px;padding:0 60px;align-items:center}
.catbar{flex:none;height:150px;margin:0 60px}
.catbar .tab{font-size:36px;transition:background .2s,color .2s,flex .25s}
.catbar .tab.on:before{top:12px}
.products{flex:1;min-height:0;margin:28px 60px 0;grid-auto-rows:340px;gap:24px;overflow:hidden}
.card .thumb{height:200px}
.card .name{padding-top:16px;font-size:28px}
.card .price{font-size:28px}
.pager{flex:none;height:100px}
.cartwrap{flex:none}
.cart{height:280px;padding-top:52px}
.cart .item{height:210px}
.sumbar{height:150px}

/* ---------- 애니메이션 ---------- */
button{transition:transform .09s ease,filter .12s}
button:active:not([disabled]){transform:scale(.96)}
.card:active{transform:scale(.97)}
.sumbar .pay:active:not([disabled]),.idle .open:active{transform:scale(.98)}
@keyframes screenIn{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes modalIn{from{opacity:0;transform:scale(.88) translateY(20px)}to{opacity:1;transform:none}}
@keyframes popIn{0%{opacity:0;transform:scale(.5)}70%{transform:scale(1.08)}100%{opacity:1;transform:scale(1)}}
@keyframes popOut{to{opacity:0;transform:scale(.6);width:0;margin-right:-18px;padding:0;border-width:0}}
@keyframes bump{0%{transform:scale(1)}35%{transform:scale(1.28);color:#ff7a00}100%{transform:scale(1)}}
@keyframes shake{10%,90%{transform:translateX(-4px)}20%,80%{transform:translateX(8px)}30%,50%,70%{transform:translateX(-14px)}40%,60%{transform:translateX(14px)}}
@keyframes slideL{from{opacity:0;transform:translateX(90px)}to{opacity:1;transform:none}}
@keyframes slideR{from{opacity:0;transform:translateX(-90px)}to{opacity:1;transform:none}}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}
.screen.enter{animation:screenIn .32s cubic-bezier(.2,.8,.2,1)}
.overlay.enter{animation:fadeIn .18s}
.modal.pop{animation:modalIn .28s cubic-bezier(.34,1.4,.64,1)}
.modal.shake{animation:modalIn .22s cubic-bezier(.34,1.4,.64,1),shake .55s .22s}
.products.enter{animation:fadeUp .26s}
.products.slide-l{animation:slideL .3s cubic-bezier(.2,.8,.2,1)}
.products.slide-r{animation:slideR .3s cubic-bezier(.2,.8,.2,1)}
.cart .item.pop{animation:popIn .32s cubic-bezier(.34,1.5,.64,1)}
.cart .item.removing{animation:popOut .18s ease-in forwards;overflow:hidden}
.bump{display:inline-block;animation:bump .4s cubic-bezier(.34,1.5,.64,1)}
.done .num.popbig{animation:popIn .7s cubic-bezier(.34,1.5,.64,1)}
.done .count span{animation:blink 1s infinite}
.admin .main.enter{animation:fadeUp .22s}
.fly{position:absolute;z-index:40;pointer-events:none;border-radius:12px;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.fly img{width:100%;height:100%;object-fit:cover}
.toast{animation:fade 2.4s forwards}
.proc .spin{animation:spin .9s linear infinite}
.proc h3{animation:blink 1.6s infinite}
.tile,.idle .open,.method,.kind,.opt .sq{transition:transform .09s,box-shadow .15s,background .15s}
.tile:active{background:#eef2f8}
.chk i,.sw span,.sw span:before{transition:all .18s}
.admin .side button{transition:background .18s,color .18s}
.subtabs button,.subtabs2 button{transition:background .18s,color .18s}
.login .pad button:active{transform:scale(.92);background:#dde7f7}

/* ---------- Material Symbols (자체 호스팅 서브셋) ---------- */
@font-face{font-family:'Material Symbols Rounded';font-style:normal;font-weight:400;font-display:block;src:url(brand/material-symbols-rounded.woff2) format('woff2')}
.mi{font-family:'Material Symbols Rounded';font-weight:400;font-style:normal;line-height:1;display:inline-flex;align-items:center;justify-content:center;font-variation-settings:'FILL' 0,'wght' 400,'GRAD' 0,'opsz' 48;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;width:auto!important;height:auto!important;flex:none;font-size:1.15em}
.btn .mi{font-size:1.15em;margin-right:2px}
.idle .tile .mi{font-size:66px;color:#444} .idle .open .mi{font-size:130px;color:#fff} .idle .wide .mi{font-size:46px;color:#fff}
.lang .mi{font-size:28px} .lang img.flag{width:40px;height:30px;border-radius:4px;box-shadow:0 0 0 1px rgba(0,0,0,.15);background:none;border:0}
.pager .arrow .mi{font-size:46px} .cart .item .x .mi{font-size:24px} .cart .item .qty .mi{font-size:26px} .cart .side .pg .mi{font-size:34px} .cart .side .trash .mi{font-size:54px}
.cartwrap .tag{display:inline-flex;align-items:center;gap:8px;border:0;cursor:pointer;padding:10px 20px;font-size:24px}
.cartwrap .tag .mi{font-size:28px} .cartwrap .tag b{background:var(--red);color:#fff;border-radius:20px;padding:0 10px;font-size:20px;min-width:28px;text-align:center}
.sumbar .pay .pl{display:inline-flex;align-items:center;gap:10px} .sumbar .pay .mi{font-size:46px}
.pay .method{color:#222;gap:14px} .pay .method .badge{width:84px;height:84px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center}
.pay .method .badge .mi{font-size:50px} .pay .method.teal .badge{background:var(--teal)} .pay .method.orange .badge{background:var(--orange)}
.pay .discbtn .mi{font-size:46px;color:var(--orange)} .pay .cancel .mi{font-size:34px}
.dine .opt .sq .mi{font-size:76px} .modal.declined .icon .mi{font-size:130px;color:var(--red)}
.modal .mh .close .mi,.admin .top .close .mi{font-size:40px} .modal .mh h3 .mi{font-size:1em;margin-right:10px;vertical-align:-4px}
.admin h2 .mark .mi{font-size:22px} .chk i .mi{font-size:24px} .login .pad .fn .mi{font-size:30px}
.admin .side button{flex-direction:column;gap:10px} .admin .side button .mi{font-size:44px;opacity:.9}
.admin .top .who{display:flex;align-items:center;gap:6px} .admin .top .who .mi{font-size:24px}
.done .okico .mi{font-size:140px;color:var(--blue-2)} .done .body{padding-top:200px} .done .donebtn .mi{font-size:34px}
.loginscr .btn.big .mi{font-size:36px}
.confirm .bts .btn .mi,.modal.declined .bts .btn .mi{font-size:30px}
.modal.cartm{width:940px;padding-bottom:40px;display:flex;flex-direction:column;max-height:1600px}
.clist{margin:30px 44px 0;flex:1;min-height:200px;max-height:1050px;overflow:auto;display:flex;flex-direction:column;gap:14px}
.crow{display:flex;align-items:center;gap:20px;border:1px solid #e3e3e3;border-radius:12px;padding:14px 18px;background:#fff}
.crow .cthumb{width:120px;height:90px;border-radius:8px;overflow:hidden;background:#f4f4f4;flex:none} .crow .cthumb img{width:100%;height:100%;object-fit:cover;display:block}
.crow .cname{flex:1;font-size:28px;font-weight:700;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .crow .cname small{display:block;font-size:20px;color:#777;font-weight:500;margin-top:4px}
.crow .cqty{display:flex;align-items:center;gap:14px;font-size:30px;font-weight:800;min-width:170px;justify-content:center}
.crow .cqty button{width:52px;height:52px;border-radius:50%;background:#2a63c4;color:#fff;display:flex;align-items:center;justify-content:center} .crow .cqty button.minus{background:#9a9a9a} .crow .cqty .mi{font-size:28px}
.crow .csum{width:160px;text-align:right;font-size:28px;font-weight:800;color:var(--red)}
.crow .cdel{width:56px;height:56px;border-radius:8px;background:#f1f1f1;color:#555;display:flex;align-items:center;justify-content:center} .crow .cdel .mi{font-size:30px}
.crow.removing{animation:popOut .18s ease-in forwards;height:0;margin-top:-14px} .crow.pop{animation:popIn .3s cubic-bezier(.34,1.5,.64,1)}
.cfoot{margin:24px 44px 0;border-top:2px dotted #ccc;padding-top:24px}
.cnums{display:flex;gap:40px;font-size:26px;color:#444;align-items:baseline} .cnums b{font-weight:800;color:#222} .cnums .tot{margin-left:auto;font-size:30px} .cnums .tot b{color:var(--red);font-size:44px}
.cbtns{display:flex;gap:14px;margin-top:24px} .cbtns .btn{flex:1;height:88px;font-size:28px;border-radius:8px}

/* ---------- 탭 아이콘(1행) + 텍스트(2행), 상품 설명, 다국어 ---------- */
.catbar .tab{flex-direction:column;gap:6px;font-size:30px;line-height:1.1}
.catbar .tab .mi{font-size:52px;color:#fff;opacity:.95} .catbar .tab.on .mi{color:var(--blue)}
.catbar .tab span{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 8px}
.card .name{font-size:26px;padding-top:14px;display:flex;align-items:baseline;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card .name .so{color:var(--red);font-size:20px;font-weight:700} .card.soldout .name:after{content:none}
.card .desc{padding:4px 24px 0;font-size:18px;color:#777;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:24px}
.card .price{padding-top:6px;font-size:26px}
.catbox .tbl td .mi{font-size:22px;vertical-align:-4px;color:#555}

.loginscr .btn.demo{margin-top:26px;height:72px;width:100%;font-size:24px;border-radius:10px;color:#444;border:2px dashed #bbb;background:#f7f7f7}
.loginscr .btn.demo .mi{font-size:30px}

/* ---------- 하단 합계: 박스형 ---------- */
.sumbar .nums{gap:12px;padding:0 20px 0 36px;align-items:center}
.sumbar .stat{background:#fff;border:2px solid #d6d6d6;border-radius:14px;height:108px;min-width:118px;padding:0 16px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;flex:none}
.sumbar .stat .k{font-size:19px;color:#666;font-weight:600;letter-spacing:0}
.sumbar .stat .v{font-size:34px;font-weight:800;color:#222;line-height:1.1}
.sumbar .stat .v.blue{color:var(--blue-2)}
.sumbar .stat.has{border-color:#f6c98a;background:#fff8ec} .sumbar .stat.has .v{color:var(--orange)}
.sumbar .stat.total{flex:1;min-width:0;align-items:flex-end;padding:0 22px;border-color:#f1b3b1;background:#fff4f4}
.sumbar .stat.total .k{color:#8a3a38}
.sumbar .stat.total .v{font-size:46px;color:var(--red);white-space:nowrap}
.sumbar .stat.total .v small{font-size:20px;font-weight:700;margin-left:4px;color:#a84c4a}

/* ---------- 하단 주문품 가로 스크롤 ---------- */
.cart{padding-top:40px}
.cart .items{overflow-x:auto;overflow-y:hidden;padding:18px 18px 4px 4px;margin:-18px 0 0 -4px;scrollbar-width:none;-webkit-overflow-scrolling:touch;align-items:flex-start}
.cart .items::-webkit-scrollbar{display:none}
.cart .side .pg button{color:#c4c4c4;transition:background .15s,color .15s}
.cart .side .pg button.on{background:var(--blue);border-color:var(--blue);color:#fff}
.sumbar .stat.total .k{display:flex;align-items:center;gap:10px}
.sumbar .dcb{display:inline-block;background:var(--orange);color:#fff;border-radius:20px;padding:3px 12px;font-size:18px;font-style:normal;font-weight:700;line-height:1.2;animation:popIn .3s cubic-bezier(.34,1.5,.64,1)}
.cartwrap .tag{z-index:3;top:6px}
.cart{padding-top:62px;height:280px}
.cart .item{height:196px;padding-top:12px}
.cart .item .mini{height:84px}
.cart .item .nm{margin-top:10px}

/* ---------- 분류 8개: 4열 2줄 탭 ---------- */
.catbar.many{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));height:auto;gap:0;background:#0f3a7c;border:2px solid #0f3a7c;border-radius:6px;overflow:hidden}
.catbar.many .tab{height:104px;flex:none;border:0;border-right:2px solid #0f3a7c;border-bottom:2px solid #0f3a7c;gap:4px;font-size:21px;padding:0 6px}
.catbar.many .tab:nth-child(4n){border-right:0}
.catbar.many .tab:nth-last-child(-n+4){border-bottom:0}
.catbar.many .tab .mi{font-size:38px}
.catbar.many .tab span:not(.mi){white-space:normal;text-align:center;line-height:1.15;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.3em}
.catbar.many .tab.on{border-left:0;flex:none;box-shadow:inset 0 -6px 0 var(--red)}
.catbar.many .tab.on:before{top:4px}
.catbar.many .tab.empty{background:#2f66c6}
/* ---------- 상품 4열 × 4줄 ---------- */
.products{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(4,minmax(0,1fr));grid-auto-rows:unset;gap:16px;margin-top:22px}
.card{position:relative;border-radius:10px}
.card .thumb{flex:1;min-height:0;height:auto;background:#fff;position:relative;border-bottom:1px solid #f0f0f0}
.card .thumb img{object-fit:cover}
.card .name{font-size:20px;line-height:1.22;padding:8px 12px 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;overflow:hidden;height:2.5em;flex:none}
.card .desc{font-size:14px;padding:2px 12px 0;height:19px;flex:none}
.card .price{font-size:21px;padding:2px 12px 10px;flex:none;white-space:nowrap}
.card .price s{font-size:15px;color:#999;font-weight:500;margin-right:6px}
.rib{position:absolute;z-index:2;top:12px;left:-34px;width:120px;transform:rotate(-45deg);text-align:center;font-size:15px;font-weight:800;letter-spacing:.5px;color:#fff;padding:3px 0;box-shadow:0 2px 4px rgba(0,0,0,.18)}
.rib-new{background:#8bc34a} .rib-best{background:#e4342e} .rib-sale{background:#26a69a}
.card.soldout .thumb{filter:none;opacity:1} .card.soldout .thumb img{filter:grayscale(1) brightness(.45)}
.card .sotag{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:30px;font-weight:900;letter-spacing:2px;text-decoration:underline;text-underline-offset:8px}
.card.soldout .name,.card.soldout .price{color:#999}
/* ---------- 관리자: 추가 노출 분류·뱃지 ---------- */
.field.wide{grid-column:1/-1}
.mchks{display:flex;flex-wrap:wrap;gap:10px}
.mchk{display:inline-flex;align-items:center;gap:8px;border:2px solid #ddd;border-radius:8px;padding:8px 14px;font-size:20px;cursor:pointer}
.mchk input{width:22px;height:22px;accent-color:var(--blue-2)}
.mchk:has(input:checked){border-color:var(--blue-2);background:#eef3fc}
.bdg{display:inline-block;font-style:normal;font-size:13px;font-weight:800;color:#fff;border-radius:4px;padding:1px 6px;vertical-align:2px}
.bdg-new{background:#8bc34a} .bdg-best{background:#e4342e} .bdg-sale{background:#26a69a}
.tbl s.lp{color:#999;font-size:16px}
#prodCat{height:52px;border:2px solid #ccc;border-radius:4px;padding:0 10px;font-size:20px;background:#fff}
.modal.formm{max-height:1700px;overflow:auto}
.card .thumb img{object-fit:contain;padding:6px 0 0}
.cart .item .mini{background:#fff} .cart .item .mini img{object-fit:contain}
.crow .cthumb{background:#fff} .crow .cthumb img{object-fit:contain}
.pthumb{background:#fff} .pthumb img{object-fit:contain}
/* 축소 캔버스 바깥 영역이 포커스·스크롤로 밀리지 않게 */
#viewport{overflow:clip}
html,body{overflow:hidden;overscroll-behavior:none}
