/* Family Food V22 - scoped loyalty wheel + point-of-sale scanning dialog. */
.ff22-wheel-page{max-width:1280px;margin-inline:auto;padding-bottom:22px}
.ff22-wheel-intro{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:0 0 18px}
.ff22-wheel-intro h1{font-size:clamp(24px,4vw,38px);margin:8px 0 3px;letter-spacing:-.045em}
.ff22-wheel-intro p{margin:0;color:var(--ff-muted,#806b5c)}
.ff22-wheel-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);gap:20px;align-items:start}
.ff22-wheel-card,.ff22-rewards-card{border:1px solid var(--ff-border,#eeded1);background:var(--ff-paper,#fff);border-radius:26px;box-shadow:0 18px 55px rgba(44,21,9,.055);min-width:0;overflow:hidden;position:relative}
.ff22-wheel-card{display:flex;flex-direction:column;align-items:center;padding:24px 18px 26px;background:radial-gradient(ellipse at center,#ffeed5,#fff9ee 64%,#fff 100%);isolation:isolate}
.ff22-glow{position:absolute;width:120px;height:120px;border-radius:50%;background:#ffbb45;filter:blur(54px);opacity:.25;pointer-events:none}.ff22-glow-1{left:-65px;top:55px}.ff22-glow-2{right:-65px;bottom:60px}
.ff22-wheel-caption{text-align:center;position:relative;z-index:2;display:grid;gap:4px}.ff22-wheel-caption span{font-size:clamp(12px,2vw,16px);font-weight:950;letter-spacing:.07em;color:#e92921}.ff22-wheel-caption strong{font-size:13px;color:#725442}
.ff22-wheel-frame{position:relative;width:min(100%,488px);max-width:100%;aspect-ratio:1;margin:12px auto 0;flex:0 0 auto;min-width:0;isolation:isolate}
.ff22-wheel-svg{display:block;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;aspect-ratio:1!important;overflow:visible!important}
.ff22-pointer{position:absolute;top:-1.5%;left:50%;transform:translateX(-50%);z-index:4;width:12%;height:12%;filter:drop-shadow(0 3px 3px rgba(0,0,0,.25))}
.ff22-pointer span{display:block;width:100%;height:100%;background:#124f3e;clip-path:polygon(0 0,100% 0,50% 95%);border-radius:6px}
.ff22-wheel-controls{display:flex;flex-direction:column;align-items:center;gap:11px;width:100%;position:relative;z-index:2;margin-top:4px}
.ff22-wheel-credit{border:1px solid #eddbc7;border-radius:50px;background:white;padding:9px 22px;color:#32241b;font-size:14px}.ff22-wheel-credit i{color:#f36517;margin-right:7px}
.ff22-spin-button{font-weight:900;font:inherit;font-size:16px;width:min(100%,350px);min-height:52px;border:0;background:#ef5a17;color:white;border-radius:17px;cursor:pointer;box-shadow:0 8px 20px rgba(239,90,23,.22)}.ff22-spin-button:not(:disabled):active{transform:translateY(2px)}.ff22-spin-button:disabled{cursor:not-allowed;background:#a99b91;box-shadow:none}
.ff22-wheel-message{color:#7b6655;text-align:center;font-size:13px;margin:0;min-height:18px}
.ff22-rewards-card{padding:24px}.ff22-rewards-head h2{margin:8px 0;font-size:25px;letter-spacing:-.045em}.ff22-rewards-head p{margin:0 0 16px;color:var(--ff-muted,#8b7265);font-size:14px}
.ff22-odds-box{display:flex;gap:11px;padding:14px;background:#fff4e6;border:1px solid #ffdfbd;border-radius:15px;font-size:12px;line-height:1.5;color:#653817;margin-bottom:16px}.ff22-odds-box i{color:#ed6418;margin-top:2px}
.ff22-reward-list{display:grid;gap:9px}.ff22-reward-row{display:flex;gap:12px;align-items:center;background:var(--ff-soft,#fcf8f4);border-radius:13px;padding:9px 12px;border:1px solid var(--ff-border,#eee1d6)}.ff22-reward-image{width:47px;height:47px;flex:0 0 47px;display:grid;place-items:center;font-size:25px;color:#e52b38;background:#fff0e2;border-radius:12px;overflow:hidden}.ff22-reward-image img{width:100%;height:100%;object-fit:cover}.ff22-reward-row strong{display:block;font-size:14px}.ff22-reward-row small{display:block;color:var(--ff-muted,#806b5c);font-size:11px;line-height:1.7}.ff22-unavailable{opacity:.6}.ff22-wheel-result{border-radius:15px;padding:17px;margin-top:15px;font-weight:800;line-height:1.5}.ff22-wheel-result.win{background:#e4f6e9;color:#14532d}.ff22-wheel-result.lose{background:#fff3e2;color:#7b3f14}
/* POS scanner */
.ff22-pos-scan-trigger{display:inline-flex;align-items:center;gap:8px}
.ff22-scanner-dialog{border:0;background:transparent;max-height:min(94dvh,880px);width:min(94vw,920px);max-width:100%;padding:0;margin:auto;overflow:visible;color:#241b18}
.ff22-scanner-dialog::backdrop{background:rgba(16,13,12,.74);backdrop-filter:blur(7px)}
.ff22-scanner-shell{background:var(--ff-paper,#fff);border-radius:25px;box-shadow:0 30px 100px rgba(0,0,0,.3);overflow:hidden;max-height:94dvh;display:flex;flex-direction:column}
.ff22-scan-head{padding:17px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--ff-border,#ebded6)}.ff22-scan-head strong{display:block;font-size:20px}.ff22-scan-head small{display:block;color:#806c5e;margin-top:3px}.ff22-scan-head button{border:0;border-radius:50%;width:41px;height:41px;font-size:18px;background:#f3e8df;color:#422d1f;cursor:pointer}
.ff22-scan-body{overflow:auto;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(240px,1fr);gap:15px;padding:18px}
.ff22-camera-area{min-width:0}.ff22-camera-window{position:relative;display:grid;place-items:center;overflow:hidden;aspect-ratio:4 / 3;background:#121519;border-radius:18px;max-height:440px;color:#fff}
.ff22-scanner-reader{width:100%;height:100%;position:absolute;inset:0;display:flex;justify-content:center;align-items:center}.ff22-scanner-reader video{object-fit:cover!important;width:100%!important;height:100%!important;max-height:none!important}.ff22-scanner-reader #qr-shaded-region{border-color:transparent!important}
.ff22-camera-placeholder{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:12px;text-align:center;padding:20px;font-size:14px;pointer-events:none}.ff22-camera-placeholder i{font-size:42px;color:#f98e4f}
.ff22-camera-outline{position:absolute;width:64%;max-width:280px;aspect-ratio:1;pointer-events:none;border:2px solid rgba(255,255,255,.25);border-radius:18px;box-shadow:0 0 0 200px rgba(0,0,0,.15)}.ff22-camera-outline::before,.ff22-camera-outline::after{content:'';position:absolute;width:29px;height:29px;border-color:#ff8e41;border-style:solid}.ff22-camera-outline::before{border-width:5px 0 0 5px;top:-3px;left:-3px;border-radius:12px 0 0 0}.ff22-camera-outline::after{border-width:0 5px 5px 0;bottom:-3px;right:-3px;border-radius:0 0 12px 0}
.ff22-scan-line{position:absolute;top:14%;left:9%;right:9%;height:2px;background:#ffae62;box-shadow:0 0 15px 2px #fa7433;animation:ff22-scan-line 2s ease-in-out infinite alternate}@keyframes ff22-scan-line{from{top:15%}to{top:85%}}
.ff22-camera-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.ff22-camera-actions button,.ff22-camera-actions label{border:1px solid #ebd9ce;border-radius:12px;background:var(--ff-paper,#fff);color:inherit;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 12px;font:inherit;font-size:12px;font-weight:750;cursor:pointer}.ff22-camera-actions button:disabled{opacity:.4;cursor:not-allowed}
.ff22-scan-side{border-radius:17px;background:var(--ff-soft,#faf5ef);padding:16px;align-self:stretch;min-width:0}.ff22-scan-result{display:grid;gap:11px}.ff22-scan-result>h3{margin:0;font-size:18px}.ff22-scan-result p{margin:0;font-size:13px;color:var(--ff-muted,#82695c)}.ff22-scan-status{padding:13px;border-radius:12px;background:var(--ff-paper,#fff);font-size:13px;line-height:1.5}.ff22-scan-preview{display:flex;gap:12px;align-items:center;background:var(--ff-paper,#fff);border-radius:14px;padding:11px;border:1px solid var(--ff-border,#e9dccd)}.ff22-scan-preview img{width:66px;height:66px;border-radius:12px;object-fit:cover}.ff22-scan-preview strong{font-size:14px;display:block}.ff22-scan-preview span{font-weight:900;color:#e96314;display:block;margin-top:4px}
.ff22-scan-qty{display:flex;align-items:center;gap:12px;justify-content:space-between}.ff22-scan-qty input{width:90px;min-height:42px;border-radius:10px;border:1px solid #e2c9b8;padding:7px 12px;font-size:16px}
.ff22-scan-btn{border:0;border-radius:13px;min-height:45px;padding:10px 15px;font:inherit;font-size:14px;font-weight:800;cursor:pointer;background:#f66a17;color:#fff}.ff22-scan-btn.secondary{background:#f6e6d7;color:#683616}.ff22-scan-btn:disabled{opacity:.5;cursor:not-allowed}.ff22-scan-btn.wide{width:100%;margin-top:5px}
.ff22-scan-manual{display:flex;gap:7px;margin-top:13px}.ff22-scan-manual input{min-width:0;flex:1;width:100%;border:1px solid #e5d4c6;border-radius:12px;padding:10px;font-size:13px}
@media(max-width:820px){.ff22-wheel-layout{grid-template-columns:minmax(0,1fr)}.ff22-rewards-card{padding:18px}.ff22-scan-body{grid-template-columns:minmax(0,1fr)}.ff22-scanner-dialog{width:min(100%,640px)}.ff22-scanner-shell{max-height:calc(100dvh - 10px);border-radius:19px}.ff22-camera-window{aspect-ratio:16/10;max-height:300px}}
@media(max-width:470px){.ff22-wheel-card{padding:16px 8px 20px}.ff22-wheel-frame{width:100%}.ff22-wheel-caption{padding:0 5px}.ff22-scan-head{padding:14px}.ff22-scan-head strong{font-size:17px}.ff22-scan-body{padding:12px;gap:12px}.ff22-camera-window{aspect-ratio:1.3}.ff22-camera-actions button,.ff22-camera-actions label{flex:1 1 auto}.ff22-scanner-dialog{width:calc(100% - 8px)}.ff22-scanner-shell{border-radius:14px}.ff22-scan-line{animation-duration:2.6s}}
@media(prefers-reduced-motion:reduce){.ff22-scan-line{animation:none;top:50%}}
:root[data-theme='dark'] .ff22-wheel-card{background:#15110e}:root[data-theme='dark'] .ff22-wheel-credit{background:#29211c;color:#fff;border-color:#514031}:root[data-theme='dark'] .ff22-rewards-card{background:#111}:root[data-theme='dark'] .ff22-odds-box{background:#35220f;color:#ffe5c3;border-color:#553817}:root[data-theme='dark'] .ff22-scanner-dialog{color:#f8ede5}:root[data-theme='dark'] .ff22-scan-head button{background:#36291f;color:#fff}
/* Author-level display rules must honor hidden on all modal states. */
.ff22-scanner-dialog [hidden]{display:none!important}
