@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#161a1b;--ink2:#232929;--muted:#777d7c;--paper:#f9f8f4;--white:#fff;--line:#eae9e4;--cyan:#45d8ff;--blue:#1ca9ff;--shadow:0 14px 42px rgba(18,25,26,.065)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#e9eae8;color:var(--ink);font:14px 'DM Sans',sans-serif;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.app{max-width:520px;margin:0 auto;background:var(--paper);min-height:100dvh;padding-bottom:105px;position:relative;box-shadow:0 0 70px #00000009}.top{height:77px;padding:0 23px;display:flex;align-items:center;justify-content:space-between;background:var(--paper)}.logo{font:800 23px Manrope,sans-serif;letter-spacing:-1.65px}.logo i{font-style:normal;color:var(--blue)}.top-actions{display:flex;align-items:center;gap:8px}.round-btn{border:1px solid var(--line);background:var(--white);width:41px;height:41px;border-radius:50%;display:grid;place-items:center;color:var(--ink)}.round-btn svg,.bottom svg,.line-icon{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.intro{padding:31px 24px 28px}.eyebrow{display:block;font-size:10px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:#599ca8}.intro h1,.page-heading{font:800 clamp(36px,9vw,48px)/1.1 Manrope,sans-serif;letter-spacing:-2.5px;margin:13px 0 12px}.intro h1 em,.page-heading em{color:var(--blue);font-style:normal}.intro p,.subtext{font-size:13px;color:#838885;line-height:1.7;margin:0;max-width:340px}.intro-count{display:flex;gap:10px;align-items:center;margin-top:23px;font-size:11px;font-weight:800;color:#606a68}.intro-count b{width:8px;height:8px;background:var(--cyan);border-radius:50%;box-shadow:0 0 0 4px #45d8ff33}.section-row{padding:9px 24px 17px;display:flex;align-items:center;justify-content:space-between;gap:12px}.section-row h2{font:800 16px Manrope;letter-spacing:-.6px;margin:0}.section-row span{font-size:11px;color:#9a9e9a}.section-row a{color:#178db4;font-weight:800;font-size:11px}.cards{display:grid;gap:20px;padding:0 16px}.loyal-card{display:block;border-radius:24px;overflow:hidden;background:#fff;box-shadow:var(--shadow);border:1px solid #eaece9;transition:transform .18s}.loyal-card:active{transform:scale(.985)}.card-photo{height:191px;position:relative;background:linear-gradient(180deg,#1114 6%,#080d0d0d 32%,#080d0dec 100%),var(--photo) center /cover,#26312f;display:flex;flex-direction:column;justify-content:space-between;padding:19px 19px 17px;color:#fff}.card-tags{display:flex;justify-content:space-between;align-items:center}.glass-tag{background:#ffffff28;border:1px solid #ffffff45;backdrop-filter:blur(13px);padding:8px 11px;border-radius:25px;font-size:9px;letter-spacing:.6px;font-weight:800;text-transform:uppercase}.arrow-tag{width:31px;height:31px;border-radius:50%;background:#fff;display:grid;place-items:center;color:#181c1a;font-size:20px;font-weight:500}.card-photo h3{font:800 24px/1.12 Manrope;letter-spacing:-1px;margin:0 0 6px;max-width:310px}.address{font-size:11px;color:#e0e5e3}.card-lower{padding:19px 20px 18px}.card-lower .progress-meta{display:flex;justify-content:space-between;gap:10px;align-items:center}.progress-meta strong{font-size:12px}.progress-meta span{color:#8a908e;font-size:11px}.stamp-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:17px 0 15px}.stamp{aspect-ratio:1;border:1.5px dashed #c9cfce;border-radius:50%;display:grid;place-items:center;color:#b7c0bd;background:#f7f8f6;position:relative}.stamp.filled{border:1px solid var(--cyan);background:var(--cyan);color:#122025;box-shadow:0 4px 12px #45d8ff40}.stamp.filled:before{content:'✳';font-size:25px;line-height:1}.stamp:not(.filled):before{content:'+';font-size:20px;font-weight:400}.reward-strip{border-top:1px solid #efefec;padding-top:13px;display:flex;align-items:center;justify-content:space-between;gap:8px}.reward-strip span{font-size:11px;color:#6c7470}.reward-strip strong{color:#202726}.reward-strip i{font-style:normal;color:#0799c7;font-size:13px;font-weight:800}.guest-notice{margin:26px 16px 7px;border-radius:19px;background:#202727;color:#fff;padding:17px 18px;display:flex;gap:12px;align-items:flex-start}.guest-notice .spark{color:var(--cyan);font-size:25px;line-height:1}.guest-notice p{margin:0;color:#bfc8c5;font-size:11px;line-height:1.7}.guest-notice strong{color:white}.guest-notice button{background:none;border:0;color:var(--cyan);font-size:inherit;font-weight:800;padding:0}.bottom{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,520px);z-index:20;display:grid;grid-template-columns:repeat(3,1fr);height:75px;padding-bottom:env(safe-area-inset-bottom);background:#ffffffed;border-top:1px solid #edece8;backdrop-filter:blur(16px);box-shadow:0 -8px 25px #0c18160a}.bottom a,.bottom button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-size:10px;font-weight:700;color:#999f9c;background:transparent;border:0}.bottom .active{color:#141c1f}.bottom .active svg{color:#0baeda}.bottom .active:after{content:'';position:absolute;bottom:0;background:var(--cyan);height:3px;width:34px;border-radius:4px 4px 0 0}.detail-cover{height:282px;display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(180deg,#10191880,#0b111100 38%,#0b1010ef),var(--photo) center/cover,#232c2b;color:white;padding:21px 23px 23px}.detail-cover .back{width:38px;height:38px;border:1px solid #ffffff77;background:#ffffff26;color:white;backdrop-filter:blur(12px);border-radius:50%;display:grid;place-items:center;font-size:22px}.detail-cover h1{font:800 32px/1.08 Manrope;letter-spacing:-1.5px;margin:9px 0}.detail-cover .eyebrow{color:var(--cyan)}.detail-cover p{margin:0;font-size:12px;color:#e2e5e1}.detail-body{padding:26px 17px}.detail-card{padding:23px 20px;background:white;border:1px solid #eeeee9;border-radius:24px;margin-bottom:16px;box-shadow:var(--shadow)}.detail-head{display:flex;justify-content:space-between;gap:12px;align-items:start}.detail-head h2{font:800 25px Manrope;letter-spacing:-1px;margin:6px 0 5px}.detail-head p{font-size:11px;color:#878d89;margin:0}.progress-circle{width:58px;height:58px;border:5px solid #45d8ff33;border-top-color:var(--cyan);border-right-color:var(--cyan);border-radius:50%;display:grid;place-items:center;font:800 14px Manrope;flex-shrink:0}.detail-card .stamp-row{margin:24px 0 21px;gap:10px}.reward-panel{border-radius:17px;background:#f2f8f8;padding:16px 17px;display:flex;gap:12px;align-items:center}.gift-icon{display:grid;place-items:center;width:37px;height:37px;background:#d9f5ff;border-radius:12px;font-size:19px}.reward-panel small{display:block;color:#8a9a9a;font-size:10px;margin-bottom:3px}.reward-panel strong{font-size:12px}.reward-panel .chevron{margin-left:auto;color:#239fc0}.detail-card h3{font:800 16px Manrope;letter-spacing:-.4px;margin:0 0 13px}.how-row{display:flex;gap:12px;padding:13px 0;border-bottom:1px solid #f0f0ed;align-items:center}.how-row:last-child{border:0}.how-number{color:#12a7d3;font:800 11px Manrope}.how-row strong{display:block;font-size:12px}.how-row small{font-size:11px;color:#909692;line-height:1.5;display:block;margin-top:3px}.review{background:#1c2527;color:#fff}.review .eyebrow{color:var(--cyan)}.review h3{font:800 21px Manrope;letter-spacing:-.7px;line-height:1.25;margin:10px 0}.review p{font-size:11px;color:#b8c6c7;line-height:1.7}.primary{display:flex;justify-content:center;align-items:center;width:100%;border:0;background:var(--cyan);border-radius:13px;font-size:12px;font-weight:800;padding:15px 13px;color:#132025;margin-top:16px}.places-intro{padding:29px 24px 20px}.places-intro h1{margin:11px 0 10px}.searchbox{display:flex;gap:11px;align-items:center;background:#fff;border:1px solid #eaeae5;border-radius:15px;padding:0 15px;height:51px;margin:0 17px 14px}.searchbox svg{color:#8f9996}.searchbox input{width:100%;border:0;outline:0;background:transparent;font-size:12px}.chips{display:flex;gap:8px;overflow:auto;padding:0 17px 20px;scrollbar-width:none}.chip{padding:10px 15px;border-radius:30px;border:1px solid #e6e9e5;background:#fff;color:#737c79;font-size:11px;font-weight:800;white-space:nowrap}.chip.active{background:#202728;color:var(--cyan);border-color:#202728}.city-select{display:flex;align-items:center;gap:9px;margin:0 17px 24px;padding:13px 15px;border-radius:13px;background:#eff0ec;font-size:11px;font-weight:800}.city-select select{border:0;background:transparent;flex:1;outline:0;color:#28312e}.place-list{padding:0 16px;display:grid;gap:18px}.place-list .card-photo{height:213px}.place-list .card-lower{padding:15px 20px}.place-list .card-lower p{margin:0;color:#818883;font-size:11px;line-height:1.5}.place-list .card-lower strong{color:#159ebf}.empty{text-align:center;padding:40px 20px;color:#898f8c;font-size:12px}.drawer-backdrop{position:fixed;inset:0;background:#101716a6;backdrop-filter:blur(5px);z-index:30;opacity:0;pointer-events:none;transition:.25s}.drawer{position:fixed;top:0;bottom:0;left:max(0px,calc((100% - 520px)/2));width:min(85vw,350px);background:#f9f8f4;z-index:31;padding:24px 20px;transform:translateX(-110%);transition:transform .3s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column}.drawer.open{transform:translateX(0)}.drawer-backdrop.open{opacity:1;pointer-events:auto}.drawer-top{background:#1f2627;border-radius:19px;padding:21px 17px;color:white;min-height:134px;display:flex;align-items:flex-start;justify-content:space-between}.drawer-top .logo{font-size:25px}.drawer-close{border:1px solid #ffffff55;border-radius:50%;width:33px;height:33px;background:#ffffff12;color:white;font-size:20px}.profile{display:flex;align-items:center;gap:12px;background:#fff;padding:16px;border-radius:17px;margin:16px 0 30px}.avatar{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;background:var(--cyan);font-weight:800}.profile strong{display:block;font-size:13px}.profile small{font-size:10px;color:#9ba29f}.menu-label{font-size:10px;font-weight:800;color:#a3a8a4;letter-spacing:1.6px;margin:0 0 12px 9px}.menu-link{display:flex;align-items:center;gap:14px;padding:16px 12px;border-radius:13px;font-size:12px;font-weight:800}.menu-link.active{background:#e2f8ff;color:#088fb9}.menu-link i{margin-left:auto;font-style:normal;font-size:17px;font-weight:400}.menu-footer{margin-top:auto;text-align:center;font-size:9px;color:#9da3a0;line-height:2}.toast{position:fixed;bottom:91px;left:50%;transform:translate(-50%,18px);width:max-content;max-width:90%;padding:13px 17px;background:#202829;color:white;border-radius:13px;font-size:12px;opacity:0;z-index:50;pointer-events:none;transition:.2s;box-shadow:0 12px 35px #0002}.toast.show{opacity:1;transform:translate(-50%,0)}.footer{font-size:10px;color:#a2a6a0;padding:25px 20px 8px;text-align:center}body.night{--paper:#151b1c;--ink:#f4f7f5;--white:#242b2c;--line:#354044;--shadow:0 14px 42px #0002}body.night .app,body.night .top{background:var(--paper)}body.night .detail-card,body.night .loyal-card,body.night .searchbox,body.night .profile,body.night .chip,body.night .bottom{background:#242b2c;color:#eef2f0;border-color:#354044}body.night .reward-panel,body.night .city-select,body.night .stamp:not(.filled){background:#303b3d}body.night .guest-notice{background:#273335}body.night .drawer{background:#161d1e}body.night .card-photo{color:white}body.night .reward-strip strong,body.night .card-lower strong{color:#eef2f0}body.night .stamp.filled{color:#132025}body.night .round-btn{background:#253031;color:white}body.night .menu-link.active{background:#203a40}body.night .searchbox input,body.night .city-select select{color:white}body.night .detail-cover{color:white}@media(min-width:700px){.app{border-left:1px solid #e5e5e2;border-right:1px solid #e5e5e2}}@media(max-width:350px){.stamp-row{gap:6px}.intro h1{font-size:35px}.card-photo h3{font-size:21px}}
/* V3 — natywny rytm PWA i cele pieczątkowe */
body[data-page="home"] .section-row{padding-top:19px}
.guest-notice{margin:14px 16px 7px;padding:13px 15px;border-radius:17px;align-items:center}
.guest-notice p{font-size:11px}
.guest-notice .spark{font-size:21px}
.detail-cover{height:198px;padding-bottom:18px}
.detail-cover h1{font-size:27px}
.detail-body{padding:0 16px 22px}
.detail-body .guest-notice{margin:15px 0 12px}
.quick-links{display:grid;gap:9px;margin-bottom:16px}
.quick-link{min-height:66px;display:flex;align-items:center;gap:12px;background:#fff;border:1px solid #e8ebe8;border-radius:17px;padding:12px 15px;box-shadow:0 5px 20px #13202006}
.quick-icon{width:36px;height:36px;display:grid;place-items:center;flex-shrink:0;border-radius:12px;background:#e4f8ff;color:#0098c7;font-size:20px}
.quick-link strong,.quick-link small{display:block}.quick-link strong{font-size:12px}.quick-link small{font-size:11px;margin-top:4px;color:#7c898b}
.quick-arrow{margin-left:auto;color:#009ecc;font-size:21px}
#jak-to-dziala,#opinia{scroll-margin-top:18px}
.detail-card .stamp-row{margin:17px 0 23px}
.detail-card .small-label{font:700 12px 'DM Sans',sans-serif;letter-spacing:0}
.goals-heading{margin:21px 0 12px;font-size:10px;letter-spacing:1.7px;font-weight:800;color:#7d9198}
.reward-goals{display:grid;gap:9px}
.reward-goal{background:linear-gradient(125deg,#292d2f,#17191b);color:white;border-radius:23px;padding:17px 16px;min-height:119px;display:flex;flex-direction:column;justify-content:space-between}
.goal-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.goal-target{font:800 clamp(16px,4.5vw,20px) Manrope,sans-serif;letter-spacing:-.8px}
.goal-stamp{border:2px dashed #45d8ff;color:#45d8ff;width:43px;height:43px;display:grid;place-items:center;border-radius:50%;font-size:23px}
.claim-btn{margin-left:auto;background:#45d8ff;color:#10191e;border:0;border-radius:999px;padding:11px 13px;font-size:10px;font-weight:800;white-space:nowrap}
.goal-left{font-size:10px;font-weight:800;margin-left:auto;white-space:nowrap}
.goal-prize{font-size:13px;font-weight:700;margin-top:10px}
.goal-divider{text-align:center;font-size:14px;font-weight:800;color:#a5b0b5;line-height:1}
.review .accent{color:#45d8ff}
body.night .quick-link{background:#242b2c;border-color:#354044;color:#f3f5f3}
body.night .quick-icon{background:#1e424b}
@media(max-width:390px){.goal-target{font-size:16px}.goal-stamp{width:35px;height:35px}.claim-btn{padding:9px 10px;font-size:9px}.reward-goal{padding:15px 12px}}

/* V4 — PWA first: card visible, education immediately actionable */
.detail-cover{height:126px;padding:10px 18px 12px;background-position:center 40%}
.detail-cover .back{height:29px;width:29px;font-size:18px}
.detail-cover h1{font-size:22px;margin:2px 0 3px;line-height:1.07}
.detail-cover .eyebrow{font-size:8px;letter-spacing:1.5px}
.detail-cover p{font-size:10px}
.detail-body{padding:0 12px 22px}
.detail-body .guest-notice{margin:10px 0 9px;padding:10px 12px;border-radius:14px}
.detail-body .guest-notice p{font-size:10px;line-height:1.45}
.detail-body .guest-notice .spark{font-size:19px}
.stamp-instruction{display:flex;align-items:center;gap:11px;background:#e9f9ff;border:1px solid #ccefff;border-radius:15px;padding:11px 13px;margin-bottom:11px;color:#172b31}
.instruction-symbol{width:34px;height:34px;flex:none;display:grid;place-items:center;background:#c9f1ff;border-radius:10px;color:#008eb8;font-size:24px}
.instruction-content{display:flex;flex-direction:column;gap:3px;min-width:0}
.instruction-content strong{font-weight:800;font-size:12px}
.instruction-content span{font-size:11px;line-height:1.4;color:#36545b}
.instruction-content em{font-size:10px;font-weight:800;color:#078fb7;font-style:normal}
#detailprogress{padding:17px 16px 16px;margin-bottom:12px}
.detail-head h2{font-size:23px;margin:4px 0 2px}
.detail-head .eyebrow{font-size:9px}
.detail-head p{font-size:10px}
.progress-circle{height:47px;width:47px;border-width:4px;font-size:12px}
#detailprogress .stamp-row{margin:14px 0 17px;gap:8px}
#detailprogress .stamp.filled:before{font-size:20px}
#detailprogress .stamp:not(.filled):before{font-size:17px}
.goals-heading{margin-bottom:10px}
#detailprogress .reward-goal{min-height:106px;border-radius:18px}
#detailprogress .reward-goals{gap:7px}
#opinia{margin-bottom:12px}
#jak-to-dziala{scroll-margin-top:14px}
#opinia{scroll-margin-top:14px}
.places-filters{padding-top:13px}
.places-filters .city-select{position:relative;margin:0 16px 11px;padding:10px 15px;min-height:69px;border-radius:17px;border:1px solid #d9e9eb;background:#e7f7fc;display:grid;grid-template-columns:28px 1fr 18px;grid-template-rows:18px 26px;gap:0 8px;align-items:center}
.places-filters .city-mark{grid-row:1/3;grid-column:1;color:#078eb7;font-size:25px}
.places-filters .city-label{grid-row:1;grid-column:2;font-size:10px;letter-spacing:1.2px;color:#50808d;font-weight:800}
.places-filters .city-select select{grid-column:2;grid-row:2;font:800 19px Manrope,sans-serif;letter-spacing:-.6px;color:#192c32;width:100%;appearance:none;cursor:pointer}
.places-filters .city-chevron{grid-row:1/3;grid-column:3;color:#108db0;font-size:22px;pointer-events:none}
.places-filters .searchbox{margin-bottom:12px;height:52px}
.places-filters .searchbox input{font-size:14px}
.places-filters .chips{padding-bottom:17px}
body.night .stamp-instruction{background:#1d3941;border-color:#30616f;color:#effbff}
body.night .instruction-content span{color:#bdd5db}
body.night .places-filters .city-select{background:#1d3941;border-color:#30616f}
body.night .places-filters .city-select select{color:white}
@media(max-width:370px){.detail-cover{height:119px}.stamp-instruction{padding:9px 10px}.instruction-content span{font-size:10px}.detail-body .guest-notice p{font-size:9px}}

/* V5 — ikona lokalizacji wyrównana w polu miasta */
.city-mark{display:inline-flex;align-items:center;justify-content:center}.city-mark svg{width:22px;height:22px;stroke-width:1.8}.menu-link svg{flex-shrink:0}

/* V6: zebrana pieczątka — grafitowa miniatura stempla Stamplifier */
.stamp.filled:before{content:""!important;display:block;width:72%;height:72%;background:url("../img/stamp-graphite.svg") center / contain no-repeat;filter:drop-shadow(0 2px 2px rgba(0,0,0,.14))}
.goal-stamp{font-size:0!important;background-image:url("../img/stamp-graphite.svg");background-position:center;background-repeat:no-repeat;background-size:65% 65%}

/* V7 — nowoczesny, turkusowy znak pieczątki na ciemnym kole.
   Jeden identyczny gradient dla koła, boksów nagród i sekcji Google. */
:root {
  --stamp-dark-gradient: linear-gradient(125deg, #292d2f 0%, #17191b 100%);
  --stamp-cyan-gradient: linear-gradient(135deg, #78ecff 0%, #45d8ff 48%, #1ca9ff 100%);
}
.stamp.filled {
  background: var(--stamp-dark-gradient) !important;
  border: 1px solid #313d40 !important;
  box-shadow: 0 4px 12px rgba(15,24,28,.14) !important;
}
.stamp.filled::before {
  content: "" !important;
  display: block;
  width: 62%;
  height: 62%;
  background: url("../img/stamp-turquoise.svg") center / contain no-repeat !important;
  filter: none !important;
}
.reward-goal,
.review,
#opinia {
  background: var(--stamp-dark-gradient) !important;
}
.goal-stamp {
  background: var(--stamp-dark-gradient) url("../img/stamp-turquoise.svg") center / 67% 67% no-repeat !important;
  border: 1px solid #41545a !important;
  color: var(--cyan);
}
/* In dark mode, maintain visible contrast of collected stamps */
body.night .stamp.filled {border-color:#375059 !important}


/* V8 — wierny czarny znak stempla z przesłanego wzoru, mocny gradient turkusowy. */
:root {
 --stamp-cyan-v8: linear-gradient(145deg, #95f5ff 0%, #45d8ff 34%, #19bceb 66%, #087ead 100%);
}
.stamp.filled {
 background:var(--stamp-cyan-v8) !important;
 border:1px solid #64e8fa !important;
 box-shadow: inset 0 1px 1px rgba(255,255,255,.5),0 5px 14px rgba(20,183,233,.17) !important;
}
.stamp.filled::before {
 content:"" !important;
 display:block;
 width:55%;height:70%;
 background:url("../img/stamp-black-exact.png") center / contain no-repeat !important;
 filter:none !important;
}
.reward-goal {
 background:linear-gradient(135deg,#ffffff 0%,#f2faff 55%,#e7f7fc 100%) !important;
 color:#162226 !important;
 border:1px solid #dbeef3;
 box-shadow:0 5px 15px rgba(25,78,89,.035);
}
.goal-stamp {
 border:1px solid #68e6f7 !important;
 background:var(--stamp-cyan-v8) !important;
 display:grid;place-items:center;position:relative;
 box-shadow: inset 0 1px 1px #ffffff66;
}
.goal-stamp::after {
 content:"";display:block;width:55%;height:70%;
 background:url("../img/stamp-black-exact.png") center / contain no-repeat;
}
.goal-left {color:#576a70}
.goal-prize {color:#243339}
.goal-divider{color:#809299}
/* Keep Google bonus distinctly dark as in previous approved design. */
.review,#opinia {background:var(--stamp-dark-gradient) !important;color:white !important}
body.night .reward-goal {background:linear-gradient(135deg,#eafaff,#d4f0f8) !important;color:#162226 !important;}
body.night .goal-prize,body.night .goal-left{color:#243339}
body.night .stamp.filled{border-color:#64e8fa !important}


/* V9 — strefa pieczątek ciemna, wyraźnie zakończona zaokrąglonym dołem.
   Nagrody na jasnym tle w osobnych grafitowych boksach. */
:root{--v9-dark:linear-gradient(140deg,#222a2d 0%,#151b1e 62%,#101416 100%);--v9-cyan:linear-gradient(145deg,#8af3ff 0%,#45d8ff 48%,#0ba9e6 100%)}
/* Karta z listy: zdjęcie i pieczątki stanowią jeden ciemny blok */
.loyal-card{background:transparent;border:0;overflow:hidden}
.loyal-card .card-lower{padding:0;background:#fff}
.loyal-card .card-lower > p{padding:15px 20px;margin:0}
.loyal-card .dark-stamp-zone{background:var(--v9-dark);padding:19px 18px 18px;color:#fff;border-radius:0 0 23px 23px}
.loyal-card .card-photo{border-radius:23px 23px 0 0}
.loyal-card .dark-stamp-zone .progress-meta strong{color:#fff}
.loyal-card .dark-stamp-zone .progress-meta span{color:#a8b8bc}
.loyal-card .dark-stamp-zone .stamp-row{margin:15px 0 0}
.loyal-card .home-reward-zone{background:#fff;padding:14px 15px 17px}
.home-reward-box{border-radius:17px;background:var(--v9-dark);color:#fff;padding:15px 17px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.home-reward-box small{display:block;color:#76def8;letter-spacing:1.5px;font-size:9px;font-weight:800;margin-bottom:5px}
.home-reward-box strong{font:800 14px Manrope,sans-serif;color:#fff}
.home-reward-arrow{height:32px;width:32px;border-radius:50%;display:grid;place-items:center;background:#ffffff13;color:#45d8ff;font-size:20px}
/* Ekran lokalu: gradient wyłącznie pod stanem pieczątek. */
#detailprogress{padding:0;background:transparent;border:0;box-shadow:none;overflow:visible}
#detailprogress .detail-dark{background:var(--v9-dark);padding:19px 16px 18px;border-radius:23px;color:#fff}
#detailprogress .detail-head h2{color:#fff}
#detailprogress .detail-head h2 span[style]{color:#a6b6bd!important}
#detailprogress .detail-head p{color:#a4b1b4}
#detailprogress .detail-head .eyebrow{color:#45d8ff}
#detailprogress .progress-circle{color:#fff;border-color:#324a53;border-top-color:#45d8ff;border-right-color:#45d8ff}
#detailprogress .detail-dark .stamp-row{margin:18px 0 0;gap:8px}
#detailprogress .rewards-light{padding:18px 3px 3px;background:var(--paper)}
#detailprogress .goals-heading{margin:0 4px 12px;color:#566970}
#detailprogress .reward-goal{background:var(--v9-dark)!important;color:#fff!important;border:1px solid #273337!important;box-shadow:0 6px 18px #1423270d!important}
#detailprogress .reward-goal .goal-prize,#detailprogress .reward-goal .goal-left{color:#d5e1e4!important}
#detailprogress .reward-goal .goal-stamp{background:var(--v9-cyan)!important;border:1px solid #77e4f7!important}
#detailprogress .reward-goal .goal-divider{color:#889da4}
#detailprogress .goal-divider{color:#89999d}
/* Wypełnione: turkusowe koło i czarna, wybrana sylwetka. */
.stamp.filled{background:var(--v9-cyan)!important;border:1px solid #73e3f6!important;box-shadow:0 4px 14px #04a9db22!important}
.stamp.filled::before{background:url('../img/stamp-black-exact.png') center/contain no-repeat!important;filter:none!important}
.dark-stamp-zone .stamp:not(.filled){background:#ffffff08;color:#677a80;border-color:#5b686b}
.dark-stamp-zone .stamp:not(.filled)::before{color:#819095}
body.night #detailprogress .rewards-light{background:#202829}
body.night .loyal-card .home-reward-zone{background:#202829}
@media(max-width:370px){.loyal-card .dark-stamp-zone{padding:16px 13px}.loyal-card .dark-stamp-zone .stamp-row{gap:7px}}

/* V10 — compact informational footers and consistent hints */
.loyal-card .card-lower{background:#fff}
.card-info-footer{display:flex;align-items:center;gap:5px;flex-wrap:wrap;min-height:55px;background:#fff;padding:12px 15px 14px;font-size:10.5px;line-height:1.5;color:#727d7a}
.card-info-footer .footer-item{display:inline-flex;align-items:center;gap:4px;min-width:0}
.card-info-footer .footer-item strong{color:#222a2a;font-weight:800}
.card-info-footer .footer-mark{color:#747f7b;font-size:12px;margin-right:2px}
.card-info-footer .footer-dot{color:#9ea7a2;font-weight:800;padding:0 1px}
.card-info-footer .footer-link{margin-left:auto;color:#13a7ce;font-size:17px}
.place-list .loyal-card .card-info-footer{padding:14px 16px}
/* Both guidance bubbles share the same text sizes and typographic hierarchy. */
.guest-notice,.stamp-instruction{display:flex;align-items:center;gap:12px;padding:12px 13px;border-radius:15px}
.guest-notice p,.instruction-content{margin:0;font-size:11px;line-height:1.55}
.guest-notice p strong,.instruction-content strong{font-size:12px;line-height:1.4;font-weight:800;display:inline-block;margin-bottom:2px}
.guest-notice .spark,.instruction-symbol{width:34px;height:34px;flex:0 0 34px;display:grid;place-items:center;border-radius:10px}
.guest-notice .spark{background:#304345;color:#45d8ff}
.instruction-symbol{background:#c9f1ff;color:#008eb8}
.bubble-icon{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.instruction-content{gap:0}
.instruction-content span{font-size:11px;line-height:1.55}
.instruction-content em{display:block;font-size:11px;line-height:1.4;margin-top:2px}
.detail-body .guest-notice p,.detail-body .guest-notice p strong{font-size:11px}
.detail-body .guest-notice p strong{font-size:12px}
body.night .card-info-footer{background:#242b2c;color:#b5c1bd}
body.night .card-info-footer .footer-item strong{color:#edf2f0}
@media(max-width:370px){.detail-body .guest-notice p,.instruction-content span{font-size:11px}}

/* V11: zbiorcze karty bez zaokrąglenia na styku ciemnej i jasnej sekcji */
.cards .loyal-card .dark-stamp-zone,
.place-list .loyal-card .dark-stamp-zone {
  border-radius: 0 !important;
}

/* V11: zmniejszamy wyłącznie grafikę stempla do 70%, zachowując rozmiar kółka */
.stamp.filled::before {
  transform: scale(.7);
  transform-origin: center center;
}

/* V12: circles 10% smaller; keep grid column dimensions and stamped graphic ratio */
.stamp-row .stamp { width:90%; justify-self:center; }
/* V20: header gradient is defined in the final .top rule below */
.top .brand-image {display:flex;align-items:center;justify-content:flex-start;flex:0 0 auto;line-height:0}
.top .brand-image img {display:block;width:130px;max-width:100%;height:auto;max-height:51px;object-fit:contain;object-position:left center}
.top .round-btn,body.night .top .round-btn {background:#171d20!important;border:1px solid #354148!important;color:#f1f8fa!important;}
.top .round-btn:hover {border-color:#45d8ff!important;color:#45d8ff!important;}

/* V13: genuine supplied distressed checkmark artwork, cropped with alpha outside circle. */
.stamp.filled,body.night .stamp.filled {background:#000!important;border:0!important;box-shadow:none!important;overflow:hidden}
.stamp.filled::before,#detailprogress .stamp.filled::before {content:""!important;display:block!important;position:absolute!important;inset:0!important;width:100%!important;height:100%!important;background:url("../img/stamplifier-check-original.png") center/100% 100% no-repeat!important;transform:none!important;filter:none!important}
.goal-stamp,#detailprogress .reward-goal .goal-stamp {background:#000 url("../img/stamplifier-check-original.png") center/100% 100% no-repeat!important;border:0!important;overflow:hidden}
.goal-stamp::after{content:none!important}


/* V14 — jednolity ciemny gradient dla wskazanych sekcji (nie dla znaczków). */
:root {
  --v9-dark: linear-gradient(140deg,#222a2d 0%,#151b1e 62%,#101416 100%);
}
.cards .loyal-card .dark-stamp-zone,
.place-list .loyal-card .dark-stamp-zone,
#detailprogress .detail-dark,
#detailprogress .reward-goal,
body.night .cards .loyal-card .dark-stamp-zone,
body.night .place-list .loyal-card .dark-stamp-zone,
body.night #detailprogress .detail-dark,
body.night #detailprogress .reward-goal {
  background: var(--v9-dark) !important;
}

/* V16 — alpha artwork: no backing fill for collected stamp circles. */
.stamp.filled,
body.night .stamp.filled {
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
}

/* V16 — consistent inset, typography and icon alignment on detail page notices. */
.detail-body .guest-notice,
.detail-body .stamp-instruction {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px !important;
  border-radius: 15px;
  box-sizing: border-box;
}
.detail-body .guest-notice p,
.detail-body .instruction-content,
.detail-body .instruction-content span,
.detail-body .instruction-content em {
  font-size: 11px !important;
  line-height: 1.55 !important;
}
.detail-body .guest-notice p strong,
.detail-body .instruction-content strong {
  font-size: 12px !important;
  line-height: 1.4 !important;
}
.detail-body .guest-notice .spark,
.detail-body .instruction-symbol {
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
}

/* V17 — explicit contextual actions, no decorative diagonal arrows */
.card-tags{align-items:flex-start;gap:8px}
.card-top-action{margin-left:auto;min-height:35px;display:inline-flex;align-items:center;justify-content:center;padding:9px 12px;border-radius:999px;border:1px solid #ffffff77;background:#fff;color:#182327;font-family:Manrope,sans-serif;font-size:11px;line-height:1.15;font-weight:800;text-decoration:none;box-shadow:0 3px 10px #0002;max-width:62%;text-align:center;cursor:pointer}
.add-card-action{max-width:68%;background:#45d8ff;border-color:#45d8ff;color:#0a2129}
.add-card-action.is-added{background:#ffffffeb;border-color:#ffffff66;color:#2a444a;cursor:default}
.card-info-footer .footer-item{min-width:0}
.card-info-footer .footer-link{display:none!important}
@media(max-width:370px){.card-top-action{padding:8px 9px;font-size:10px}}

/* V20: compact 60px header with left-aligned logo */
.top,body.night .top {
  position:relative;
  background:linear-gradient(120deg, #2d3f45 30%, #151b1e 62%, #101416 100%) !important;
  height:60px;
  padding:0 16px;
}
.top .brand-image {
  position:static;transform:none;
  display:flex;justify-content:flex-start;align-items:center;line-height:0;flex:0 0 auto;
}
.top .brand-image img {width:auto;height:40px;max-height:40px;max-width:155px;object-fit:contain;object-position:center;}
.top .top-actions {margin-left:auto;gap:4px;position:relative;z-index:1;}
.top .round-btn,body.night .top .round-btn {
  width:40px;height:42px;border:0!important;border-radius:9px;
  background:transparent!important;color:#f1f8fa!important;box-shadow:none!important;
}
.top .round-btn:hover,.top .round-btn:focus-visible {background:#ffffff12!important;color:#45d8ff!important;}
@media(max-width:355px){.top .brand-image img{height:34px;max-height:34px}}

/* V22 — calm, white informational surfaces with ink and cyan accents. */
.detail-body .stamp-instruction,
body.night .detail-body .stamp-instruction,
.places-filters .city-select,
body.night .places-filters .city-select {
  background:#fff !important;
  border:1px solid #e5e9e9 !important;
  color:#172226 !important;
  box-shadow:0 4px 18px rgba(20,32,38,.035);
}
.detail-body .stamp-instruction .instruction-content strong,
body.night .detail-body .stamp-instruction .instruction-content strong {
  color:#182327 !important;
}
.detail-body .stamp-instruction .instruction-content span,
body.night .detail-body .stamp-instruction .instruction-content span {
  color:#586568 !important;
}
.detail-body .stamp-instruction .instruction-content em,
body.night .detail-body .stamp-instruction .instruction-content em {
  color:#079fca !important;
}
.detail-body .stamp-instruction .instruction-symbol,
body.night .detail-body .stamp-instruction .instruction-symbol {
  color:#079fca !important;
  background:#e8f8fc !important;
}
.places-filters .city-select .city-label,
body.night .places-filters .city-select .city-label {color:#62757b !important;}
.places-filters .city-select select,
body.night .places-filters .city-select select {color:#172226 !important;}
.places-filters .city-select .city-mark,
.places-filters .city-select .city-chevron,
body.night .places-filters .city-select .city-mark,
body.night .places-filters .city-select .city-chevron {color:#079fca !important;}

/* V23: informacje o zbieraniu i nagrodzie stanowią część graficznej karty.
   Półprzezroczysty pasek zachowuje efekt badge kategorii. */
.cards .loyal-card .dark-stamp-zone {
  border-radius:0 0 23px 23px !important;
  padding-bottom:14px;
}
.cards .loyal-card .dark-stamp-zone .card-glass-info {margin-top:17px;}
.place-list .loyal-card .card-photo {
  border-radius:23px;
  min-height:228px;
  padding-bottom:15px;
}
.place-list .loyal-card .card-lower {display:none;}
.card-glass-info {
  display:flex;align-items:center;justify-content:center;flex-wrap:wrap;
  gap:4px 7px;width:100%;padding:10px 11px;min-height:39px;
  border-radius:13px;
  background:rgba(255,255,255,.13);
  border:1px solid rgba(255,255,255,.25);
  backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);
  color:#edf8fa;text-align:center;font-size:10.5px;line-height:1.45;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
}
.card-glass-info .glass-rule{color:#f2f7f7;}
.card-glass-info .glass-dot{color:#83dff5;font-size:14px;}
.card-glass-info .glass-reward{color:#d9e7eb;}
.card-glass-info strong{color:white;font-weight:800;}
.place-list .card-photo .card-glass-info{margin-top:14px;flex-shrink:0;}
body.night .card-glass-info{background:rgba(255,255,255,.13);color:#edf8fa;}
@media(max-width:365px){.card-glass-info{font-size:10px;padding:9px 8px;gap:3px 5px;}}

/* V24 — szklisty pasek informacji przy dolnej krawędzi zdjęcia.
   Na obu listach glass jest pełnej szerokości, bez bocznych paddingów. */
.cards .loyal-card .card-photo,
.place-list .loyal-card .card-photo {
  position:relative;
  padding-bottom:66px !important;
}
.cards .loyal-card .card-photo {min-height:207px;}
.place-list .loyal-card .card-photo {min-height:238px;}
.cards .loyal-card .card-photo .card-glass-info,
.place-list .loyal-card .card-photo .card-glass-info {
  position:absolute;
  z-index:2;
  left:0;right:0;bottom:0;
  width:100%;
  min-height:43px;
  margin:0 !important;
  padding:11px 14px;
  border-radius:0 !important;
  border-left:0; border-right:0; border-bottom:0;
  background:rgba(40,47,49,.61);
  backdrop-filter:blur(17px);
  -webkit-backdrop-filter:blur(17px);
}
/* Na ekranie Twoje karty pasek oddziela zdjęcie od sekcji pieczątek. */
.cards .loyal-card .card-photo{border-radius:23px 23px 0 0;}
.cards .loyal-card .dark-stamp-zone{padding-top:19px;}
/* Karty na liście Lokale kończą się zaokrągloną krawędzią zdjęcia. */
.place-list .loyal-card .card-photo{overflow:hidden;border-radius:23px !important;}
.place-list .loyal-card .card-photo .card-glass-info{border-radius:0 0 23px 23px !important;}
@media(max-width:365px){
 .cards .loyal-card .card-photo,.place-list .loyal-card .card-photo{padding-bottom:69px !important;}
}

/* V25 — bez górnej kreski glass; identyczne logo w menu i topbarze. */
.cards .loyal-card .card-photo .card-glass-info,
.place-list .loyal-card .card-photo .card-glass-info,
body.night .cards .loyal-card .card-photo .card-glass-info,
body.night .place-list .loyal-card .card-photo .card-glass-info {
  border-top:0 !important;
  box-shadow:none !important;
}
.drawer-top .drawer-brand {display:flex;align-items:center;line-height:0;min-width:0;}
.drawer-top .drawer-brand img {display:block;height:40px;width:auto;max-width:225px;object-fit:contain;object-position:left center;}
@media(max-width:355px){.drawer-top .drawer-brand img{height:36px;max-width:205px;}}


/* V26 — pełne zdjęcie jako tło całej karty; szkło na pieczątkach i nagrodzie.
   Zmiana wyłącznie kart zbiorczych na ekranach Twoje karty / Lokale. */
.cards .loyal-card.full-photo-card,
.place-list .loyal-card.full-photo-card {
  position:relative;
  isolation:isolate;
  overflow:hidden;
  border-radius:24px;
  background:#111b1d !important;
  padding-bottom:0;
}
.cards .full-photo-card::before,
.place-list .full-photo-card::before {
  content:"";
  position:absolute;inset:0;z-index:-1;
  background:
    linear-gradient(180deg,rgba(6,12,15,.28) 0%,rgba(6,12,15,.28) 28%,rgba(6,12,15,.48) 54%,rgba(6,12,15,.74) 100%),
    var(--photo) center center/cover no-repeat;
}
.cards .full-photo-card .card-photo,
.place-list .full-photo-card .card-photo,
body.night .cards .full-photo-card .card-photo,
body.night .place-list .full-photo-card .card-photo {
  background:transparent !important;
  position:static !important;
  border-radius:0 !important;
  height:auto !important;
  min-height:178px !important;
  padding:18px 18px 22px !important;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
}
.cards .full-photo-card .card-photo h3,
.place-list .full-photo-card .card-photo h3 {text-shadow:0 2px 15px rgba(0,0,0,.35)}
.cards .full-photo-card .card-lower,
body.night .cards .full-photo-card .card-lower {
  position:relative;
  background:transparent !important;
  padding:0 12px 64px !important;
}
.cards .full-photo-card .dark-stamp-zone,
body.night .cards .full-photo-card .dark-stamp-zone {
  background:rgba(28,38,42,.47) !important;
  border:1px solid rgba(255,255,255,.17);
  border-radius:18px !important;
  padding:15px 13px 16px !important;
  backdrop-filter:blur(17px) saturate(1.15);
  -webkit-backdrop-filter:blur(17px) saturate(1.15);
  box-shadow:0 8px 22px rgba(0,0,0,.10);
}
.cards .full-photo-card .dark-stamp-zone .progress-meta span {color:#d6e3e5}
.cards .full-photo-card .dark-stamp-zone .stamp:not(.filled){background:rgba(17,26,28,.34);border-color:rgba(255,255,255,.3);color:#d3e0e3}
.cards .full-photo-card .card-photo .card-glass-info,
.place-list .full-photo-card .card-photo .card-glass-info,
body.night .cards .full-photo-card .card-photo .card-glass-info,
body.night .place-list .full-photo-card .card-photo .card-glass-info {
  position:absolute !important;
  left:0;right:0;bottom:0;
  width:100%;min-height:46px;
  margin:0!important;
  padding:12px 13px !important;
  border:0!important;
  border-top:0!important;
  border-radius:0!important;
  color:#fff;
  background:rgba(35,46,50,.48)!important;
  backdrop-filter:blur(22px) saturate(1.2);
  -webkit-backdrop-filter:blur(22px) saturate(1.2);
  box-shadow:none!important;
}
.place-list .full-photo-card .card-photo{min-height:280px!important;padding-bottom:70px!important}
.place-list .full-photo-card .card-lower{display:none!important}
@media(max-width:380px){
  .cards .full-photo-card .dark-stamp-zone{padding:13px 10px 14px!important}
  .cards .full-photo-card .stamp-row{gap:7px}
}
