/* 네모 카페 공통 스타일 — 고객 앱 · 주문완료 · 결제실패 (관리자 전용 스타일은 admin.html) */
:root{
  --green:#00704a;--green-2:#1e3932;--mint:#d4e9e2;--lt:#d4e9e2;--gold:#cba258;
  --bg:#f2f0eb;--outer:#e4e1da;--card:#fff;--ink:#1c1c1c;--sub:#6b6b6b;--line:#e6e3dc;--tint:#eaf3ef;
  --accent:#00704a;--link:#00704a;--icon:#1e3932;--bad:#c82014;
  --r:20px;--shadow:0 1px 2px #0000000d,0 8px 24px #0000000f;
}
@media(prefers-color-scheme:dark){:root{
  --bg:#0f1512;--outer:#070a08;--card:#18201c;--ink:#f1f3f0;--sub:#9aa7a0;--line:#26312c;--tint:#1c2a24;--mint:#24362f;
  --accent:#1fa57a;--link:#4cc79a;--icon:#a9dcc9;--bad:#ff7a6e;--shadow:0 1px 2px #0000004d;
}}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.45 system-ui,-apple-system,"Apple SD Gothic Neo","Noto Sans KR",sans-serif}
body:has(dialog[open]){overflow:hidden}
button{font:inherit;color:inherit;cursor:pointer}
a{color:var(--link)}
[hidden]{display:none!important}
.app{max-width:520px;min-height:100vh;margin:0 auto;background:var(--bg)}
.shop{padding-bottom:calc(120px + env(safe-area-inset-bottom))}
@media(min-width:560px){body{background:var(--outer)}.app{box-shadow:0 0 48px #0000001f}}
.sub{color:var(--sub);font-size:14px}

/* 상단 히어로 */
.hero{position:relative;overflow:hidden;padding:max(18px,env(safe-area-inset-top)) 20px 28px;border-radius:0 0 32px 32px;background:var(--green-2);color:#fff}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.brand{display:flex;align-items:center;gap:8px;color:#fff;font-size:18px;font-weight:800;letter-spacing:-.01em;text-decoration:none}
.brand small{margin-left:2px;color:var(--lt);font-size:13px;font-weight:600}
.logo{width:28px;height:28px;flex:none}
.chips{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
.chip{padding:5px 12px;border-radius:99px;background:#ffffff1f;color:#fff;font-size:13px;font-weight:600;white-space:nowrap}
.chip.gold{background:var(--gold);color:#3b2b0a}
.hero-body{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-top:28px}
.eyebrow{margin:0 0 8px;color:var(--lt);font-size:13px;font-weight:700}
.hero h1{margin:0;font-size:27px;font-weight:800;line-height:1.28;letter-spacing:-.025em}
.hero-sub{margin:10px 0 0;color:#ffffffb8;font-size:14px}
.hero-art{width:108px;height:108px;flex:none;margin:0 -6px -6px 0;transform:rotate(-8deg)}
@media(max-width:380px){.hero h1{font-size:24px}.hero-art{width:84px;height:84px}}

/* 추천 메뉴 */
.sec-title{margin:0;font-size:20px;font-weight:800;letter-spacing:-.02em}
.featured{padding-top:26px}
.featured .sec-title{padding:0 20px 14px}
.rail{display:flex;gap:14px;padding:0 20px 8px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding:0 20px;scrollbar-width:none}
.rail::-webkit-scrollbar{display:none}
.fcard{flex:none;width:132px;padding:0;border:0;background:none;text-align:left;scroll-snap-align:start}
.fcard .thumb{width:132px;height:132px;box-shadow:var(--shadow)}
.fcard b{display:block;margin-top:10px;font-size:15px;line-height:1.3}
.fcard .price{display:block;margin-top:2px;color:var(--sub);font-size:14px}

/* 카테고리 탭 (스크롤하면 상단에 고정) */
.tabs{position:sticky;top:0;z-index:10;display:flex;gap:26px;margin-top:20px;padding:0 20px;overflow-x:auto;border-bottom:1px solid var(--line);background:var(--bg);scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{position:relative;flex:none;padding:15px 0 13px;border:0;background:none;color:var(--sub);font-size:16px;font-weight:600}
.tab.on{color:var(--ink);font-weight:800}
.tab.on::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;border-radius:3px 3px 0 0;background:var(--accent)}

/* 메뉴 목록 */
main{padding:0 20px}
.cat{padding-top:26px;scroll-margin-top:52px}
.cat h2{margin:0 0 12px;font-size:20px;font-weight:800;letter-spacing:-.02em}
.cat-note{margin:-6px 0 12px;color:var(--sub);font-size:13px}
.menu{margin:0;padding:0;list-style:none;overflow:hidden;border-radius:var(--r);background:var(--card);box-shadow:var(--shadow)}
.menu li+li{border-top:1px solid var(--line)}
.item{display:flex;align-items:center;gap:14px;width:100%;padding:14px 16px;border:0;background:none;text-align:left;transition:background .12s}
.item:active:not([disabled]){background:var(--tint)}
.item[disabled]{cursor:default}
.item[disabled] .txt{opacity:.5}
.item .txt{flex:1;min-width:0}
.item .nm{display:block;font-size:16px;font-weight:700;line-height:1.3}
.item .en{display:block;margin-top:1px;color:var(--sub);font-size:12px}
.item .desc{display:block;margin-top:5px;color:var(--sub);font-size:13px}
.item .price{display:block;margin-top:7px;font-size:15px;font-weight:700}
.item .en:empty,.item .desc:empty,.opt-body .en:empty,.opt-body .desc:empty,.opt-body .note:empty{display:none}
.price.so{color:var(--bad)!important}
.tag{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:99px;background:var(--gold);color:#3b2b0a;font-size:11px;font-weight:800;vertical-align:2px}

/* 메뉴 사진 (없으면 기본 일러스트) */
.thumb{position:relative;display:grid;place-items:center;width:84px;height:84px;flex:none;overflow:hidden;border-radius:50%;background:var(--mint)}
.thumb img{display:block;width:100%;height:100%;object-fit:cover}
.thumb svg{width:56%;height:56%;color:var(--icon)}
.thumb.so::after{content:"품절";position:absolute;inset:0;display:grid;place-items:center;background:#000000d1;color:#fff;font-size:14px;font-weight:800}
.thumb.xl{width:176px;height:176px;box-shadow:0 14px 34px #0000002e}
.thumb.sm{width:56px;height:56px}
.thumb.wide{width:112px;height:75px;border-radius:16px}
.thumb.sm.wide{width:72px;height:48px;border-radius:12px}
.thumb.xl.wide{width:min(calc(100% - 40px),440px);height:auto;aspect-ratio:3/2;border-radius:22px}
.fcard:has(.thumb.wide){width:176px}
.fcard .thumb.wide{width:176px;height:117px}

/* 버튼 */
.btn{display:block;width:100%;padding:16px 20px;border:0;border-radius:99px;background:var(--green);color:#fff;font-size:17px;font-weight:700;text-align:center;text-decoration:none;transition:transform .12s,filter .12s}
.btn:active{transform:scale(.98);filter:brightness(.94)}
.btn[disabled]{opacity:.4;cursor:default}
.btn.ghost{border:1.5px solid var(--line);background:none;color:var(--ink)}
.btn.link{background:none;color:var(--sub);font-size:15px;font-weight:600}

/* 하단 장바구니 바 */
.bar{position:fixed;left:50%;bottom:0;z-index:20;width:min(100%,520px);padding:12px 16px calc(14px + env(safe-area-inset-bottom));transform:translateX(-50%);pointer-events:none;transition:transform .3s cubic-bezier(.2,.8,.2,1),opacity .2s}
.bar:not(.show){opacity:0;visibility:hidden;transform:translate(-50%,120%);transition:transform .3s,opacity .2s,visibility 0s .3s}
.cartbar{pointer-events:auto;display:flex;align-items:center;gap:12px;width:100%;padding:10px 22px 10px 10px;border:0;border-radius:99px;background:var(--green-2);color:#fff;box-shadow:0 10px 28px #00000052;font-size:17px;font-weight:700;text-align:left}
.cartbar .n{display:grid;place-items:center;min-width:36px;height:36px;padding:0 8px;border-radius:99px;background:var(--gold);color:#3b2b0a;font-size:15px;font-weight:800}
.cartbar .l{flex:1}
.cartbar.bump .n{animation:bump .35s}
@keyframes bump{40%{transform:scale(1.28)}}
.toast{position:fixed;left:50%;bottom:calc(92px + env(safe-area-inset-bottom));z-index:30;padding:10px 18px;border-radius:99px;background:#000000d1;color:#fff;font-size:14px;font-weight:600;white-space:nowrap;opacity:0;pointer-events:none;transform:translate(-50%,10px);transition:opacity .2s,transform .2s}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* 하단 시트 (옵션 선택 · 주문 확인) */
dialog.sheet{width:min(100%,520px);max-width:100%;max-height:92vh;max-height:92dvh;margin:auto auto 0;padding:0;overflow:hidden;border:0;border-radius:28px 28px 0 0;background:var(--card);color:var(--ink)}
dialog.sheet[open]{display:flex;flex-direction:column;animation:up .32s cubic-bezier(.2,.8,.2,1)}
dialog.sheet::backdrop{background:#0000006b}
@keyframes up{from{opacity:0;transform:translateY(36px)}}
@media(min-width:560px){dialog.sheet{margin:auto;border-radius:28px}}
.col,dialog.sheet form{display:flex;flex:1;flex-direction:column;min-height:0}
.x{display:grid;place-items:center;width:40px;height:40px;flex:none;border:0;border-radius:50%;background:var(--tint);color:var(--ink)}
.x svg{width:18px;height:18px}
.opt-hero{position:relative;display:grid;place-items:center;flex:none;padding:30px 0 26px;background:var(--tint)}
.opt-hero .x{position:absolute;top:14px;right:14px;background:var(--card);box-shadow:0 1px 4px #0000002e}
.opt-body{flex:1;min-height:0;padding:22px 20px 6px;overflow-y:auto}
.opt-body h2{margin:0;font-size:24px;font-weight:800;line-height:1.25;letter-spacing:-.025em}
.opt-body .en{margin-top:2px;color:var(--sub);font-size:13px}
.opt-body .desc{margin:12px 0 0;color:var(--sub);font-size:15px}
.opt-body .note{margin:4px 0 0;color:var(--sub);font-size:13px}
.grp{margin-top:22px}
.lbl{margin-bottom:8px;color:var(--sub);font-size:13px;font-weight:700}
.seg{display:flex;gap:8px}
.seg label{position:relative;flex:1}
.seg input{position:absolute;inset:0;margin:0;opacity:0;cursor:pointer}
.seg span{display:flex;flex-direction:column;align-items:center;gap:1px;padding:12px 6px;border:1.5px solid var(--line);border-radius:16px;background:var(--card);font-weight:700}
.seg small{color:var(--sub);font-size:12px;font-weight:500}
.seg input:checked+span{border-color:var(--accent);background:var(--tint);color:var(--link)}
.seg input:checked+span small{color:var(--link)}
.seg input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.seg.wrap{flex-wrap:wrap}
.seg.wrap label{flex:1 1 calc(50% - 4px)}
.sw{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border:1.5px solid var(--line);border-radius:16px;font-weight:700}
.sw small{margin-left:6px;color:var(--sub);font-size:13px;font-weight:500}
.sw input{appearance:none;-webkit-appearance:none;position:relative;flex:none;width:50px;height:30px;margin:0;border-radius:99px;background:var(--line);transition:background .2s}
.sw input::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .2s}
.sw input:checked{background:var(--accent)}
.sw input:checked::after{transform:translateX(20px)}
.qrow{display:flex;align-items:center;justify-content:space-between}
.qrow .lbl{margin:0}
.qty{display:flex;align-items:center;gap:14px}
.qty button{display:grid;place-items:center;width:38px;height:38px;border:1.5px solid var(--line);border-radius:50%;background:var(--card);font-size:20px;line-height:1}
.qty button:disabled{opacity:.35;cursor:default}
.qty output{min-width:24px;font-size:17px;font-weight:800;text-align:center}
.sh-head{display:flex;align-items:center;justify-content:space-between;flex:none;padding:20px 20px 6px}
.sh-head h2{margin:0;font-size:22px;font-weight:800;letter-spacing:-.02em}
.sh-scroll{flex:1;min-height:0;padding:0 20px 14px;overflow-y:auto}
.sh-foot{flex:none;padding:12px 20px calc(16px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--card)}
.cl{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}
.cl .t{flex:1;min-width:0}
.cl .t b{display:block;line-height:1.3}
.cl .t span{display:block;margin-top:2px;color:var(--sub);font-size:13px}
.tot{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}
.tot b{font-size:24px;font-weight:800;letter-spacing:-.02em}
.mocknote{margin:0 0 12px;padding:8px 12px;border-radius:12px;background:var(--tint);color:var(--sub);font-size:13px;text-align:center}
.err{min-height:1.3em;margin:6px 0 0;color:var(--bad);font-size:14px;text-align:center}

/* 주문 완료 · 결제 실패 */
.pick{margin-top:22px;text-align:center}
.pick .eyebrow{margin-bottom:12px}
.pick-no{display:grid;place-items:center;width:max-content;min-width:150px;height:150px;margin:0 auto;padding:0 24px;border-radius:36px;background:#fff;color:var(--green-2);font-size:76px;font-weight:800;line-height:1;letter-spacing:-.04em}
.badge{display:inline-block;margin-top:16px;padding:6px 16px;border-radius:99px;background:#ffffff26;color:#fff;font-size:14px;font-weight:700}
.badge.READY{background:var(--gold);color:#3b2b0a}
.badge.CANCELED{background:var(--bad);color:#fff}
.pick-no.call{animation:call 1.3s ease-in-out infinite}
@keyframes call{50%{transform:scale(1.07);box-shadow:0 0 0 14px #cba2583a}}
.msg.call{font-size:21px;color:var(--link)}
.pad{padding:22px 20px 40px}
.msg{margin:0 0 20px;font-size:17px;font-weight:700;text-align:center}
.steps{display:flex;margin:0 0 24px;padding:0;list-style:none}
.steps li{position:relative;flex:1;color:var(--sub);font-size:12px;text-align:center}
.steps li::before{content:"";position:relative;z-index:1;display:block;width:14px;height:14px;margin:0 auto 8px;border-radius:50%;background:var(--line)}
.steps li+li::after{content:"";position:absolute;top:6px;right:50%;width:100%;height:2px;background:var(--line)}
.steps li.on::before,.steps li.on::after{background:var(--accent)}
.steps li.cur{color:var(--ink);font-weight:800}
.card{padding:18px;border-radius:var(--r);background:var(--card);box-shadow:var(--shadow)}
.card h3{margin:0 0 10px;color:var(--sub);font-size:14px;font-weight:700}
.ln{display:flex;justify-content:space-between;gap:12px;padding:6px 0}
.ln span:last-child{color:var(--sub);white-space:nowrap}
.ln.sum{margin-top:6px;padding-top:12px;border-top:1px solid var(--line);font-weight:800}
.ln.sum span:last-child{color:var(--ink)}
.stack{display:grid;gap:10px;margin-top:20px}
.center{padding:56px 24px;text-align:center}
.center h2{margin:0 0 6px;font-size:22px;letter-spacing:-.02em}
.ficon{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 16px;border-radius:50%;background:var(--tint);color:var(--bad);font-size:32px;font-weight:800}
.spin{width:36px;height:36px;margin:0 auto 16px;border:4px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(1turn)}}
.empty{padding:40px 20px;color:var(--sub);text-align:center}
.empty .btn{margin-top:16px}

/* 무인 운영시간대 안내 (모든 메뉴가 닫혔을 때) */
.closed{display:grid;gap:14px;padding:26px 20px 48px}
.closed-card{padding:24px 18px;border-radius:var(--r);background:var(--card);box-shadow:var(--shadow);text-align:center}
.closed-k{display:block;color:var(--sub);font-size:14px;font-weight:700}
.closed-v{margin:6px 0 0;color:var(--link);font-size:28px;font-weight:800;letter-spacing:-.02em}
.closed-s{margin:12px 0 0;color:var(--sub);font-size:13px;word-break:keep-all}

/* 수령 시 결제 안내 */
.paynote{margin:-6px 0 18px;padding:12px 14px;border-radius:14px;background:#fff1cf;color:#7a5200;font-size:15px;font-weight:700;text-align:center;word-break:keep-all}
@media(prefers-color-scheme:dark){.paynote{background:#3a2f12;color:#ffd27a}}

/* 주문 찾기 · 전화번호 뒷 4자리 입력 */
button.chip{border:0;cursor:pointer}
.chip.find{background:#ffffff33}
.field{width:100%;padding:13px 14px;border:1.5px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);font:inherit;font-size:20px;font-weight:700;letter-spacing:.25em;text-align:center}
.field::placeholder{color:var(--sub);font-weight:500;letter-spacing:.08em}
.field:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.lbl small{font-weight:500}
.hint{margin:8px 0 0;color:var(--sub);font-size:13px;line-height:1.5;word-break:keep-all}
.consent{display:flex;align-items:flex-start;gap:8px;margin-top:10px;font-size:13px;line-height:1.5;word-break:keep-all}
.consent input{flex:none;width:18px;height:18px;margin:2px 0 0;accent-color:var(--accent)}
.consent .more{padding:0;border:0;background:none;color:var(--link);font-size:13px;text-decoration:underline}
.privacy{margin:8px 0 0;padding:10px 12px;border-radius:12px;background:var(--tint);color:var(--sub);font-size:12px;line-height:1.6;word-break:keep-all}

/* 주문 완료 화면: 알림 켜기 */
.pushcard{margin:0 0 14px;padding:16px 18px;border-radius:var(--r);background:var(--tint);text-align:center}
.pushcard b{display:block;font-size:15px}
.pushcard p{margin:6px 0 0;color:var(--sub);font-size:13px;word-break:keep-all}
.pushcard .btn{margin-top:12px;padding:12px 16px;font-size:15px}
.pushcard.on b{color:var(--link)}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
