:root{--navy: #1a2b3c;--navy-soft: #24394d;--cream: #f6f1e7;--cream-deep: #efe9da;--terra: #c96e4f;--terra-deep: #a85738;--gold: #c9a961;--dark: #222222;--gray: #7a7a7a;--light: #e8e2d4;--green: #4a7c59;--red: #b03a2e;--bronze: #b0734f;--silver: #9ca1a8;--gold-tier: #c9a961;--platinum: #4b5c6e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;color:var(--dark);background:var(--cream)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(circle at 0% 0%,rgba(201,110,79,.06),transparent 40%),radial-gradient(circle at 100% 100%,rgba(201,169,97,.05),transparent 40%),var(--cream);background-attachment:fixed}a{color:var(--terra)}button{background:var(--navy);color:var(--cream);border:0;border-radius:999px;padding:.85rem 1.4rem;font-size:1rem;font-weight:600;cursor:pointer;letter-spacing:.01em;transition:transform .1s ease,box-shadow .15s ease,background .15s ease}button:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 6px 18px -8px #1a2b3c73}button:not(:disabled):active{transform:translateY(0)}button:disabled{opacity:.45;cursor:not-allowed}button.terra{background:var(--terra)}button.terra:not(:disabled):hover{background:var(--terra-deep)}button.ghost{background:transparent;color:var(--navy);border:1px solid var(--navy)}.link-button{background:none;border:0;padding:0;color:var(--terra);font-weight:600;cursor:pointer;text-decoration:underline;font-size:inherit}input{font-family:inherit;padding:.85rem 1rem;border-radius:.75rem;border:1px solid var(--light);font-size:1rem;background:#fff;color:var(--dark);transition:border-color .15s ease,outline-color .15s ease}input:focus{outline:2px solid var(--terra);outline-offset:-1px}.app-shell{max-width:480px;margin:0 auto;min-height:100%;padding:1.5rem 1.25rem 6rem}.brand-mark{font-family:-apple-system,BlinkMacSystemFont,Georgia,serif;font-weight:800;letter-spacing:-.02em;color:var(--navy)}.app-header{position:sticky;top:0;z-index:5;background:#f6f1e7eb;-webkit-backdrop-filter:saturate(140%) blur(8px);backdrop-filter:saturate(140%) blur(8px);border-bottom:1px solid var(--light)}.app-header__inner{max-width:480px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:.85rem 1.25rem}.app-header__brand{font-size:1.2rem}.app-header__menu{background:transparent;color:var(--navy);border:1px solid var(--light);border-radius:999px;width:36px;height:36px;padding:0;font-size:1.4rem;line-height:1}.app-header__dropdown{position:absolute;right:1rem;top:100%;margin-top:.5rem;background:#fff;border:1px solid var(--light);border-radius:.85rem;box-shadow:0 12px 32px -16px #1a2b3c59;overflow:hidden;min-width:180px}.app-header__menu-item{display:block;width:100%;text-align:left;background:transparent;color:var(--navy);border:0;border-radius:0;padding:.7rem 1rem;font-weight:500;font-size:.95rem;text-decoration:none;cursor:pointer}.app-header__menu-item+.app-header__menu-item{border-top:1px solid var(--light)}.app-header__menu-item:hover{background:var(--cream)}.tabbar{position:fixed;bottom:0;left:0;right:0;background:var(--navy);display:flex;justify-content:space-around;padding:.7rem 0 calc(.7rem + env(safe-area-inset-bottom));z-index:10;box-shadow:0 -4px 20px -8px #1a2b3c66}.tabbar a{text-decoration:none;color:var(--light);font-size:.78rem;font-weight:600;opacity:.6;display:flex;flex-direction:column;align-items:center;gap:.2rem}.tabbar__icon{font-size:1.2rem;line-height:1}.tabbar a.active{color:var(--gold);opacity:1}.streak-card{background:linear-gradient(150deg,var(--navy),var(--navy-soft));color:var(--cream);border-radius:1.25rem;padding:1.75rem 1.5rem;margin:.5rem 0 1.5rem;box-shadow:0 16px 40px -20px #1a2b3c8c;position:relative;overflow:hidden}.streak-card:before{content:"";position:absolute;inset:0 auto 0 0;width:6px;background:var(--terra)}.streak-card:after{content:"";position:absolute;top:-40%;right:-20%;width:220px;height:220px;background:radial-gradient(circle,rgba(201,169,97,.18),transparent 70%);pointer-events:none}.streak-card--bronze:before{background:var(--bronze)}.streak-card--silver:before{background:var(--silver)}.streak-card--gold:before{background:var(--gold-tier)}.streak-card--platinum:before{background:var(--platinum)}.streak-card .eyebrow{font-size:.7rem;font-weight:700;letter-spacing:.15em;color:var(--terra);text-transform:uppercase}.streak-card .weeks{font-size:4.8rem;font-weight:800;letter-spacing:-.03em;line-height:1;color:var(--cream);margin-top:.5rem}.streak-card .label{color:var(--light);font-size:.95rem;margin-top:.35rem}.streak-card .tier-badge{margin-top:1.1rem;display:inline-flex;align-items:center;gap:.5rem;background:#c9a96126;border:1px solid var(--gold);color:var(--gold);padding:.4rem .85rem;border-radius:999px;font-weight:700;font-size:.85rem;letter-spacing:.05em}.streak-card .timer{margin-top:1rem;font-size:.85rem;color:var(--light);opacity:.85}.tier-ladder{margin:1rem 0 1.5rem}.ladder{list-style:none;margin:0;padding:0;background:#fff;border:1px solid var(--light);border-radius:1rem;overflow:hidden}.ladder-step{display:flex;gap:1rem;align-items:flex-start;padding:1rem 1.1rem;border-bottom:1px solid var(--cream-deep);position:relative;opacity:.55;transition:opacity .2s ease,background .15s ease}.ladder-step:last-child{border-bottom:0}.ladder-step.reached{opacity:1}.ladder-step.current{background:linear-gradient(180deg,rgba(201,110,79,.07),transparent)}.tier-dot{width:14px;height:14px;border-radius:999px;margin-top:.4rem;flex-shrink:0;box-shadow:0 0 0 3px #ffffff80,0 0 0 4px var(--light)}.tier-dot--bronze{background:var(--bronze)}.tier-dot--silver{background:var(--silver)}.tier-dot--gold{background:var(--gold-tier)}.tier-dot--platinum{background:var(--platinum)}.ladder-info{flex:1}.ladder-name{font-weight:700;color:var(--navy);display:flex;align-items:center;gap:.6rem;font-size:1rem}.ladder-here{background:var(--terra);color:#fff;font-style:normal;font-size:.6rem;letter-spacing:.12em;font-weight:700;padding:.15rem .5rem;border-radius:999px}.ladder-meta{font-size:.78rem;color:var(--gray);margin-top:.15rem}.ladder-perk{font-size:.85rem;color:var(--dark);margin-top:.3rem;font-style:italic}.tier-progress{margin:1rem 0 1.5rem;background:#fff;border:1px solid var(--light);padding:1rem 1.25rem;border-radius:.85rem}.tier-progress h3{margin:0 0 .4rem;font-size:.7rem;letter-spacing:.15em;color:var(--terra);text-transform:uppercase}.tier-progress .next{color:var(--navy);font-weight:700}.tier-progress .bar{height:6px;background:var(--light);border-radius:3px;margin-top:.6rem;overflow:hidden}.tier-progress .bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--terra),var(--gold));transition:width .4s ease}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin:1rem 0 1.5rem}.stat{background:#fff;border:1px solid var(--light);border-radius:.85rem;padding:.85rem .75rem;text-align:center}.stat-label{font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gray);font-weight:600}.stat-value{font-size:1.7rem;font-weight:800;color:var(--navy);margin-top:.3rem;line-height:1}.stat-value span{font-size:.85rem;color:var(--gray);font-weight:600;margin-left:.15rem}.stat-value--small{font-size:1rem}.restaurant-cards{display:flex;flex-direction:column;gap:.85rem;margin-top:.5rem}.restaurant-card{display:flex;gap:.9rem;background:#fff;border:1px solid var(--light);border-radius:1rem;padding:1rem;transition:transform .12s ease,box-shadow .15s ease,border-color .15s ease}.restaurant-card:hover{transform:translateY(-1px);box-shadow:0 10px 24px -16px #1a2b3c59;border-color:var(--cream-deep)}.restaurant-card__icon{font-size:1.8rem;width:52px;height:52px;background:var(--cream);border-radius:.85rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}.restaurant-card__body{flex:1;min-width:0;display:flex;flex-direction:column}.restaurant-card__top{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem}.restaurant-card__top h3{margin:0;font-size:1rem;color:var(--navy);font-weight:700}.restaurant-card__meta{display:flex;gap:.35rem;flex-wrap:wrap;font-size:.78rem;color:var(--gray);margin-top:.25rem}.restaurant-card__meta>span:not(:last-child):after{content:"·";margin-left:.35rem;color:var(--light)}.restaurant-card__neighborhood{background:var(--cream);color:var(--navy);padding:.05rem .45rem;border-radius:999px;font-weight:600}.restaurant-card__address{margin:.45rem 0 0;font-size:.8rem;color:var(--dark)}.restaurant-card__footer{display:flex;justify-content:space-between;align-items:center;margin-top:.65rem;gap:.5rem}.link-pill{font-size:.78rem;font-weight:600;color:var(--terra);text-decoration:none;border:1px solid var(--terra);padding:.25rem .75rem;border-radius:999px;transition:background .15s ease,color .15s ease}.link-pill:hover{background:var(--terra);color:#fff}.badge{font-size:.65rem;font-weight:700;letter-spacing:.08em;padding:.2rem .55rem;border-radius:999px;white-space:nowrap;flex-shrink:0}.badge--founding{background:#c9a9612e;color:#8a7332;border:1px solid rgba(201,169,97,.5)}.filter-chips{display:flex;gap:.45rem;flex-wrap:wrap;margin:1rem 0 .5rem}.chip{background:#fff;color:var(--navy);border:1px solid var(--light);border-radius:999px;padding:.35rem .85rem;font-size:.82rem;font-weight:600;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.chip:not(:disabled):hover{box-shadow:none;transform:none}.chip--active{background:var(--navy);color:var(--cream);border-color:var(--navy)}.pending-code-card{background:var(--cream);border:2px dashed var(--terra);border-radius:1rem;padding:2rem 1.5rem;text-align:center;margin:1rem 0}.pending-code-card .code{font-size:4.5rem;font-weight:800;letter-spacing:.4em;color:var(--navy);font-family:-apple-system,BlinkMacSystemFont,Menlo,monospace;margin:.5rem 0 .75rem}.pending-code-card .hint{color:var(--gray);font-size:.85rem}.code-copy{margin-top:1rem;font-size:.85rem;padding:.5rem 1rem}.checkin-success-card{display:flex;align-items:center;gap:1rem;background:#fff;border:1px solid var(--light);border-radius:1rem;padding:.9rem 1rem;margin-top:.5rem}.checkin-success-card__icon{font-size:1.8rem;width:48px;height:48px;background:var(--cream);border-radius:.7rem;display:flex;align-items:center;justify-content:center}.checkin-success-card strong{color:var(--navy);font-size:1.05rem}.next-steps{list-style:none;counter-reset:step;padding:0;margin:1.25rem 0}.next-steps li{counter-increment:step;position:relative;padding:.75rem 0 .75rem 2.4rem;font-size:.9rem;border-bottom:1px solid var(--light)}.next-steps li:last-child{border-bottom:0}.next-steps li:before{content:counter(step);position:absolute;left:0;top:.65rem;width:1.7rem;height:1.7rem;background:var(--terra);color:#fff;border-radius:999px;display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700}.next-steps strong{color:var(--navy)}.signup-hero{text-align:center;padding:1.5rem 0 .5rem;position:relative}.signup-hero__sparkle{font-size:1.5rem;color:var(--gold);letter-spacing:.4em;margin-bottom:.25rem;opacity:.6}.signup-hero__title{font-size:3.4rem;margin:0;line-height:1}.signup-hero__tag{color:var(--terra);font-style:italic;font-size:1.15rem;margin:.5rem 0 0;font-weight:600}.signup-hero__sub{color:var(--gray);font-size:.95rem;margin:1rem 0 0;line-height:1.5}.how-it-works{margin-top:2rem}.steps{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.75rem}.steps li{display:flex;gap:1rem;align-items:flex-start;background:#fff;border:1px solid var(--light);border-radius:.85rem;padding:.85rem 1rem}.steps li strong{color:var(--navy);font-size:.95rem;display:block}.steps li p{margin:.2rem 0 0;font-size:.85rem;color:var(--gray);line-height:1.4}.step-num{flex-shrink:0;width:28px;height:28px;background:var(--terra);color:#fff;border-radius:999px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem}.tier-preview{margin-top:2rem}.tier-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem;margin:.5rem 0 .75rem}.tier-pill{background:#fff;border:1px solid var(--light);border-radius:.7rem;padding:.6rem .4rem;text-align:center;display:flex;flex-direction:column;gap:.15rem;position:relative}.tier-pill:before{content:"";display:block;width:28px;height:4px;border-radius:2px;margin:0 auto .2rem}.tier-pill.tier-bronze:before{background:var(--bronze)}.tier-pill.tier-silver:before{background:var(--silver)}.tier-pill.tier-gold:before{background:var(--gold-tier)}.tier-pill.tier-platinum:before{background:var(--platinum)}.tier-pill span{font-size:.7rem;color:var(--gray);font-weight:700;letter-spacing:.05em;text-transform:uppercase}.tier-pill b{font-size:1.25rem;color:var(--navy);font-weight:800}.tier-pill i{font-size:.65rem;color:var(--gray);font-style:normal}.signup-form-card{margin-top:2rem;background:#fff;border:1px solid var(--light);border-radius:1rem;padding:1.25rem 1.1rem;box-shadow:0 12px 32px -24px #1a2b3c59}.signup-form{display:flex;flex-direction:column;gap:.6rem;margin-top:.5rem}h1{font-size:1.6rem;margin:.25rem 0 1.25rem;color:var(--navy)}h2{font-size:.7rem;color:var(--terra);font-weight:700;margin:1.75rem 0 .5rem;text-transform:uppercase;letter-spacing:.15em}.muted{color:var(--gray)}.small{font-size:.82rem}.center{text-align:center}.restaurant-row{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-bottom:1px solid var(--light);text-decoration:none;color:var(--dark)}.restaurant-row .meta{font-size:.8rem;color:var(--gray);margin-top:.2rem}.restaurant-row button{padding:.5rem .9rem;font-size:.85rem}.portal-shell{max-width:540px;margin:0 auto;padding:2rem 1.5rem;min-height:100vh;background:var(--navy);color:var(--cream)}.portal-shell h1,.portal-shell h2{color:var(--gold)}.portal-shell input{background:var(--navy-soft);border-color:var(--navy-soft);color:var(--cream)}.portal-shell input:focus{outline-color:var(--gold)}.portal-shell button{background:var(--terra)}.portal-shell button.ghost{color:var(--gold);border-color:var(--gold)}.portal-result{background:var(--navy-soft);border-radius:1rem;padding:1.5rem;margin-top:1.5rem;border-left:4px solid var(--gold)}.portal-result.ok{border-left-color:var(--green)}.portal-result.bad{border-left-color:var(--red)}.portal-result h3{color:var(--gold);margin:0 0 .5rem;font-size:1.1rem}.error{color:var(--red);margin-top:.5rem}
