/* Sanctuary Partner Perks — front-end styles
   Brand atoms (sp-*) mirror the Sanctuary theme's own design tokens so the
   portal matches the rest of the site. Portal-specific layout uses the
   spp- prefix to avoid clashing with anything else on the page. */

.spp-root{
	--spp-cream:#efe0d1; --spp-cream-2:#e6d5c4; --spp-dark:#393534;
	--spp-brown:#a06a4a; --spp-brown-lt:#cdbcaa; --spp-line:rgba(57,53,52,.18);
	--spp-display:'Cinzel',serif; --spp-editorial:'Cormorant Garamond',serif; --spp-ui:'Jost',sans-serif;
	--spp-ease:cubic-bezier(.16,1,.3,1);
	font-family:var(--spp-ui);
	color:var(--spp-dark);
	max-width:1080px;
	margin:0 auto;
	padding:clamp(28px,5vw,56px) clamp(20px,5vw,32px) 64px;
}
.spp-root *{box-sizing:border-box;}
.spp-root img{max-width:100%;display:block;}
.spp-root a{color:inherit;text-decoration:none;cursor:pointer;}
.spp-root button{font:inherit;border:none;background:none;color:inherit;cursor:pointer;}

/* brand atoms */
.spp-root .sp-eyebrow{font-family:var(--spp-ui);font-size:.7rem;font-weight:500;letter-spacing:.26em;text-transform:uppercase;color:var(--spp-brown);display:inline-flex;align-items:center;gap:14px;margin:0 0 18px;}
.spp-root .sp-eyebrow::before{content:"";width:36px;height:1px;background:currentColor;display:inline-block;}
.spp-root .sp-display{font-family:var(--spp-display);font-weight:400;letter-spacing:.03em;line-height:1.1;margin:0;color:var(--spp-dark);}
.spp-root .sp-display em{font-family:var(--spp-editorial);font-style:italic;font-weight:400;color:var(--spp-brown);letter-spacing:0;font-size:1.08em;}
.spp-root .sp-h3{font-family:var(--spp-display);font-size:1.02rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--spp-dark);margin:0 0 8px;}
.spp-root .sp-lede{font-family:var(--spp-editorial);font-size:1.15rem;font-style:italic;color:var(--spp-brown);line-height:1.5;margin:0;}
.spp-root .sp-body{font-family:var(--spp-ui);font-size:.95rem;color:var(--spp-dark);line-height:1.75;margin:0 0 16px;}
.spp-root .sp-body:last-child{margin-bottom:0;}
.spp-root .sp-btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;background:var(--spp-dark);color:var(--spp-cream);font-size:.72rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;padding:15px 26px;border:1px solid var(--spp-dark);transition:.35s var(--spp-ease);}
.spp-root .sp-btn:hover{background:var(--spp-brown);border-color:var(--spp-brown);}
.spp-root .sp-btn--ghost{background:transparent;color:var(--spp-dark);border-color:var(--spp-dark);}
.spp-root .sp-btn--ghost:hover{background:var(--spp-dark);color:var(--spp-cream);}
.spp-root .sp-arrowlink{font-size:.68rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--spp-dark);display:inline-flex;align-items:center;gap:8px;transition:.3s;}
.spp-root .sp-arrowlink::after{content:"\2192";transition:transform .4s var(--spp-ease);}
.spp-root .sp-arrowlink:hover{color:var(--spp-brown);}
.spp-root .sp-arrowlink:hover::after{transform:translateX(5px);}
.spp-root .sp-breadcrumb{font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--spp-brown);display:flex;gap:8px;align-items:center;margin-bottom:24px;flex-wrap:wrap;}
.spp-root .sp-breadcrumb span{opacity:.5;}
.spp-root .sp-ph{background-color:var(--spp-cream-2);background-image:repeating-linear-gradient(-45deg,rgba(57,53,52,.06) 0,rgba(57,53,52,.06) 1px,transparent 1px,transparent 11px);display:flex;align-items:center;justify-content:center;text-align:center;color:var(--spp-brown);font-family:monospace;font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--spp-line);}

/* login */
.spp-login-wrap{max-width:420px;margin:0 auto;text-align:left;}
.spp-login-title{font-size:clamp(1.7rem,4vw,2.3rem);margin-bottom:12px;}
.spp-login-lede{margin-bottom:28px;}
.spp-login-error{font-size:.85rem;color:#8a3b2c;background:#f6e3da;border:1px solid #e0bba8;padding:10px 14px;margin-bottom:18px;}
.spp-login-form{display:flex;flex-direction:column;gap:14px;}
.spp-login-form label{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--spp-brown);}
.spp-login-form input[type="text"],.spp-login-form input[type="password"]{font-family:var(--spp-ui);font-size:.95rem;padding:12px 14px;border:1px solid var(--spp-line);background:#fff7ee;color:var(--spp-dark);outline:none;}
.spp-login-form input:focus{border-color:var(--spp-brown);}
.spp-remember{display:flex;align-items:center;gap:8px;font-size:.85rem;text-transform:none;letter-spacing:0;color:var(--spp-dark);}
.spp-login-form .sp-btn{margin-top:6px;}
.spp-lost-pass{font-size:.78rem;color:var(--spp-brown);text-decoration:underline;text-decoration-color:var(--spp-line);align-self:flex-start;}

/* dashboard */
.spp-header-row{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;flex-wrap:wrap;margin-bottom:8px;}
.spp-dash-title{font-size:clamp(1.8rem,4vw,2.5rem);max-width:18ch;}
.spp-dash-lede{font-size:1rem;margin-top:12px;max-width:46ch;}
.spp-new-list{font-family:var(--spp-editorial);font-style:italic;font-size:.95rem;color:var(--spp-brown);margin-top:10px;}
.spp-header-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px;text-align:right;}
.spp-greeting{font-size:.82rem;color:var(--spp-dark);margin:0;}
.spp-signout{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--spp-brown);text-decoration:underline;text-decoration-color:var(--spp-line);white-space:nowrap;}
.spp-empty{padding:40px 0;color:var(--spp-brown);}

.spp-filters{display:flex;gap:10px;flex-wrap:wrap;margin:28px 0 8px;}
.spp-filter-btn{font-size:.64rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;padding:9px 16px;border:1px solid var(--spp-line);color:var(--spp-dark);transition:.3s;display:inline-block;}
.spp-filter-btn.active,.spp-filter-btn:hover{border-color:var(--spp-dark);background:var(--spp-dark);color:var(--spp-cream);}

.spp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:24px;}
@media (max-width:880px){.spp-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:600px){.spp-grid{grid-template-columns:1fr;}}

.spp-card{perspective:1600px;height:320px;}
.spp-card-inner{position:relative;width:100%;height:100%;transition:transform .6s var(--spp-ease);transform-style:preserve-3d;}
.spp-card-inner.is-flipped{transform:rotateY(180deg);}
.spp-face{position:absolute;inset:0;backface-visibility:hidden;background:#fff7ee;border:1px solid var(--spp-line);padding:22px;display:flex;flex-direction:column;}
.spp-new-badge{position:absolute;top:14px;right:14px;background:var(--spp-brown);color:#fff7ee;font-size:.58rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;padding:4px 9px;}
.spp-face-back{transform:rotateY(180deg);align-items:center;text-align:center;justify-content:center;background:var(--spp-cream-2);}
.spp-logo{width:54px;height:54px;font-size:.42rem;line-height:1.2;margin-bottom:14px;}
.spp-logo-img{width:54px;height:54px;object-fit:contain;margin-bottom:14px;}
.spp-desc{flex:1;margin:6px 0 14px;}
.spp-card-actions{display:flex;flex-direction:column;gap:10px;align-items:flex-start;}
.spp-face-back .spp-card-actions{align-items:center;}
.spp-reveal-btn{font-size:.64rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;padding:11px 16px;border:1px solid var(--spp-dark);transition:.3s;}
.spp-reveal-btn:hover{background:var(--spp-dark);color:var(--spp-cream);}
.spp-qr{background:#fff;padding:10px;border:1px solid var(--spp-line);margin-bottom:14px;min-width:120px;min-height:120px;display:flex;align-items:center;justify-content:center;}
.spp-instruction{font-size:.76rem;color:var(--spp-dark);max-width:24ch;margin:0 0 14px;}

/* detail */
.spp-back{display:inline-flex;align-items:center;gap:8px;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--spp-brown);margin-bottom:20px;}
.spp-detail-grid{display:grid;grid-template-columns:140px 1fr;gap:28px;align-items:start;padding-bottom:32px;border-bottom:1px solid var(--spp-line);margin-bottom:32px;}
@media (max-width:600px){.spp-detail-grid{grid-template-columns:1fr;}}
.spp-detail-logo{width:140px;height:140px;font-size:.58rem;}
.spp-detail-logo-img{width:140px;height:140px;object-fit:contain;border:1px solid var(--spp-line);background:#fff7ee;}
.spp-cat{font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--spp-brown);margin-bottom:8px;}
.spp-detail-title{font-size:clamp(1.7rem,4vw,2.4rem);margin-bottom:10px;}
.spp-detail-lede{font-size:1.02rem;}

.spp-detail-body{display:grid;grid-template-columns:1.3fr 1fr;gap:44px;}
@media (max-width:760px){.spp-detail-body{grid-template-columns:1fr;}}
.spp-richtext p{margin:0 0 16px;}
.spp-gallery{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0 4px;}
.spp-gallery-img{width:100%;height:130px;object-fit:cover;border:1px solid var(--spp-line);}
.spp-cta-row{display:flex;gap:14px;margin-top:22px;flex-wrap:wrap;}
.spp-address{cursor:default;}

.spp-offer-box{border:1px solid var(--spp-line);padding:24px;background:#fff7ee;text-align:center;align-self:start;}
.spp-offer-eyebrow{justify-content:center;margin-bottom:16px !important;}
.spp-offer-box .spp-qr{margin:0 auto 14px;}
.spp-offer-box .spp-instruction{margin:0 auto 12px;}
.spp-terms{font-size:.74rem;color:var(--spp-brown);line-height:1.6;margin:10px 0 0;}
