:root{--ink:#171914;--paper:#f3f4ed;--lime:#dfff3f;--mint:#bff5d3;--red:#ff6b55;--amber:#ffd66b;--line:#d9dbd0;--muted:#73766c}*{box-sizing:border-box}body{margin:0;background:#dfe1d8;color:var(--ink);font-family:Manrope,"Gowun Dodum",sans-serif;min-height:100vh}.app-shell{width:min(100%,520px);min-height:100vh;margin:0 auto;background:var(--paper);position:relative;overflow:hidden;box-shadow:0 0 60px #73766c33}.topbar{height:82px;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:10}.brand{border:0;background:none;padding:0;display:flex;align-items:center;gap:9px;font:800 1.05rem Manrope;color:var(--ink);cursor:pointer}.brand-mark{width:32px;height:32px;border-radius:10px;background:var(--ink);color:var(--lime);display:grid;place-items:center;font-size:1.25rem}.device-pill{border:1px solid var(--line);background:#fff;border-radius:18px;padding:8px 10px;display:flex;align-items:center;gap:8px;color:var(--ink);cursor:pointer;text-align:left}.device-pill span:nth-child(2){display:flex;flex-direction:column;max-width:155px}.device-pill small{font-size:.65rem;color:var(--muted)}.device-pill strong{font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.device-dot{width:8px;height:8px;background:#63c681;border-radius:50%}.view{display:none}.view.active{display:block}.camera-stage{height:calc(100vh - 144px);min-height:590px;margin:0 12px 12px;border-radius:30px;position:relative;overflow:hidden;background:radial-gradient(circle at 70% 30%,#e9dfbb 0 8%,transparent 30%),linear-gradient(145deg,#7f9274,#304633 55%,#1a251e)}.camera-stage:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#00000008 30%,#07100acd 100%)}.live-badge{position:absolute;top:20px;left:20px;z-index:2;background:#ffffffd9;border-radius:999px;padding:8px 12px;font-size:.75rem;font-weight:700}.live-badge span{display:inline-block;width:7px;height:7px;background:#fb644b;border-radius:50%;margin-right:6px}.focus-frame{position:absolute;inset:24% 12% 32%;z-index:2}.focus-frame i{position:absolute;width:38px;height:38px;border-color:#fff;border-style:solid}.focus-frame i:nth-child(1){left:0;top:0;border-width:2px 0 0 2px;border-radius:14px 0 0}.focus-frame i:nth-child(2){right:0;top:0;border-width:2px 2px 0 0;border-radius:0 14px 0 0}.focus-frame i:nth-child(3){left:0;bottom:0;border-width:0 0 2px 2px;border-radius:0 0 0 14px}.focus-frame i:nth-child(4){right:0;bottom:0;border-width:0 2px 2px 0;border-radius:0 0 14px}.food-scene{position:absolute;inset:20% 5% 25%;display:grid;place-items:center;transform:rotate(-8deg)}.plate{width:310px;height:245px;background:radial-gradient(ellipse,#f8f4e8 0 55%,#dbd7cb 56% 61%,#f7f3e8 62%);border-radius:50%;position:relative;box-shadow:0 20px 45px #0c160b77}.rib{position:absolute;width:116px;height:36px;background:linear-gradient(#7b321d,#b75a30);border-radius:60% 35% 48% 45%;box-shadow:inset 0 0 0 5px #eaa67455}.rib:after{content:"";position:absolute;width:72px;height:13px;background:#eee4cb;border-radius:999px;right:-47px;top:12px;transform:rotate(-7deg)}.rib-one{left:76px;top:80px;transform:rotate(-18deg)}.rib-two{left:101px;top:128px;transform:rotate(12deg)}.onion{position:absolute;width:64px;height:50px;background:repeating-linear-gradient(90deg,#b96d47 0 5px,#e3a77e 6px 12px);border-radius:60% 30%;right:54px;top:48px;transform:rotate(28deg)}.leaf{position:absolute;width:58px;height:30px;background:#66823e;border-radius:100% 0 100% 0;left:45px;bottom:45px;transform:rotate(-20deg)}.camera-copy{position:absolute;z-index:3;left:28px;right:28px;bottom:125px;color:white}.camera-copy h1{font-size:clamp(2rem,8vw,2.7rem);line-height:1.08;margin:0 0 12px;letter-spacing:-.05em}.camera-copy p{font-family:"Gowun Dodum";margin:0;color:#e8ecdf;font-size:1rem}.camera-controls{position:absolute;z-index:4;bottom:26px;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:42px}.camera-controls button{border:0;color:#fff;cursor:pointer}.shutter{width:72px;height:72px;border-radius:50%;background:#ffffff45;padding:5px}.shutter span{display:block;width:100%;height:100%;background:var(--lime);border-radius:50%;border:4px solid var(--ink)}.gallery-button,.help-button{width:44px;height:44px;border-radius:14px;background:#ffffff22;font-size:1.25rem;backdrop-filter:blur(8px)}.sample-row{height:50px;display:flex;align-items:center;padding:0 20px;gap:8px;overflow:auto}.sample-row span{font-size:.7rem;color:var(--muted);white-space:nowrap}.sample-row button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 11px;white-space:nowrap;font:600 .75rem Manrope;cursor:pointer}.loading-view,.unclear-view{padding:12vh 30px 40px;text-align:center}.scan-card{background:#fff;border:1px solid var(--line);border-radius:30px;padding:50px 28px}.scan-orbit{width:110px;height:110px;border:1px solid var(--line);border-radius:50%;margin:0 auto 32px;display:grid;place-items:center;position:relative}.scan-orbit:before,.scan-orbit:after{content:"";position:absolute;border:1px solid var(--line);border-radius:50%;inset:14px}.scan-orbit:after{inset:29px;background:var(--lime);border:0}.scan-orbit b{z-index:2}.scan-orbit span{position:absolute;width:12px;height:12px;background:var(--red);border-radius:50%;top:5px;left:49px;transform-origin:6px 50px;animation:orbit 1.2s linear infinite}@keyframes orbit{to{transform:rotate(360deg)}}.loading-view h2,.unclear-view h2{font-size:2rem;letter-spacing:-.04em;margin:0 0 12px}.loading-view p,.unclear-view p{font-family:"Gowun Dodum";line-height:1.7;color:var(--muted)}.progress{height:7px;background:#eceee5;border-radius:99px;overflow:hidden;margin:28px 0}.progress span{display:block;height:100%;background:var(--ink);animation:load 2.2s ease forwards}@keyframes load{from{width:5%}to{width:100%}}.scan-card ol{list-style:none;padding:0;margin:0;display:flex;justify-content:space-between;font-size:.7rem;color:#a5a89d}.scan-card li.done{color:var(--ink);font-weight:700}.result-view{padding:8px 20px 34px}.result-head{display:flex;gap:15px;align-items:flex-start;margin-bottom:22px}.back-button{width:42px;height:42px;border-radius:14px;border:1px solid var(--line);background:white;font-size:1.3rem;cursor:pointer}.eyebrow{text-transform:uppercase;letter-spacing:.11em;font-size:.68rem;font-weight:800;color:var(--muted)}.result-head h2{font-size:1.75rem;line-height:1.15;margin:6px 0 0;letter-spacing:-.04em}.photo-result{height:250px;border-radius:28px;background:linear-gradient(145deg,#72866a,#263c2c);position:relative;overflow:hidden;display:grid;place-items:center}.result-plate{transform:scale(.72) rotate(-8deg)}.tag{position:absolute;background:#fff;padding:7px 10px;border-radius:9px;font-size:.7rem;font-weight:800;box-shadow:0 5px 18px #0004}.tag-one{left:15%;top:27%}.tag-two{right:10%;top:52%}.tag-three{right:17%;top:17%}.tag:after{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#4cc078;margin-left:6px}.tag.danger:after{background:var(--red)}.tag.caution:after{background:#e4a91b}.verdict-list{margin:12px 0}.verdict-list article{display:grid;grid-template-columns:58px 1fr 20px;gap:12px;align-items:center;padding:15px 4px;border-bottom:1px solid var(--line)}.verdict-list h3{margin:0;font-size:1rem}.verdict-list p{margin:4px 0 0;color:var(--muted);font:400 .83rem "Gowun Dodum"}.verdict-list button{border:0;background:none;font-size:1.4rem;color:var(--muted)}.status{font-size:.68rem;font-weight:800;text-align:center;padding:8px 5px;border-radius:9px}.status.ok{background:var(--mint);color:#146238}.status.no{background:#ffd7d0;color:#a32618}.status.maybe{background:#fff0bd;color:#755900}.decision-source{border-radius:16px;background:#e8e9e1;padding:13px 15px;display:grid;grid-template-columns:70px 1fr;gap:3px;font-size:.7rem}.decision-source span,.decision-source small{color:var(--muted)}.decision-source small{grid-column:2}.primary-button{width:100%;border:0;border-radius:16px;background:var(--ink);color:white;padding:17px;margin-top:18px;font:800 .95rem Manrope;cursor:pointer}.unclear-symbol{width:112px;height:112px;border-radius:50%;background:var(--amber);display:grid;place-items:center;margin:0 auto 25px;font-size:3rem}.unclear-view h2{font-size:2.5rem;margin-top:8px}.tips{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:30px 0}.tips span{background:white;border:1px solid var(--line);border-radius:14px;padding:14px 6px;font-size:.7rem;font-weight:700}dialog{border:0;padding:0;border-radius:28px 28px 0 0;width:min(100%,520px);max-width:none;margin:auto auto 0;background:var(--paper)}dialog::backdrop{background:#10130ea6;backdrop-filter:blur(4px)}dialog form{padding:18px 24px 24px}.dialog-handle{width:40px;height:4px;border-radius:99px;background:#c2c5ba;margin:0 auto 25px}dialog h2{font-size:1.7rem;margin:5px 0 22px}dialog label{display:block;font-size:.75rem;font-weight:700;color:var(--muted);margin:14px 0}select{width:100%;margin-top:6px;padding:15px;border:1px solid var(--line);border-radius:14px;background:white;font:700 .9rem Manrope}.text-button{width:100%;border:0;background:none;padding:14px;color:var(--muted);font-weight:700}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,120px);background:var(--ink);color:white;padding:12px 18px;border-radius:12px;font-size:.8rem;transition:.3s;z-index:30}.toast.show{transform:translate(-50%,0)}@media(max-height:700px){.camera-stage{min-height:520px}.camera-copy h1{font-size:1.9rem}.camera-copy{bottom:112px}}@media(min-width:760px){body{padding:30px}.app-shell{min-height:calc(100vh - 60px);border-radius:32px}.camera-stage{height:calc(100vh - 204px);min-height:620px}}

.camera-stage:after{z-index:1;pointer-events:none}
.camera-feed{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#18251d}
.live-badge.ready span{background:#43bd70}
.live-badge.error span{background:#fb644b}
.switch-camera-button{width:44px;height:44px;border-radius:14px;background:#ffffff22;font-size:1.45rem;backdrop-filter:blur(8px)}
.switch-camera-button:disabled{cursor:not-allowed;opacity:.5}
.shutter:disabled{cursor:not-allowed;opacity:.5}
.captured-photo{display:none;position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.photo-result.has-capture .captured-photo{display:block}
.photo-result.has-capture .result-plate{display:none}
