:root{
  --forest:#1f3827;
  --forest-deep:#14271b;
  --sage:#9caf88;
  --sage-soft:#edf2e9;
  --gold:#c7a96b;
  --cream:#f5f1e8;
  --paper:#fffdf9;
  --ink:#1d261f;
  --muted:#6e786f;
  --line:#dfe5dc;
  --danger:#9c3737;
  --success:#316b46;
  --white:#fff;
  --shadow:0 26px 80px rgba(23,48,32,.16);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:#edf0eb}
body{-webkit-font-smoothing:antialiased}
a{color:var(--forest);text-underline-offset:2px}
button,input,select{font:inherit}

.portal-shell{min-height:100vh;display:grid;grid-template-columns:minmax(390px,43%) 1fr;background:var(--paper)}
.brand-panel{
  min-height:100vh;padding:54px clamp(38px,5vw,78px);
  background:
    radial-gradient(circle at 115% 15%,rgba(199,169,107,.14),transparent 31%),
    radial-gradient(circle at -12% 82%,rgba(156,175,136,.12),transparent 30%),
    linear-gradient(145deg,#254631,var(--forest-deep));
  color:#fff;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden
}
.brand-panel:after{
  content:"";position:absolute;width:520px;height:520px;right:-340px;bottom:9%;
  border:1px solid rgba(255,255,255,.08);border-radius:50%;
  box-shadow:0 0 0 72px rgba(255,255,255,.022),0 0 0 144px rgba(255,255,255,.014)
}
.hotel-mark{display:flex;align-items:center;gap:16px;position:relative;z-index:1}
.crest{
  width:58px;height:66px;display:grid;place-items:center;border:1px solid var(--gold);
  border-radius:30px 30px 22px 22px;position:relative;color:var(--forest);font-family:Georgia,serif;
  font-size:19px;letter-spacing:2px;background:rgba(255,255,255,.72)
}
.crest:before{content:"";position:absolute;inset:5px;border:1px solid rgba(199,169,107,.5);border-radius:25px 25px 18px 18px}
.crest span{position:relative;z-index:1}
.crest-light{color:#fff;background:transparent;border-color:rgba(199,169,107,.95)}
.crest-light:before{border-color:rgba(255,255,255,.22)}
.hotel-name{font-weight:750;letter-spacing:2.2px;font-size:14px}
.hotel-sub{margin-top:4px;font-size:10px;letter-spacing:2px;color:#cbd7c9}
.hotel-name.dark{color:var(--forest)}
.hotel-sub.dark{color:var(--muted)}
.brand-copy{position:relative;z-index:1;max-width:620px;margin:8vh 0}
.eyebrow{font-size:11px;letter-spacing:2.2px;font-weight:800;color:#d9e2d6;margin-bottom:16px}
.eyebrow.dark{color:#66805f}
.brand-copy h1{font-family:Georgia,"Times New Roman",serif;font-size:clamp(43px,4.8vw,72px);line-height:1.03;font-weight:400;letter-spacing:-1.6px;margin:0}
.brand-copy h1 em{font-weight:400;color:#d4c092}
.brand-copy>p{font-size:17px;line-height:1.7;color:#dde6dc;max-width:540px;margin:24px 0 0}
.benefits{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:38px}
.benefits>div{padding:15px 0;border-top:1px solid rgba(255,255,255,.16)}
.benefits span{display:block;color:var(--gold);font-size:11px;font-weight:800;letter-spacing:1px;margin-bottom:10px}
.benefits strong{display:block;font-size:13px;margin-bottom:4px}
.benefits small{display:block;color:#bfcbbd;font-size:11px;line-height:1.35}
.brand-footer{font-size:11px;letter-spacing:.5px;color:#aebead;position:relative;z-index:1}

.form-panel{display:grid;place-items:center;padding:42px;background:
  linear-gradient(rgba(255,255,255,.68),rgba(255,255,255,.68)),
  radial-gradient(circle at 100% 0%,#dfe8db,transparent 35%)}
.form-wrap{width:min(650px,100%);background:rgba(255,255,255,.96);border:1px solid #e1e6df;border-radius:24px;padding:42px 44px;box-shadow:var(--shadow)}
.mobile-brand{display:none;align-items:center;gap:13px;margin-bottom:28px}
.form-heading{margin-bottom:28px}
.step-pill{display:inline-block;background:var(--sage-soft);color:#4e684d;border-radius:999px;padding:7px 10px;font-size:10px;letter-spacing:1.5px;font-weight:850;margin-bottom:12px}
.form-heading h2{font-family:Georgia,"Times New Roman",serif;font-size:39px;line-height:1.08;font-weight:400;letter-spacing:-.5px;margin:0}
.form-heading p{color:var(--muted);font-size:14px;margin:8px 0 0}

form{display:grid;gap:17px}
.field-grid.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field{display:grid;gap:7px}
.field-label{font-size:13px;font-weight:750;color:#38433b}
.field-label b{color:var(--danger)}
.field-label small{float:right;color:#8b938c;font-weight:500}
input,select{
  width:100%;height:48px;border:1px solid #cfd8cf;border-radius:11px;padding:0 13px;
  color:var(--ink);background:#fff;outline:none;transition:border .15s,box-shadow .15s,background .15s
}
select{appearance:auto}
input::placeholder{color:#9ba39c}
input:focus,select:focus{border-color:#8fac7e;box-shadow:0 0 0 4px rgba(156,175,136,.18);background:#fff}
.conditional-field{display:none;padding:14px;background:#f7f8f5;border:1px dashed #cad5c6;border-radius:13px}
.conditional-field.show{display:grid}

.consent-card{
  display:grid;grid-template-columns:22px 1fr;gap:12px;align-items:start;
  border-radius:14px;padding:14px 15px;line-height:1.4;cursor:pointer
}
.consent-card input{width:19px;height:19px;margin-top:2px;padding:0;accent-color:var(--forest)}
.consent-card span{font-size:13px}
.consent-card strong{display:block;font-size:13px;margin-bottom:3px}
.consent-card small{display:block;font-size:12px;color:#687169;line-height:1.45}
.consent-card b{color:var(--danger)}
.marketing{background:#f2f6ef;border:1px solid #dce7d8}
.terms{padding-top:3px;padding-bottom:3px;color:#687169}

.primary{
  min-height:51px;border:0;border-radius:12px;background:var(--forest);color:#fff;padding:13px 17px;
  font-weight:800;cursor:pointer;text-decoration:none;display:flex;align-items:center;justify-content:center;gap:12px;
  transition:transform .12s,background .12s,opacity .12s
}
.primary:hover{background:#172e20;transform:translateY(-1px)}
.primary:disabled{opacity:.7;cursor:wait;transform:none}
.button-arrow{font-size:19px;line-height:1}
.fineprint{font-size:11px;line-height:1.55;color:#858d86;text-align:center;margin:0 6px}

.alerts{display:grid;gap:8px;margin-bottom:17px}
.alert{border-radius:11px;padding:11px 13px;font-size:12px;line-height:1.45}
.alert.error{background:#fff0f0;border:1px solid #efcccc;color:#872d2d}
.alert.warn{background:#fff8e3;border:1px solid #eadca4;color:#725b13}

.success-page,.center-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:
  radial-gradient(circle at 85% 10%,rgba(199,169,107,.16),transparent 28%),
  linear-gradient(145deg,var(--forest),#112519)}
.success-card,.login-card{
  width:min(520px,100%);padding:44px 40px;text-align:center;background:#fff;border:1px solid var(--line);
  border-radius:24px;box-shadow:0 26px 90px rgba(0,0,0,.18)
}
.success-card .crest,.login-card .crest{margin:0 auto 20px}
.success-tick{width:65px;height:65px;margin:2px auto 18px;border-radius:50%;display:grid;place-items:center;background:#e7f2e8;color:var(--success);font-size:32px;font-weight:900}
.success-card h1,.login-card h1{font-family:Georgia,serif;font-weight:400;font-size:37px;letter-spacing:-.4px;margin:6px 0 12px}
.success-card>p{color:var(--muted);line-height:1.6;margin:0 auto 20px;max-width:420px}
.button-link{display:inline-flex;margin-top:8px;min-width:190px}

.admin-shell{padding:40px;max-width:1550px;margin:0 auto}
.admin-header{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:26px}
.admin-header h1{font-family:Georgia,serif;font-weight:400;font-size:41px;letter-spacing:-.6px;margin:0}
.header-actions{display:flex;gap:10px;align-items:center}
.header-actions form{display:block}
.secondary,.ghost{padding:11px 15px;border-radius:10px;text-decoration:none;font-weight:750;cursor:pointer;font-size:13px}
.secondary{background:#fff;border:1px solid var(--line);color:var(--ink)}
.ghost{background:transparent;border:0;color:var(--muted)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:14px}
.stats article{background:#fff;border:1px solid var(--line);border-radius:16px;padding:19px 20px}
.stats span{display:block;color:var(--muted);font-size:12px}
.stats strong{display:block;font-family:Georgia,serif;font-size:33px;font-weight:400;margin-top:5px}
.operator-card{display:flex;justify-content:space-between;gap:24px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 20px;margin-bottom:14px}
.operator-card h2{font-family:Georgia,serif;font-weight:400;font-size:23px;margin:0}
.operator-card .eyebrow{margin-bottom:5px}
.operator-list{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.operator-pill{display:inline-flex;gap:9px;align-items:center;background:#f1f5ee;border:1px solid #dce5d8;padding:7px 9px 7px 11px;border-radius:999px;font-size:12px}
.operator-pill strong{display:grid;place-items:center;min-width:23px;height:23px;padding:0 6px;border-radius:999px;background:var(--forest);color:#fff;font-size:11px}
.table-card{background:#fff;border:1px solid var(--line);border-radius:17px;overflow:hidden}
.table-title{display:flex;justify-content:space-between;align-items:center;padding:18px 21px;border-bottom:1px solid var(--line)}
.table-title h2{margin:0;font-size:17px}
.table-title p{font-size:11px;color:var(--muted);margin:3px 0 0}
.table-wrap{overflow:auto}
table{border-collapse:collapse;width:100%;font-size:12px}
th,td{padding:12px 14px;border-bottom:1px solid #edf0ed;text-align:left;white-space:nowrap}
th{font-size:10px;text-transform:uppercase;letter-spacing:.7px;color:#747b75;background:#fafbfa}
.pill{display:inline-block;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:800}
.pill.yes{background:#e5f2e8;color:#28623d}
.pill.no{background:#f4eeee;color:#875050}
.empty{text-align:center;color:var(--muted);padding:40px}

.legal-page{max-width:820px;margin:40px auto;padding:0 20px}
.legal-page article{background:#fff;border:1px solid var(--line);border-radius:18px;padding:36px;line-height:1.65}
.legal-page h1,.legal-page h2{font-family:Georgia,serif;font-weight:400}
.legal-page h1{font-size:38px}
.legal-page h2{margin-top:28px}

@media(max-width:1050px){
  .portal-shell{grid-template-columns:38% 62%}
  .benefits{grid-template-columns:1fr}
  .benefits>div{display:grid;grid-template-columns:28px 1fr;column-gap:8px}
  .benefits small{grid-column:2}
}
@media(max-width:860px){
  .portal-shell{display:block;background:#eef2eb}
  .brand-panel{display:none}
  .form-panel{min-height:100vh;padding:18px;align-items:start}
  .form-wrap{margin:auto;padding:28px 23px;border-radius:20px;box-shadow:0 14px 45px rgba(23,48,32,.10)}
  .mobile-brand{display:flex}
  .form-heading h2{font-size:34px}
  .admin-shell{padding:20px}
  .admin-header{align-items:flex-start;flex-direction:column}
  .admin-header h1{font-size:34px}
  .stats{grid-template-columns:1fr 1fr}
  .operator-card{align-items:flex-start;flex-direction:column}
  .operator-list{justify-content:flex-start}
}
@media(max-width:520px){
  .form-panel{padding:0;background:#fff}
  .form-wrap{border:0;border-radius:0;box-shadow:none;padding:22px 18px 28px}
  .mobile-brand{margin-bottom:24px}
  .crest{width:50px;height:57px;font-size:16px}
  .form-heading{margin-bottom:22px}
  .form-heading h2{font-size:31px}
  .field-grid.two{grid-template-columns:1fr}
  input,select{height:50px;font-size:16px}
  .consent-card{padding:13px}
  .primary{min-height:54px;font-size:15px}
  .stats{grid-template-columns:1fr 1fr}
  .header-actions{width:100%}
  .secondary{flex:1;text-align:center}
  .success-card,.login-card{padding:34px 22px}
}



/* v1.6 guest travel choice */
.travel-fieldset{border:0;padding:0;margin:0;min-width:0}
.travel-fieldset legend{font-size:13px;font-weight:750;color:#38433b;margin-bottom:8px}
.travel-fieldset legend b{color:var(--danger)}
.travel-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.choice-card{
  display:grid;grid-template-columns:22px 1fr;gap:10px;align-items:start;
  border:1px solid #cfd8cf;border-radius:12px;padding:13px;cursor:pointer;background:#fff
}
.choice-card:has(input:checked){border-color:#87a97a;background:#f2f6ef;box-shadow:0 0 0 3px rgba(156,175,136,.12)}
.choice-card input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--forest)}
.choice-card strong{display:block;font-size:13px}
.choice-card small{display:block;color:var(--muted);font-size:11px;line-height:1.4;margin-top:3px}

/* v1.6 admin */
.admin-alerts{display:grid;gap:8px;margin-bottom:14px}
.alert.success{background:#edf7ef;border:1px solid #c8e0cd;color:#27613b}
.alert.warn{background:#fff8e3;border:1px solid #eadca4;color:#725b13}
.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.settings-card{
  background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;
  display:flex;justify-content:space-between;gap:22px;align-items:center
}
.settings-card h2{font-family:Georgia,serif;font-size:25px;font-weight:400;margin:0}
.settings-card p{font-size:12px;line-height:1.5;color:var(--muted);margin:7px 0 0;max-width:520px}
.duration-form{display:grid;grid-template-columns:90px 120px auto;gap:8px;align-items:center;min-width:330px}
.duration-form input,.duration-form select{height:42px}
.primary.compact{min-height:42px;padding:8px 14px}
.operator-list.left{justify-content:flex-start}
.text-link{font-size:12px;font-weight:750;text-decoration:none}
.mono{font-family:"SFMono-Regular",Consolas,"Liberation Mono",monospace;font-size:11px}
.muted{color:var(--muted)}
.small-note{font-size:11px!important}
.api-status{
  background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;
  display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:14px
}
.api-status h2{font-family:Georgia,serif;font-weight:400;font-size:28px;margin:0}
.api-status p{font-size:12px;line-height:1.55;color:var(--muted);margin:6px 0 0;max-width:850px}
.api-status.good-state{border-left:4px solid #568263}
.api-status.error-state{border-left:4px solid #c29b43}
.device-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}
.device-card{
  background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;
  box-shadow:0 8px 24px rgba(23,48,32,.05)
}
.device-card.is-blocked{border-color:#e2bcbc;background:#fffafa}
.device-card-top{display:grid;grid-template-columns:42px 1fr auto;gap:11px;align-items:center;margin-bottom:16px}
.device-icon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:#eef3eb;color:var(--forest);font-size:20px}
.device-card h3{margin:0;font-size:15px}
.online-dot{
  align-self:start;background:#e5f2e8;color:#28623d;border-radius:999px;padding:5px 7px;
  font-size:9px;font-weight:850;letter-spacing:.6px
}
.is-blocked .online-dot{background:#f5e7e7;color:#8f3f3f}
.device-details{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;margin:0 0 16px}
.device-details div{min-width:0}
.device-details dt{font-size:9px;text-transform:uppercase;letter-spacing:.6px;color:#8a928b;margin-bottom:2px}
.device-details dd{font-size:12px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.danger-button{
  border:1px solid #d8aaaa;background:#fff5f5;color:#8f3535;border-radius:10px;padding:10px 12px;
  font-weight:800;cursor:pointer
}
.full{width:100%}
.spaced{margin-top:14px}
.mini-button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 9px;font-size:11px;font-weight:750;cursor:pointer}
.danger-text{color:#9a3939;border-color:#e1c0c0}
.empty-card{grid-column:1/-1;background:#fff;border:1px dashed #cad4cb;border-radius:14px;padding:35px;text-align:center;color:var(--muted)}
.blocked-symbol{
  width:65px;height:65px;margin:2px auto 18px;border-radius:50%;display:grid;place-items:center;
  background:#f7e8e8;color:#973c3c;font-size:42px;font-weight:300
}

@media(max-width:1100px){
  .device-grid{grid-template-columns:1fr 1fr}
  .admin-grid{grid-template-columns:1fr}
}
@media(max-width:720px){
  .travel-options{grid-template-columns:1fr}
  .settings-card{align-items:flex-start;flex-direction:column}
  .duration-form{grid-template-columns:80px 1fr auto;min-width:0;width:100%}
  .device-grid{grid-template-columns:1fr}
  .api-status{align-items:flex-start;flex-direction:column}
}

/* cumulative marketing opt-in */
.stats.stats-five{grid-template-columns:repeat(5,1fr)}
.marketing{background:#f2f6ef;border:1px solid #dce7d8}
@media(max-width:1100px){
  .stats.stats-five{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:650px){
  .stats.stats-five{grid-template-columns:1fr 1fr}
}


/* Post-stay campaign manager */
.poststay-summary{
  display:flex;justify-content:space-between;align-items:center;gap:20px;
  background:#fff;border:1px solid var(--line);border-left:4px solid #a7aaa7;
  border-radius:16px;padding:18px 20px;margin-bottom:14px
}
.poststay-summary.enabled{border-left-color:#568263}
.poststay-summary h2{font-family:Georgia,serif;font-weight:400;font-size:25px;margin:0}
.poststay-summary p{font-size:12px;color:var(--muted);margin:5px 0 0}
.master-switch-card{
  background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;
  display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:14px
}
.master-switch-card h2{font-family:Georgia,serif;font-size:28px;font-weight:400;margin:0}
.master-switch-card p{font-size:12px;color:var(--muted);line-height:1.55;max-width:800px;margin:7px 0 0}
.campaign-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(330px,.65fr);gap:15px;align-items:start}
.campaign-editor,.campaign-list{
  background:#fff;border:1px solid var(--line);border-radius:17px;padding:22px
}
.campaign-editor h2,.campaign-list h2{font-family:Georgia,serif;font-size:28px;font-weight:400;margin:0 0 4px}
.form-help{font-size:12px;line-height:1.55;color:var(--muted);margin:0 0 20px}
.campaign-form{display:grid;gap:16px}
textarea{
  width:100%;border:1px solid #cfd8cf;border-radius:11px;padding:12px 13px;
  color:var(--ink);background:#fff;outline:none;font:inherit;resize:vertical;line-height:1.5
}
textarea:focus{border-color:#8fac7e;box-shadow:0 0 0 4px rgba(156,175,136,.18)}
.field-hint{font-size:10px;color:var(--muted)}
.input-suffix{display:grid;grid-template-columns:1fr auto;align-items:center;border:1px solid #cfd8cf;border-radius:11px;overflow:hidden;background:#fff}
.input-suffix input{border:0;border-radius:0;box-shadow:none!important}
.input-suffix span{padding:0 12px;font-size:12px;color:var(--muted)}
.switch-row{
  display:grid;grid-template-columns:22px 1fr;gap:11px;align-items:start;
  padding:14px;border:1px solid #dce5d8;background:#f3f6f1;border-radius:12px;cursor:pointer
}
.switch-row input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--forest)}
.switch-row strong{display:block;font-size:13px}
.switch-row small{display:block;font-size:11px;color:var(--muted);line-height:1.45;margin-top:3px}
.compact-switch{background:#fafbfa}
.offer-fields{display:grid;gap:15px;padding:15px;border:1px dashed #cfd9cc;border-radius:13px}
.short-field{max-width:280px}
.form-actions{display:flex;gap:9px;align-items:center}
.campaign-card{border:1px solid var(--line);border-radius:13px;padding:14px;margin-top:10px}
.campaign-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.campaign-card h3{font-size:14px;margin:0}
.campaign-card p{font-size:11px;color:var(--muted);margin:4px 0 0}
.campaign-meta{display:flex;flex-wrap:wrap;gap:6px;margin:11px 0}
.campaign-meta span{background:#f2f4f1;border-radius:999px;padding:5px 7px;font-size:10px;color:#657067}
.campaign-actions{display:flex;gap:7px;align-items:center}
.campaign-actions form{display:block}
.scheduler-help{margin-top:16px;padding:13px;border-radius:11px;background:#f5f6f4;font-size:11px;line-height:1.5;color:var(--muted)}
.scheduler-help strong{display:block;color:var(--ink);margin-bottom:4px}
.scheduler-help p{margin:3px 0}
.scheduler-help code{display:block;margin-top:7px;padding:8px;background:#202722;color:#eef3ee;border-radius:7px;white-space:pre-wrap;word-break:break-all;font-size:10px}

/* Voucher / offer pages */
.offer-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(145deg,#1f3827,#112519)}
.offer-voucher{
  width:min(620px,100%);background:#fff;border-radius:23px;padding:34px;
  box-shadow:0 28px 90px rgba(0,0,0,.22);text-align:center;position:relative
}
.offer-brand{display:flex;align-items:center;gap:12px;text-align:left;justify-content:center;margin-bottom:26px}
.offer-voucher h1{font-family:Georgia,serif;font-size:44px;font-weight:400;color:var(--forest);margin:7px 0}
.offer-copy{font-size:17px;line-height:1.55;color:var(--muted);margin:0 auto 22px;max-width:470px}
.voucher-code{
  display:inline-block;padding:14px 20px;border:2px dashed #91a987;border-radius:12px;
  background:#f5f8f3;font-family:monospace;font-size:28px;font-weight:800;letter-spacing:2px
}
.voucher-status{display:inline-block;border-radius:999px;padding:6px 9px;font-size:9px;font-weight:850;letter-spacing:1px;margin-bottom:13px}
.voucher-status.good{background:#e6f3e9;color:#28623d}
.voucher-status.bad{background:#f5e7e7;color:#8f3f3f}
.validity{font-size:12px;color:var(--muted);margin:11px 0 18px}
.offer-actions{display:flex;justify-content:center;margin-bottom:22px}
.voucher-terms{border-top:1px solid var(--line);padding-top:18px;text-align:left;font-size:12px;color:var(--muted);line-height:1.55}
.voucher-terms strong{color:var(--ink)}
.reception-shell{max-width:1050px;margin:0 auto;padding:36px 22px}
.voucher-search-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px}
.voucher-search{display:grid;grid-template-columns:1fr auto;gap:9px}
.voucher-result{margin-top:14px;background:#fff;border:1px solid var(--line);border-radius:17px;padding:22px}
.voucher-result.valid{border-left:5px solid #568263}
.voucher-result.redeemed,.voucher-result.expired{border-left:5px solid #b36d6d}
.voucher-result-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:17px}
.voucher-result-head h2{font-family:monospace;font-size:29px;letter-spacing:2px;margin:6px 0 0}
.voucher-discount{font-family:Georgia,serif;font-size:34px;color:var(--forest)}
.voucher-details{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin:20px 0}
.voucher-details dt{font-size:9px;text-transform:uppercase;letter-spacing:.7px;color:#879087}
.voucher-details dd{margin:3px 0 0;font-size:13px}
.redeem-form{border-top:1px solid var(--line);padding-top:18px}
.field-grid.three{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}

@media(max-width:950px){
  .campaign-layout{grid-template-columns:1fr}
}
@media(max-width:700px){
  .master-switch-card,.poststay-summary{align-items:flex-start;flex-direction:column}
  .field-grid.three{grid-template-columns:1fr}
  .voucher-details{grid-template-columns:1fr 1fr}
}
@media(max-width:520px){
  .voucher-search{grid-template-columns:1fr}
  .voucher-result-head{flex-direction:column}
  .offer-voucher{padding:27px 19px}
  .offer-voucher h1{font-size:36px}
  .voucher-code{font-size:23px}
}
@media print{
  body{background:#fff}
  .offer-page{background:#fff;padding:0}
  .offer-voucher{box-shadow:none;border:1px solid #bbb}
  .offer-actions{display:none}
}


/* SMTP + Reception administration */
.smtp-status{
  display:flex;justify-content:space-between;align-items:center;gap:20px;
  background:#fff;border:1px solid var(--line);border-left:4px solid #aa9a67;
  border-radius:16px;padding:18px 20px;margin-bottom:14px
}
.smtp-status.ready{border-left-color:#568263}
.smtp-status h2{font-family:Georgia,serif;font-weight:400;font-size:27px;margin:0}
.smtp-status p{font-size:12px;color:var(--muted);margin:5px 0 0}
.smtp-layout,.reception-access-grid{
  display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);
  gap:15px;align-items:start
}
.settings-form-card{
  background:#fff;border:1px solid var(--line);border-radius:17px;padding:22px
}
.settings-form-card h2{
  font-family:Georgia,serif;font-size:29px;font-weight:400;margin:0 0 6px
}
.info-note{
  margin-top:15px;padding:14px;background:#f5f6f4;border-radius:11px;
  font-size:11px;line-height:1.5;color:var(--muted)
}
.info-note strong{display:block;color:var(--ink);margin-bottom:4px}
.info-note p{margin:0}
.narrow-admin{max-width:1150px}
.feature-checks{display:grid;gap:11px;margin:17px 0 20px}
.feature-checks>div{display:grid;grid-template-columns:28px 1fr;gap:9px;align-items:start}
.feature-checks>div>span{
  display:grid;place-items:center;width:26px;height:26px;border-radius:50%;
  background:#e6f2e8;color:#28623d;font-weight:850
}
.feature-checks p{margin:0}
.feature-checks strong{display:block;font-size:13px}
.feature-checks small{display:block;color:var(--muted);font-size:11px;line-height:1.45;margin-top:2px}
.reception-warning{margin-top:18px;text-align:left}
.reception-login-card form{margin-top:18px}
.signed-in-note{font-size:11px;color:var(--muted);margin:5px 0 0}

@media(max-width:900px){
  .smtp-layout,.reception-access-grid{grid-template-columns:1fr}
}
@media(max-width:650px){
  .smtp-status{align-items:flex-start;flex-direction:column}
}

.omada-status-strip{
  display:flex;justify-content:space-between;align-items:center;gap:15px;
  background:#fff;border:1px solid var(--line);border-radius:13px;padding:11px 15px;margin-bottom:14px
}
.omada-status-strip>div{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;font-size:11px;color:var(--muted)}
.omada-status-strip strong{color:var(--ink);font-size:12px}


/* Returning guest / visit tracking */
.stats.stats-six{grid-template-columns:repeat(6,1fr)}
.stacked-settings{display:grid;gap:12px;min-width:390px}
.visit-gap-form{display:block}
.visit-gap-form label>span{display:block;font-size:11px;color:var(--muted);margin-bottom:5px}
.visit-gap-form label>div{display:grid;grid-template-columns:90px 1fr auto;gap:7px;align-items:center}
.visit-gap-form input{height:40px}.visit-gap-form label>div>span{font-size:11px;color:var(--muted)}
.returning-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 20px;margin-bottom:14px}
.returning-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:12px}
.returning-head h2{font-family:Georgia,serif;font-size:25px;font-weight:400;margin:0}
.returning-list{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.returning-person{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px 12px;border:1px solid #e3e7e1;border-radius:11px;text-decoration:none;color:var(--ink);background:#fafbfa}
.returning-person:hover{border-color:#b8c8b4;background:#f3f7f1}.returning-person span{min-width:0}
.returning-person strong{display:block;font-size:12px}.returning-person small{display:block;font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}
.returning-person b{white-space:nowrap;background:#eef4eb;color:#456044;border-radius:999px;padding:5px 8px;font-size:10px}
.stay-count{display:inline-grid;place-items:center;min-width:28px;height:28px;border-radius:999px;background:#f1f3f1;font-weight:800}.stay-count.returning{background:#e6f2e8;color:#28623d}
.guest-email{font-size:13px;color:var(--muted);margin:5px 0 0}
.guest-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.guest-summary article{background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px}.guest-summary span{display:block;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}.guest-summary strong{display:block;font-size:14px;margin-top:5px}
.visit-timeline{display:grid;gap:11px}.visit-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}.visit-card-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;padding-bottom:12px;border-bottom:1px solid var(--line)}.visit-number{font-size:9px;letter-spacing:1px;font-weight:850;color:#688065}.visit-card h2{font-family:Georgia,serif;font-size:24px;font-weight:400;margin:4px 0 0}.visit-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-top:14px}.visit-facts span{display:block;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin-bottom:3px}.visit-facts strong{font-size:12px}
@media(max-width:1250px){.stats.stats-six{grid-template-columns:repeat(3,1fr)}.returning-list{grid-template-columns:1fr 1fr}}
@media(max-width:800px){.returning-list{grid-template-columns:1fr}.guest-summary{grid-template-columns:1fr 1fr}.visit-facts{grid-template-columns:1fr 1fr}.stacked-settings{min-width:0;width:100%}}


/* v11 live-safe branding, validation and record management */
.brand-logo{display:block;max-width:190px;max-height:76px;width:auto;height:auto;object-fit:contain}
.brand-logo-light{filter:none}
.success-logo,.login-logo{display:block;max-width:220px;max-height:95px;width:auto;height:auto;object-fit:contain;margin:0 auto 20px}
.quiet-note{
  margin:13px 0 18px;padding:10px 12px;border-radius:10px;
  background:#f4f6f2;color:#697269;font-size:11px;line-height:1.45
}
.setting-explain{display:block;margin-top:5px;font-size:10px;line-height:1.4;color:var(--muted)}
.visit-actions{display:flex;align-items:center;gap:8px}
.visit-actions form{display:block}
.branding-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:15px;align-items:start}
.colour-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}
.colour-grid label{display:grid;gap:6px;font-size:10px;color:var(--muted);font-weight:750}
.colour-grid input[type="color"]{height:48px;padding:4px;cursor:pointer}
.brand-preview{
  min-height:500px;border-radius:18px;padding:28px;color:#fff;
  background:linear-gradient(145deg,var(--preview-primary),#112519);
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center
}
.preview-label{font-size:9px;letter-spacing:1.5px;font-weight:850;margin-bottom:18px;opacity:.75}
.preview-logo{max-width:240px;max-height:100px;object-fit:contain;margin-bottom:18px}
.brand-preview h2{font-family:Georgia,serif;font-weight:400;font-size:30px;margin:10px 0 2px}
.brand-preview>p{font-size:11px;letter-spacing:1px;opacity:.75;margin:0 0 24px}
.preview-card{width:100%;background:#fff;color:#1d261f;border-radius:14px;padding:18px;display:grid;gap:8px}
.preview-card strong{font-family:Georgia,serif;font-size:23px;font-weight:400}
.preview-card span{font-size:11px;color:#6e786f}
.preview-card button{border:0;border-radius:9px;padding:11px;background:var(--preview-primary);color:#fff;font-weight:750}
form .mini-button{white-space:nowrap}
@media(max-width:1050px){
  .branding-layout{grid-template-columns:1fr}
  .brand-preview{min-height:360px}
  .colour-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:600px){
  .colour-grid{grid-template-columns:1fr 1fr}
  .brand-logo{max-width:150px;max-height:65px}
}


/* v12: fully editable mobile guest-Wi-Fi theme */
@media(max-width:860px){
  .portal-shell{background:var(--login-page-bg)}
  .form-panel{background:var(--login-page-bg);padding:var(--login-mobile-padding);color:var(--login-text);align-items:start}
  .form-wrap{background:var(--login-card-bg);border-radius:var(--login-card-radius);color:var(--login-text);margin:12px auto;box-shadow:0 15px 42px rgba(0,0,0,.11)}
  .mobile-brand{display:flex;flex-direction:column;gap:10px;margin-bottom:25px;width:100%}
  .mobile-logo-wrap{display:flex;width:100%}
  .mobile-brand.logo-left .mobile-logo-wrap{justify-content:flex-start}
  .mobile-brand.logo-center .mobile-logo-wrap{justify-content:center}
  .mobile-brand.logo-right .mobile-logo-wrap{justify-content:flex-end}
  .mobile-brand .brand-logo{width:min(var(--login-logo-width),100%);max-width:100%;max-height:150px;height:auto;object-fit:contain}
  .mobile-brand-text{width:100%;color:var(--login-text)}
  .mobile-brand.header-left .mobile-brand-text{text-align:left}
  .mobile-brand.header-center .mobile-brand-text{text-align:center}
  .mobile-brand.header-right .mobile-brand-text{text-align:right}
  .mobile-brand .hotel-name.dark{font-size:var(--login-hotel-name-size);line-height:1.1;letter-spacing:.7px;color:var(--login-heading);font-weight:800}
  .mobile-brand .hotel-sub.dark{font-size:var(--login-location-size);color:var(--login-muted);letter-spacing:1.3px;margin-top:6px}
  .form-heading.header-left{text-align:left}.form-heading.header-center{text-align:center}.form-heading.header-right{text-align:right}
  .form-heading h2{font-size:var(--login-heading-size);color:var(--login-heading);line-height:1.06}
  .form-heading.heading-font-sans h2{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;font-weight:750;letter-spacing:-1px}
  .form-heading p{font-size:var(--login-body-size);color:var(--login-muted);line-height:1.45}
  .form-heading .step-pill{background:color-mix(in srgb,var(--sage) 25%,white);color:var(--login-text)}
  .field-label,.travel-fieldset legend{font-size:var(--login-label-size);color:var(--login-text)}
  input,select{font-size:var(--login-input-size);background:var(--login-field-bg);color:var(--login-text)}
  .choice-card{background:var(--login-field-bg);color:var(--login-text)}
  .choice-card small,.consent-card small,.terms,.fineprint{color:var(--login-muted)}
  #connect-button{background:var(--login-button-bg);color:var(--login-button-text);font-size:var(--login-button-size)}
}
@media(max-width:520px){
  .form-panel{padding:var(--login-mobile-padding);background:var(--login-page-bg)}
  .form-wrap{border:1px solid rgba(0,0,0,.06);border-radius:var(--login-card-radius);box-shadow:0 12px 34px rgba(0,0,0,.09);padding:26px 19px 30px}
  .form-panel.mobile-layout-edge{padding:0}
  .form-panel.mobile-layout-edge .form-wrap{margin:0;min-height:100vh;border:0;border-radius:0;box-shadow:none}
}

/* v12 branding editor */
.branding-editor{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:18px;align-items:start}
.branding-controls{display:grid;gap:14px}
.theme-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px}
.theme-card h2{font-family:Georgia,serif;font-size:26px;font-weight:400;margin:0 0 15px}
.field-grid.three{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.colour-grid-wide{grid-template-columns:repeat(4,1fr)}
.advanced-branding{margin-top:17px;border-top:1px solid var(--line);padding-top:13px}
.advanced-branding summary{cursor:pointer;font-size:12px;font-weight:800;color:var(--muted);margin-bottom:14px}
.save-theme-button{position:sticky;bottom:14px;box-shadow:0 10px 32px rgba(23,48,32,.22)}
.phone-preview-wrap{position:sticky;top:18px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px}
.dark-preview-label{color:#617062;margin-bottom:10px}
.phone-preview{border:9px solid #171717;border-radius:35px;background:var(--p-bg);padding:14px 9px;min-height:690px;box-shadow:0 16px 38px rgba(0,0,0,.15)}
.preview-login-card{background:var(--p-card);border-radius:var(--p-radius);padding:22px 17px;color:var(--p-text);min-height:640px}
.preview-login-card.edge-preview{border-radius:0;min-height:662px;margin:-14px -9px;padding:30px 18px}
.preview-brand{display:flex;width:100%;margin-bottom:9px}.preview-brand.align-left{justify-content:flex-start}.preview-brand.align-center{justify-content:center}.preview-brand.align-right{justify-content:flex-end}
.preview-brand img{max-height:105px;object-fit:contain}
.preview-brand-copy{display:grid;gap:3px;margin-bottom:24px}.preview-brand-copy strong{color:var(--p-heading);line-height:1.05}.preview-brand-copy span{color:var(--p-muted)}
.align-left{text-align:left}.align-center{text-align:center}.align-right{text-align:right}
.preview-form-heading small{font-size:8px;letter-spacing:1.2px;color:var(--p-muted)}
.preview-form-heading h3{font-family:Georgia,serif;font-weight:400;line-height:1.05;color:var(--p-heading);margin:7px 0}
.preview-form-heading p{color:var(--p-muted);margin:0 0 20px;line-height:1.4}
.preview-login-card>label{display:grid;gap:5px;margin:12px 0;font-size:11px;font-weight:750}
.preview-input{height:42px;border:1px solid #cfd8cf;border-radius:9px;padding:12px;color:#9aa19a;background:#fff;font-weight:400}
.preview-login-card>button{width:100%;border:0;border-radius:10px;padding:13px;margin-top:15px;background:var(--p-button);color:var(--p-button-text);font-weight:800}
.preview-help{font-size:10px;color:var(--muted);line-height:1.5;margin:10px 3px 0}

/* v12 network monitor */
.network-hero{display:grid;grid-template-columns:1.45fr 1fr .8fr .8fr;gap:12px;align-items:stretch;background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;margin-bottom:14px}
.network-main-light{display:flex;align-items:center;gap:12px}.network-main-light small,.network-uptime span,.network-count span{display:block;font-size:10px;letter-spacing:.8px;color:var(--muted);font-weight:800}.network-main-light strong{font-size:24px}.status-light{font-size:37px;line-height:1}.status-light.green{color:#2f8b4b}.status-light.red{color:#c53e3e}.status-light.amber{color:#d49320}.status-light.grey{color:#a7aaa7}
.network-uptime,.network-count{border-left:1px solid var(--line);padding-left:18px;display:flex;flex-direction:column;justify-content:center}.network-uptime strong,.network-count strong{font-family:Georgia,serif;font-size:27px;font-weight:400;margin-top:4px}.network-count small{font-size:9px;color:var(--muted);margin-top:4px}
.network-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.network-service{display:flex;gap:10px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:15px;padding:15px}.network-service .status-light{font-size:25px}.network-service small{display:block;font-size:9px;letter-spacing:.7px;color:var(--muted);font-weight:800}.network-service strong{display:block;font-size:15px;margin:2px 0}.network-service p{font-size:10px;color:var(--muted);margin:0}
.monitor-settings-card{display:flex;justify-content:space-between;gap:25px;align-items:end;background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 20px;margin-bottom:14px}.monitor-settings-card h2{font-family:Georgia,serif;font-size:24px;font-weight:400;margin:0}.monitor-settings-card p{font-size:11px;color:var(--muted);margin:4px 0 0}.monitor-settings-form{display:grid;grid-template-columns:220px 180px auto;gap:10px;align-items:end}.inline-number{display:grid;grid-template-columns:1fr auto;align-items:center;gap:7px}.inline-number span{font-size:11px;color:var(--muted)}.wrap-cell{white-space:normal;min-width:260px;max-width:480px}
.reception-locked-actions{display:flex;align-items:center;gap:12px}.reception-locked-actions>span{font-size:10px;color:var(--muted)}

@media(max-width:1150px){.branding-editor{grid-template-columns:1fr}.phone-preview-wrap{position:static;max-width:430px}.network-hero{grid-template-columns:1fr 1fr}.network-grid{grid-template-columns:1fr 1fr}.monitor-settings-card{align-items:flex-start;flex-direction:column}.monitor-settings-form{width:100%;grid-template-columns:1fr 1fr auto}}
@media(max-width:700px){.field-grid.three{grid-template-columns:1fr}.colour-grid-wide{grid-template-columns:1fr 1fr}.network-hero{grid-template-columns:1fr}.network-uptime,.network-count{border-left:0;border-top:1px solid var(--line);padding:12px 0 0}.network-grid{grid-template-columns:1fr}.monitor-settings-form{grid-template-columns:1fr}.reception-locked-actions{width:100%;justify-content:space-between}.phone-preview-wrap{width:100%}}


/* v13 live device identity + London time */
.device-subname{font-size:11px;font-weight:750;color:var(--muted);margin:2px 0}
.table-subline{display:block;font-size:10px;color:var(--muted);margin-top:2px}
.monitor-last-check{
  margin:-2px 0 14px;padding:8px 11px;border:1px solid var(--line);
  border-radius:10px;background:#fff;font-size:10px;color:var(--muted)
}
.device-details .wrap-cell{word-break:break-word}
