
:root{
  --ink:#2b1719; --ink-soft:#3a2023; --wine:#5c2b2e;
  --brick:#B4605B; --brick-hover:#9c4d49;
  --rose:#c9827a; --blush:#f2cfc6; --blush-soft:#f7e2db;
  --sand:#fbf5f1; --gold:#e3b567;
  --text-dark:#2b1719; --text-muted:#8a6a63; --text-light:#f6e8e2;
  --line:rgba(43,23,25,0.12); --line-light:rgba(246,232,226,0.18);
  --max:1180px; --radius:16px;
  --font-head:'Poppins',sans-serif; --font-body:'Work Sans',sans-serif;
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
html{scroll-behavior:smooth; -webkit-text-size-adjust:100%;}
@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms !important; transition-duration:.01ms !important;}}
html,body{overflow-x:hidden; width:100%;}
body{margin:0; background:var(--sand); color:var(--text-dark); font-family:var(--font-body); -webkit-font-smoothing:antialiased;}
button,a{touch-action:manipulation;}
button{-webkit-appearance:none; appearance:none; font-family:inherit; cursor:pointer;}
h1,h2,h3,h4{font-family:var(--font-head); margin:0; font-weight:700; line-height:1.15; overflow-wrap:break-word; word-break:break-word; hyphens:auto;}
a{color:inherit; text-decoration:none;}
p{margin:0 0 1em;}
img{max-width:100%; display:block;}
.wrap{max-width:var(--max); margin:0 auto; padding:0 24px;}
.eyebrow{font-size:12px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--rose);}
.eyebrow.on-light{color:var(--brick);}
em{font-style:normal; color:var(--gold);}
:focus-visible{outline:3px solid var(--brick); outline-offset:3px; border-radius:4px;}
.skip-link{position:absolute; left:8px; top:-60px; background:var(--ink); color:#fff; padding:10px 16px; border-radius:8px; z-index:300; transition:top .2s; font-family:var(--font-head); font-size:14px;}
.skip-link:focus{top:8px;}

.btn{display:inline-flex; align-items:center; gap:8px; padding:13px 26px; font-size:14.5px; font-weight:600; border-radius:24px; border:2px solid transparent; min-height:44px; transition:all .2s ease;}
.btn-primary{background:var(--brick); color:#fff;}
.btn-ghost-dark{background:transparent; border-color:var(--line-light); color:var(--text-light);}
.btn-ghost-light{background:transparent; border-color:var(--brick); color:var(--brick);}
@media (hover:hover) and (pointer:fine){
  .btn-primary:hover{background:var(--brick-hover);}
  .btn-ghost-dark:hover{border-color:var(--gold); color:var(--gold);}
  .btn-ghost-light:hover{background:var(--brick); color:#fff;}
}
.btn:active{transform:scale(.97);}
.btn-row{display:flex; gap:14px; flex-wrap:wrap;}
.btn-small{padding:10px 18px; font-size:13.5px; min-height:40px;}

header{position:sticky; top:0; z-index:200; background:var(--ink);}
.top-bar{display:flex; align-items:center; justify-content:space-between; padding:10px 24px; max-width:var(--max); margin:0 auto; gap:16px;}
.brand{display:flex; align-items:center; gap:12px; background:none; border:none; padding:0;}
.brand-static{display:flex; align-items:center; gap:10px;}
.brand .mark, .brand-static .mark{width:36px; height:36px; border-radius:50%; background:var(--brick); display:flex; align-items:center; justify-content:center; color:var(--text-light); flex-shrink:0; overflow:hidden;}
.brand .mark svg, .brand-static .mark svg{width:20px; height:20px;}
.brand .mark img, .brand-static .mark img{width:100%; height:100%; object-fit:cover; border-radius:50%; display:block;}
.mark-lg{width:52px !important; height:52px !important;}
.brand .word, .brand-static .word{font-family:var(--font-head); font-weight:700; font-size:19px; color:var(--text-light);}
nav.tabs{display:flex; gap:4px;}
.tab-pill{background:none; border:none; color:var(--text-light); opacity:.72; font-size:14px; font-weight:500; padding:10px 16px; border-radius:20px; transition:all .2s ease; white-space:nowrap;}
.tab-pill.active{opacity:1; background:var(--brick); color:#fff;}
@media (hover:hover) and (pointer:fine){ .tab-pill:hover{opacity:1; background:rgba(246,232,226,0.08);} }
.header-actions{display:flex; align-items:center; gap:8px; flex-shrink:0;}
.accedi-btn-wrap{
  position:relative; display:flex; align-items:center; gap:7px; color:#fff;
  font-family:var(--font-head); font-weight:600; font-size:13.5px;
  padding:9px 15px; border:1.5px solid rgba(255,255,255,.5); border-radius:20px;
  min-height:40px; background:transparent; cursor:pointer;
}
@media (hover:hover) and (pointer:fine){ .accedi-btn-wrap:hover{border-color:#fff; background:rgba(255,255,255,.08);} }
.accedi-btn-wrap:active{transform:scale(.97);}
.accedi-btn-wrap svg{width:16px;height:16px;}
.bsport-hidden-mount{position:absolute; width:1px; height:1px; overflow:hidden; opacity:0; pointer-events:none;}
@media(max-width:1000px){ .accedi-label{display:none;} .accedi-btn-wrap{padding:9px 11px;} }
.menu-btn{display:none; background:none; border:none; padding:11px; min-width:44px; min-height:44px; align-items:center; justify-content:center; flex-direction:column;}
.menu-btn span{display:block; width:22px; height:2px; background:var(--text-light); margin:4px 0; pointer-events:none;}
@media (max-width:960px){
  nav.tabs{display:none;}
  .menu-btn{display:flex;}
  .quick-grid{grid-template-columns:repeat(3,1fr);}
}
@media (max-width:420px){
  .quick-grid{grid-template-columns:repeat(3,1fr); gap:8px;}
  .quick-card{padding:10px 4px;}
  .quick-card .qt{font-size:10px;}
}
.mobile-tabs{display:none; flex-direction:column; background:var(--ink); border-top:1px solid var(--line-light); max-height:70vh; overflow-y:auto;}
.mobile-tabs.open{display:flex;}
.mobile-tabs a{display:block; background:none; border:none; color:var(--text-light); text-align:left; padding:14px 24px; font-size:15px; border-bottom:1px solid var(--line-light); width:100%; min-height:48px;}
.mobile-tabs a:active{background:rgba(246,232,226,0.1);}
.mobile-tabs a[aria-current="page"]{color:var(--rose);}

.quick-launch{background:var(--ink-soft); border-top:1px solid var(--line-light); border-bottom:1px solid var(--line-light);}
.quick-grid{max-width:var(--max); margin:0 auto; padding:14px 24px; display:grid; grid-template-columns:repeat(6,1fr); gap:10px;}
.quick-card{
  background:rgba(246,232,226,0.06); border:1px solid var(--line-light); border-radius:10px;
  padding:12px 8px; text-align:center; color:var(--text-light); transition:all .2s ease;
  min-height:44px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px;
}
.quick-card svg{width:18px;height:18px;}
.quick-card .qt{font-size:11px; font-weight:600;}
@media (hover:hover) and (pointer:fine){ .quick-card:hover{background:var(--brick); border-color:var(--brick);} }
.quick-card:active{background:var(--brick); border-color:var(--brick);}
.quick-card[aria-current="page"]{background:var(--brick); border-color:var(--brick);}
@media(max-width:1100px){ .quick-grid{grid-template-columns:repeat(3,1fr);} }

main{min-height:60vh;}

.hero-band{background:var(--ink); color:var(--text-light); padding:64px 0 54px; position:relative;}
.hero-band-photo{background-size:cover; background-position:center; padding:96px 0 76px;}
.hero-band h1{font-size:clamp(30px,5vw,50px); max-width:760px; color:var(--text-light);}
@media(max-width:420px){ .hero-band h1{font-size:clamp(26px,7.5vw,34px);} }
.hero-band p.lede{max-width:560px; margin-top:16px; font-size:15.5px; line-height:1.7; color:var(--blush-soft);}
.hero-band .eyebrow{margin-bottom:14px; display:inline-block;}
.hero-lotus-corner{position:absolute; top:0; right:0; width:220px; height:220px; opacity:.16; color:var(--gold); pointer-events:none; overflow:hidden;}
.hero-lotus-corner svg{width:100%; height:100%;}
@media(max-width:700px){.hero-lotus-corner{width:140px; height:140px;}}

.section{padding:56px 0;}
.section-head{margin-bottom:36px; max-width:680px;}
.section-head h2{font-size:clamp(24px,3.2vw,34px); margin-top:8px;}
@media(max-width:420px){ .section-head h2{font-size:clamp(21px,6.5vw,26px);} }
.section-head p{margin-top:14px; font-size:15px; line-height:1.7; color:var(--text-muted);}
.small-print{font-size:12.5px; color:var(--text-muted); max-width:64ch; margin-top:14px;}

.lotus-divider{display:flex; justify-content:center; padding:4px 0 12px;}
.lotus-divider svg{width:44px; height:44px; color:var(--rose); opacity:.7;}

.meaning{display:grid; grid-template-columns:0.85fr 1.15fr; gap:48px; align-items:center;}
.meaning-visual{aspect-ratio:1/1; border-radius:var(--radius); background:linear-gradient(160deg,var(--wine),var(--ink) 120%); display:flex; align-items:center; justify-content:center; color:var(--gold); overflow:hidden; position:relative; box-shadow:0 18px 40px -20px rgba(43,23,25,.45);}
.meaning-visual img{width:100%; height:100%; object-fit:cover; display:block;}
.img-tint{position:absolute; inset:0; background:linear-gradient(155deg, rgba(92,43,46,.32) 0%, rgba(43,23,25,.05) 45%, rgba(227,181,103,.14) 100%); pointer-events:none;}
.meaning p.kanji{display:flex; align-items:center; gap:8px; font-size:13px; color:var(--rose); letter-spacing:.08em; margin-bottom:8px; font-weight:600;}
.meaning p.kanji svg{width:20px; height:20px; color:var(--gold);}
.meaning h2{font-size:clamp(24px,3.2vw,34px);}
@media(max-width:420px){ .meaning h2{font-size:clamp(21px,6.5vw,26px);} }
.meaning p{margin-top:14px; font-size:15px; line-height:1.75; color:var(--text-muted);}
@media (max-width:860px){.meaning{grid-template-columns:1fr;}}

.pillars{display:grid; grid-template-columns:repeat(3,1fr); gap:18px;}
.pillars-2col{display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:36px;}
.pillar{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:28px 24px;}
.pillar .picon{width:42px; height:42px; border-radius:50%; background:var(--blush-soft); display:flex; align-items:center; justify-content:center; margin-bottom:18px; color:var(--brick);}
.pillar .picon svg{width:20px;height:20px;}
.pillar h3{font-size:17px; margin-bottom:8px;}
.pillar p{font-size:14px; color:var(--text-muted); line-height:1.65; margin:0;}
@media (max-width:820px){.pillars,.pillars-2col{grid-template-columns:1fr;}}

.journey{display:flex; flex-wrap:wrap; gap:0; margin-top:32px;}
.stage{flex:1 1 140px; text-align:center; padding:14px 8px; position:relative;}
.stage:not(:last-child)::after{content:''; position:absolute; top:32px; right:-4px; width:calc(100% - 44px); height:1px; background:var(--line);}
.stage .circle{width:56px; height:56px; margin:0 auto 12px; border-radius:50%; display:flex; align-items:center; justify-content:center; position:relative; z-index:1;}
.stage .circle svg{width:27px; height:27px;}
.stage h4{font-size:14px; margin-bottom:4px;}
.stage span.sub{font-size:11.5px; color:var(--text-muted); line-height:1.4; display:block;}
.stage:nth-child(1) .circle{background:var(--sand); border:1.5px solid var(--blush); color:var(--brick);}
.stage:nth-child(2) .circle{background:var(--blush-soft); color:var(--brick);}
.stage:nth-child(3) .circle{background:var(--blush); color:var(--brick);}
.stage:nth-child(4) .circle{background:var(--rose); color:#fff;}
.stage:nth-child(5) .circle{background:var(--brick); color:#fff;}
.stage:nth-child(6) .circle{background:var(--ink); color:var(--gold);}
@media (max-width:780px){.stage:not(:last-child)::after{display:none;}}

.classes-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:16px;}
.class-card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; transition:transform .25s ease, box-shadow .25s ease;}
@media (hover:hover) and (pointer:fine){ .class-card:hover{transform:translateY(-5px); box-shadow:0 20px 40px -22px rgba(43,23,25,.35);} .class-card:hover .class-card-media img{transform:scale(1.07);} }
.class-card-media{aspect-ratio:4/3; overflow:hidden; background:var(--blush-soft); position:relative;}
.class-card-media img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s ease;}
.img-fade-bottom{position:absolute; left:0; right:0; bottom:0; height:55%; background:linear-gradient(180deg, rgba(43,23,25,0) 0%, rgba(43,23,25,.28) 100%); pointer-events:none;}
.class-card-body{padding:20px 18px;}
.class-card .tag{font-size:11px; text-transform:uppercase; letter-spacing:.1em; font-weight:600; color:var(--rose); margin-bottom:12px; display:block;}
.class-card h3{font-size:18px; margin-bottom:6px;}
.class-card .disc{font-size:12px; color:var(--text-muted); margin-bottom:10px; font-weight:500;}
.class-card p{font-size:13px; line-height:1.6; color:var(--text-muted); margin:0;}
@media (max-width:900px){.classes-grid{grid-template-columns:1fr 1fr;}}
@media (max-width:560px){.classes-grid{grid-template-columns:1fr;}}

.tabs-widget .tab-buttons{display:flex; gap:8px; margin-bottom:20px; flex-wrap:wrap;}
.tab-btn{font-family:var(--font-head); font-weight:600; font-size:14px; padding:10px 20px; min-height:44px; border-radius:20px; border:2px solid var(--brick); background:transparent; color:var(--brick);}
.tab-panel-intro{font-size:14px; color:var(--text-muted); margin-bottom:16px;}
.tab-btn.is-active{background:var(--brick); color:#fff;}

.bsport-frame{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:20px; min-height:160px;}

.contact-layout{display:grid; grid-template-columns:1fr 1fr; gap:36px; align-items:flex-start;}
.contact-info-grid{display:flex; flex-direction:column; gap:12px;}
.contact-item{display:flex; align-items:center; gap:14px; background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px;}
.ci-icon{width:40px;height:40px;border-radius:50%;background:var(--blush-soft);display:flex;align-items:center;justify-content:center;color:var(--brick);flex-shrink:0;}
.ci-icon svg{width:18px;height:18px;}
.contact-item strong{display:block; font-family:var(--font-head); font-size:14px; margin-bottom:2px;}
.ci-body{flex:1; min-width:0;}
.ci-body span{font-size:13.5px; color:var(--text-muted);}
@media(max-width:820px){.contact-layout{grid-template-columns:1fr;}}
.spotify-card{
  margin-top:0; border-radius:var(--radius); overflow:hidden; box-shadow:0 12px 28px -16px rgba(43,23,25,.35);
}
.spotify-embed{display:block; border-radius:var(--radius);}

.dove-grid{display:grid; grid-template-columns:1fr 1fr; gap:44px;}
.dove-block{padding:18px 0; border-top:1px solid var(--line);}
.dove-block .label{font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:var(--brick); font-weight:700; margin-bottom:8px;}
.dove-block .val{font-size:15.5px; line-height:1.6;}
.map-link{display:inline-flex; gap:8px; margin-top:12px; font-size:13px; font-weight:600; color:var(--brick); border-bottom:1px solid var(--brick); padding-bottom:2px;}
.map-embed{border-radius:var(--radius); overflow:hidden; min-height:320px; height:400px; box-shadow:0 18px 40px -20px rgba(43,23,25,.4); background:var(--blush-soft); z-index:1;}
.hasu-map-pin span{
  display:block; width:30px; height:30px; border-radius:50%;
  background:var(--brick); border:3px solid #fff; box-shadow:0 4px 10px -2px rgba(43,23,25,.5);
  position:relative;
}
.hasu-map-pin span::after{
  content:''; position:absolute; inset:8px; border-radius:50%; background:var(--gold);
}
.hasu-map-popup{display:flex; flex-direction:column; gap:6px; min-width:180px; font-family:var(--font-body);}
.hasu-map-popup img{width:100%; height:90px; object-fit:cover; border-radius:8px; margin-bottom:4px;}
.hasu-map-popup strong{font-family:var(--font-head); font-size:14px; color:var(--ink);}
.hasu-map-popup span{font-size:12.5px; color:var(--text-muted);}
.hasu-map-popup a{font-size:12.5px; font-weight:600; color:var(--brick); text-decoration:underline;}
.leaflet-popup-content-wrapper{border-radius:12px;}
.dove-photo{border-radius:var(--radius); overflow:hidden; margin-top:20px; position:relative; box-shadow:0 18px 40px -20px rgba(43,23,25,.4); aspect-ratio:4/3;}
.dove-photo img{width:100%; height:100%; object-fit:cover; display:block;}
@media (max-width:780px){.dove-grid{grid-template-columns:1fr;}}

/* floating WhatsApp chat widget — bottom-left, safe-area aware, never overlaps content */
.wa-widget{
  position:fixed; left:18px; bottom:calc(18px + env(safe-area-inset-bottom));
  z-index:150; display:flex; flex-direction:column; align-items:flex-start; gap:12px;
}
.wa-float{
  width:56px; height:56px; border-radius:50%; border:none; cursor:pointer; flex-shrink:0;
  background:#25D366; color:#fff; display:flex; align-items:center; justify-content:center;
  box-shadow:0 10px 24px -8px rgba(0,0,0,.45); transition:transform .2s ease;
}
.wa-float svg{width:28px; height:28px;}
@media (hover:hover) and (pointer:fine){ .wa-float:hover{transform:scale(1.08);} }
.wa-float:active{transform:scale(.95);}
.wa-panel{
  width:300px; max-width:calc(100vw - 36px); background:#fff; border-radius:18px;
  box-shadow:0 24px 48px -16px rgba(43,23,25,.45); overflow:hidden;
}
.wa-panel-header{
  background:var(--ink); color:#fff; padding:14px 14px 14px 12px;
  display:flex; align-items:center; gap:10px;
}
.wa-panel-avatar{
  width:34px; height:34px; border-radius:50%; background:#25D366; color:#fff; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
}
.wa-panel-avatar svg{width:18px; height:18px;}
.wa-panel-heading{flex:1; display:flex; flex-direction:column; gap:1px; min-width:0;}
.wa-panel-heading strong{font-family:var(--font-head); font-size:14px;}
.wa-panel-heading span{font-size:11.5px; color:var(--blush-soft); opacity:.85;}
.wa-panel-close{
  background:none; border:none; color:#fff; opacity:.7; font-size:20px; line-height:1;
  cursor:pointer; padding:4px 6px; flex-shrink:0;
}
.wa-panel-close:hover{opacity:1;}
.wa-panel-body{padding:14px; display:flex; flex-direction:column; gap:10px; background:var(--sand);}
.wa-panel-bubble{
  background:#fff; border-radius:12px; padding:10px 12px; font-size:13px; line-height:1.5;
  color:var(--text-dark); margin:0; box-shadow:0 4px 10px -6px rgba(43,23,25,.2);
}
.wa-panel-input{
  width:100%; border:1px solid var(--line); border-radius:10px; padding:10px 12px;
  font-family:var(--font-body); font-size:13.5px; resize:none; background:#fff; color:var(--text-dark);
}
.wa-panel-input:focus{outline:2px solid #25D366; outline-offset:1px;}
.wa-panel-send{
  display:flex; align-items:center; justify-content:center; gap:8px;
  background:#25D366; color:#fff; border:none; border-radius:24px; padding:11px 16px;
  font-family:var(--font-head); font-weight:600; font-size:13.5px; cursor:pointer; min-height:40px;
}
.wa-panel-send svg{width:16px; height:16px;}
@media (hover:hover) and (pointer:fine){ .wa-panel-send:hover{background:#1fb958;} }
@media(max-width:420px){ .wa-panel{width:calc(100vw - 36px);} }

footer{background:var(--ink); color:var(--blush-soft); padding:44px 0 28px;}
.spotify-banner{margin-bottom:36px; border-radius:var(--radius); overflow:hidden;}
.foot-grid{display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:32px;}
footer h4{font-size:12px; text-transform:uppercase; letter-spacing:.1em; color:var(--gold); font-weight:700; margin-bottom:14px;}
footer ul{list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:8px;}
footer li a{font-size:13.5px; background:none; border:none; padding:0; color:var(--blush-soft); text-align:left;}
@media (hover:hover) and (pointer:fine){ footer li a:hover{color:var(--gold);} }
footer p.desc{font-size:13.5px; line-height:1.6; max-width:300px; opacity:.85;}
.foot-bottom-row{margin-top:32px; padding-top:20px; border-top:1px solid var(--line-light); font-size:11.5px; opacity:.65; display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;}
.foot-legal-links{display:flex; align-items:center; gap:8px;}
.foot-legal-links a, #cookie-prefs-link{background:none;border:none;color:inherit;text-decoration:underline;cursor:pointer;font-size:inherit;padding:0;}
@media (max-width:820px){.foot-grid{grid-template-columns:1fr 1fr; gap:24px;}}
@media (max-width:520px){.foot-grid{grid-template-columns:1fr;}}

.legal-content{max-width:760px;}
.legal-content h2{font-size:19px; margin:1.6em 0 .5em;}
.legal-content h2:first-child{margin-top:0;}
.legal-content p, .legal-content li{color:var(--text-muted); font-size:14.5px; line-height:1.7;}
.legal-content ul{padding-left:20px; margin:0 0 1em;}
.legal-footnote{font-size:10.5px; line-height:1.6; color:var(--text-muted); opacity:.75; margin-top:40px; padding-top:20px; border-top:1px solid var(--line); max-width:70ch;}
