/* Aliases onto the tenant's own theme (see /theme.css, linked before this stylesheet in
   customer-portal.html) so the portal matches the storefront/builder instead of a fixed
   green -- var(--color-primary) etc. come from that tenant-specific stylesheet, these
   hex values only remain as fallbacks for the (unexpected) case it fails to load. */
:root{--ink:var(--color-text,#17211b);--green:var(--color-primary,#183f30);--lime:var(--color-secondary,#d9f36a);--paper:var(--color-background,#f4f5f1);--line:color-mix(in srgb,var(--ink) 18%,transparent);--muted:color-mix(in srgb,var(--ink) 55%,transparent)}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font:14px var(--font-body,Inter,system-ui,sans-serif)}button,input,select{font:inherit}.wordmark{color:inherit;text-decoration:none;font:600 25px var(--font-display,Georgia)}.auth-shell{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr}.auth-copy{padding:55px clamp(35px,7vw,110px);background:linear-gradient(145deg,color-mix(in srgb,var(--green) 85%,white 15%),color-mix(in srgb,var(--green) 65%,black 35%));color:white;display:flex;flex-direction:column;justify-content:space-between}.auth-copy>div{max-width:650px}.auth-copy>div>span,.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:10px;font-weight:800;color:var(--muted)}.auth-copy>div>span{color:var(--lime)}.auth-copy h1{font:500 clamp(55px,7vw,100px)/.91 var(--font-display,Georgia);margin:25px 0}.auth-copy p{font-size:18px;line-height:1.6;color:#ffffffb8;max-width:520px}.auth-copy small{color:#ffffff80}.auth-card{background:white;padding:clamp(35px,7vw,100px);display:flex;flex-direction:column;justify-content:center}.auth-tabs{display:flex;border-bottom:1px solid var(--line);margin-bottom:45px}.auth-tabs button{border:0;background:none;padding:13px 3px;margin-right:28px;color:var(--muted);border-bottom:2px solid transparent}.auth-tabs button.active{color:var(--ink);border-color:var(--green)}form h2{font:500 42px var(--font-display,Georgia);margin:9px 0 30px}label{display:grid;gap:8px;font-weight:700;margin-bottom:17px}label small{font-weight:400;color:var(--muted)}input,select{width:100%;border:1px solid var(--line);border-radius:9px;padding:12px;background:#fff;color:var(--ink)}input:focus{outline:3px solid #183f3022;border-color:var(--green)}.consent{display:flex;align-items:flex-start;gap:9px;font-weight:400;line-height:1.5}.consent input{width:auto;margin-top:4px}.primary{border:0;border-radius:9px;background:var(--green);color:white;padding:12px 17px;font-weight:750}.message{padding:12px 14px;border-radius:9px;background:#e8f3eb;color:#245d3d;margin-top:18px}.message.error{background:#fff0ee;color:#9b302b}#portal-view{min-height:100vh;display:grid;grid-template-columns:235px 1fr}#portal-view>aside{position:fixed;inset:0 auto 0 0;width:235px;background:var(--green);color:white;padding:30px 19px;display:flex;flex-direction:column}aside nav{display:grid;gap:6px;margin-top:65px}aside nav button,.logout{border:0;background:transparent;color:#ffffffa5;padding:12px;text-align:left;border-radius:8px}aside nav button.active,aside nav button:hover{background:#ffffff13;color:#fff}.logout{margin-top:auto}.workspace{grid-column:2;padding:45px clamp(30px,6vw,85px) 80px;max-width:1500px;width:100%}.workspace>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:35px}.workspace h1{font:500 44px var(--font-display,Georgia);margin:7px 0}.link-button{text-decoration:none;display:inline-block}.welcome{background:var(--green);color:white;border-radius:18px;padding:45px;margin-bottom:17px;background-image:radial-gradient(circle at 85% 30%,var(--lime) 0 8%,transparent 8.3%)}.welcome span{color:#ffffff96}.welcome h2{font:500 50px var(--font-display,Georgia);margin:10px 0}.welcome p{color:#ffffffa9}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-bottom:17px}.metrics.no-vouchers{grid-template-columns:1fr}.metrics article,.panel{background:white;border:1px solid var(--line);border-radius:13px;padding:23px}.metrics span{color:var(--muted)}.metrics strong{display:block;font:500 38px var(--font-display,Georgia);margin-top:18px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.panel-head h3,.panel h3{font:500 28px var(--font-display,Georgia);margin:0}.panel-head button{border:0;background:transparent;color:var(--green);font-weight:750}.appointment-row{display:grid;grid-template-columns:120px 1fr auto;gap:16px;align-items:center;border-top:1px solid #edf0ed;padding:16px 4px}.appointment-row:first-child{border:0}.appointment-row time{font-weight:800}.appointment-row small{display:block;color:var(--muted);margin-top:4px}.appointment-row button{border:1px solid #e6c7c3;color:#953630;background:white;border-radius:7px;padding:8px}.status{display:inline-block;padding:4px 8px;border-radius:99px;background:#e7f3e9;color:#27623f;font-size:10px}.contracts-shell{display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start}.contract-list{display:grid;gap:10px}.contract-card{width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:14px;padding:16px;display:grid;gap:6px;cursor:pointer}.contract-card.active{border-color:var(--green);box-shadow:0 0 0 3px #183f3011}.contract-card span,.contract-card small{color:var(--muted)}.contract-detail{display:grid;gap:16px;min-height:220px}.contract-detail-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.contract-actions{display:flex;gap:10px;flex-wrap:wrap}.contract-frame{width:100%;min-height:520px;border:1px solid var(--line);border-radius:14px;background:#fff}.contract-sign-form{display:grid;gap:14px;padding-top:4px}.signature-shell{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fafcf9}.signature-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px}.signature-toolbar .hint{font-size:12px;color:var(--muted);line-height:1.5}.signature-shell canvas{width:100%;height:170px;background:#fff;border:1px solid #e3e8e1;border-radius:12px;touch-action:none}.contract-signed-box{padding:14px 16px;border-radius:14px;background:#eff7f1;border:1px solid #d4e7d8}.voucher-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.voucher-card{min-height:220px;border-radius:16px;padding:24px;background:linear-gradient(145deg,color-mix(in srgb,var(--green) 90%,white 10%),color-mix(in srgb,var(--green) 60%,black 40%));color:white;display:flex;flex-direction:column}.voucher-card>span{color:var(--lime);text-transform:uppercase;letter-spacing:.13em;font-size:10px}.voucher-card strong{font:500 38px var(--font-display,Georgia);margin:25px 0 5px}.voucher-card code{margin-top:auto;color:#fff;font-size:15px;letter-spacing:.12em}.voucher-card small{color:#ffffff9a}.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}#profile-attributes-card{grid-column:1/-1}#profile-attributes-card .hint{color:var(--muted);margin:0 0 18px}#profile-attributes-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin:0}#profile-attributes-list dt{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em;font-weight:700}#profile-attributes-list dd{margin:5px 0 0;font-weight:650}.security-card ul{list-style:none;padding:0;margin:20px 0}.security-card li{padding:14px 0;border-top:1px solid #edf0ed}.security-card b,.security-card span{display:block}.security-card span{color:var(--muted);margin-top:5px}.outline{border:1px solid var(--line);padding:11px 14px;border-radius:8px;background:white}.empty{padding:35px;text-align:center;color:var(--muted)}[hidden]{display:none!important}@media(max-width:900px){.contracts-shell{grid-template-columns:1fr}}@media(max-width:800px){.auth-shell{grid-template-columns:1fr}.auth-copy{min-height:340px}.auth-copy small{display:none}#portal-view{grid-template-columns:1fr}#portal-view>aside{position:static;width:auto;flex-direction:row;align-items:center}aside nav{display:flex;margin:0 0 0 auto}aside nav button{font-size:0}aside nav button:first-letter{font-size:18px}.logout{display:none}.workspace{grid-column:1;padding:28px 18px}.metrics,.voucher-grid,.profile-grid,.contracts-shell{grid-template-columns:1fr}.appointment-row{grid-template-columns:1fr}.welcome h2{font-size:38px}.contract-detail-head{flex-direction:column}.contract-frame{min-height:420px}}
