/* Go With Taj brand + compatibility layer on top of console.css (the GorillaSafari prototype design system, copied as the master template).
   To re-brand for another client: change the tokens in console.css :root (--wine*, --gold*, --cream) and the logo/login image in Settings. */
body.console{ background:var(--cream); }
.console .content{ max-width:1400px; }
.console .brand{ padding:16px 16px 14px; flex-direction:column; align-items:stretch; gap:8px; }
.console .brand-plate img{ width:100%; max-height:46px; object-fit:contain; }
.console .brand-sub{ text-align:center; color:rgba(255,255,255,.5); }
.console .nav a .count{ margin-left:auto; }
.flash{ padding:11px 14px; border-radius:9px; margin-bottom:16px; font-weight:600; font-size:13px; border:1px solid transparent; }
.flash.ok{ background:var(--green-tint); color:var(--green); border-color:rgba(14,138,74,.25); }
.flash.err{ background:var(--red-tint); color:var(--red); border-color:rgba(180,35,24,.25); }
.flash.info{ background:var(--blue-tint); color:var(--blue); border-color:rgba(11,127,181,.25); }

/* plain form controls look like .input everywhere */
.console input[type=text],.console input[type=email],.console input[type=password],.console input[type=number],.console input[type=url],.console input[type=date],.console input[type=search],.console select,.console textarea,
.login-box input[type=text],.login-box input[type=email],.login-box input[type=password],.login-box input[type=number]{ width:100%; height:38px; padding:0 12px; border:1px solid var(--line-strong); border-radius:8px; background:#fff; outline:0; font:inherit; color:var(--ink); }
.console textarea{ height:auto; min-height:90px; padding:9px 12px; resize:vertical; line-height:1.5; }
.console input:focus,.console select:focus,.console textarea:focus,.login-box input:focus{ border-color:var(--gold-deep); box-shadow:0 0 0 3px var(--gold-tint); }
.console label{ font-weight:700; font-size:12px; }
.console .check{ display:flex; align-items:center; gap:8px; font-weight:600; } .console .check input{ width:auto; height:auto; }
.console .hint{ font-size:11.5px; color:var(--ink-faint); margin-top:4px; }
.console .field{ margin-bottom:16px; }
.console .toolbar input[type=text],.console .toolbar select{ width:auto; min-width:200px; }

/* legacy class aliases (older views) */
.btn.primary{ background:var(--wine); border-color:var(--wine); color:#fff; } .btn.primary:hover{ background:var(--wine-deep); border-color:var(--wine-deep); }
.btn.dark{ background:var(--wine-deep); border-color:var(--wine-deep); color:#fff; }
.btn.danger{ color:var(--red); } .btn.danger:hover{ border-color:var(--red); background:var(--red-tint); }
.btn.sm{ height:30px; padding:0 10px; font-size:12.5px; }
.pagehead{ display:flex; align-items:flex-end; gap:16px; margin-bottom:22px; flex-wrap:wrap; justify-content:space-between; }
.pagehead h1{ font-size:22px; } .pagehead p{ margin:4px 0 0; color:var(--ink-soft); }
.console .card{ padding:20px 22px; margin-bottom:20px; } .console .card h2{ margin-bottom:12px; font-size:14.5px; }
.console .card.nopad,.console .card.tablewrap{ padding:0; overflow-x:auto; }
.g2{ grid-template-columns:repeat(2,1fr); } .g3{ grid-template-columns:repeat(3,1fr); } .g4{ grid-template-columns:repeat(4,1fr); } .g5{ grid-template-columns:repeat(5,1fr); }
@media (max-width:1000px){ .g4,.g5,.g3{ grid-template-columns:repeat(2,1fr); } .g-main{ grid-template-columns:1fr; } .kpis{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){ .g2,.g3,.g4,.g5{ grid-template-columns:1fr; } .kpis{ grid-template-columns:1fr 1fr; } }
.stat{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:16px 18px; box-shadow:var(--shadow); color:inherit; text-decoration:none !important; }
.stat b{ display:block; font-size:26px; font-weight:800; color:var(--wine); line-height:1.1; } .stat span{ color:var(--ink-soft); font-size:12px; font-weight:600; } .stat.alert b{ color:var(--amber); }
.console table:not(.tbl){ width:100%; border-collapse:collapse; }
.console table:not(.tbl) th{ text-align:left; font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-faint); padding:10px 16px; background:var(--surface-2); border-bottom:1px solid var(--line); }
.console table:not(.tbl) td{ padding:11px 16px; border-bottom:1px solid var(--line); vertical-align:middle; }
.console .card:not(.tablewrap) table:not(.tbl) td{ padding:9px 6px; } .console .card:not(.tablewrap) table:not(.tbl) th{ padding:9px 6px; }
.badge.ok{ background:var(--green-tint); color:var(--green); } .badge.warn{ background:var(--amber-tint); color:var(--amber); } .badge.err{ background:var(--red-tint); color:var(--red); } .badge.info{ background:var(--blue-tint); color:var(--blue); }
.badge:not([class*="b-"]):not(.ok):not(.warn):not(.err):not(.info){ background:rgba(31,58,43,.07); color:var(--ink-soft); }
.tabs{ display:flex; gap:4px; flex-wrap:wrap; margin-bottom:16px; background:var(--surface-2); border:1px solid var(--line); padding:3px; border-radius:9px; width:fit-content; max-width:100%; }
.tabs a{ padding:5px 11px; border-radius:6px; font-size:12.5px; font-weight:600; color:var(--ink-soft); text-decoration:none; } .tabs a.on{ background:#fff; color:var(--wine); box-shadow:var(--shadow); } .tabs a .n{ font-size:11px; color:var(--ink-faint); margin-left:4px; }
.console .toolbar{ border:0; padding:0 0 14px; }
.row{ display:flex; gap:12px; flex-wrap:wrap; align-items:center; } .row.end{ justify-content:flex-end; }
.muted{ color:var(--ink-faint); } .small{ font-size:12px; } .right{ text-align:right; } .nowrap{ white-space:nowrap; }
.pager{ display:flex; gap:6px; margin-top:16px; flex-wrap:wrap; } .pager a{ padding:5px 11px; border:1px solid var(--line-strong); border-radius:8px; background:#fff; font-size:12.5px; text-decoration:none; color:var(--ink); } .pager a.on{ background:var(--wine); color:#fff; border-color:var(--wine); }
code{ background:rgba(31,58,43,.07); padding:1px 6px; border-radius:5px; font-size:.9em; }
pre.mono{ background:#14261C; color:#DCE6DC; padding:14px; border-radius:10px; overflow:auto; font-size:12px; }
details.box{ border:1px solid var(--line); border-radius:10px; padding:10px 14px; margin-bottom:10px; background:#fff; } details.box summary{ cursor:pointer; font-weight:700; }
.kv{ display:grid; grid-template-columns:150px 1fr; gap:8px 16px; } .kv dt{ color:var(--ink-faint); font-size:12px; } .kv dd{ margin:0; }
.codes{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:16px 0; } .codes code{ padding:8px 10px; font-size:1rem; text-align:center; }
.qr{ display:flex; gap:18px; align-items:center; flex-wrap:wrap; } .qr .secret{ font-family:monospace; font-size:1.05rem; letter-spacing:.08em; background:var(--surface-2); padding:10px 14px; border-radius:10px; word-break:break-all; }
.mgrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:12px; }
.mitem{ border:1px solid var(--line); border-radius:10px; overflow:hidden; background:#fff; cursor:pointer; position:relative; } .mitem:hover{ border-color:var(--gold-deep); } .mitem.sel{ outline:3px solid var(--gold); }
.mitem .im{ aspect-ratio:4/3; background:#EEEDE4 center/cover no-repeat; } .mitem .nm{ padding:6px 8px; font-size:11px; color:var(--ink-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dropzone{ border:2px dashed var(--line-strong); border-radius:12px; padding:22px; text-align:center; color:var(--ink-soft); background:var(--surface-2); margin-bottom:16px; } .dropzone.over{ border-color:var(--gold-deep); background:var(--gold-tint); }
/* legacy modal (admin.js: data-open / data-close) */
.modal-scrim{ position:fixed; inset:0; background:rgba(20,38,28,.6); z-index:1000; display:none; place-items:center; padding:20px; } .modal-scrim.show{ display:grid; }
.modal-scrim .modal{ position:static; transform:none; opacity:1; background:#fff; border-radius:14px; max-width:980px; width:100%; max-height:90vh; overflow:auto; padding:22px 24px; box-shadow:var(--shadow-lg); }
.modal-scrim .modal .mh{ display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; }
.nbadge{ margin-left:auto; background:var(--gold); color:var(--wine-deep); border-radius:100px; font-size:10.5px; font-weight:700; padding:1px 8px; }

/* login (split-screen with photo, as in the prototype) */
.login-art blockquote{ text-shadow:0 2px 14px rgba(0,0,0,.35); }
.login-box .sub{ color:var(--ink-soft); margin:0 0 24px; }
.login-box .flash{ margin-bottom:16px; }
.login-box .btn{ width:100%; justify-content:center; height:42px; }
.login-box .link-row{ margin-top:16px; text-align:center; font-size:12.5px; }
.login-box .btn.primary,.login-box .btn.btn-primary{ background:var(--wine); color:#fff; }
.login-box .codes .btn{ width:auto; }
.login-form{ overflow-y:auto; }
.login-box{ padding:8px 0; }
.login-logo{ height:46px; width:auto; }
.bare-wide .login-box{ width:min(520px,100%); }
@media (max-width:900px){ .login-art{ display:none; } .login-form{ min-height:100vh; } }

/* legacy #toast used by admin.js */
#toast.toast{ position:fixed; bottom:20px; left:50%; transform:translateX(-50%); z-index:95; display:none; max-width:90vw; }
#toast.toast.show{ display:block; } #toast.toast.err{ background:var(--red); }
@media (max-width:1000px){ .app{ grid-template-columns:1fr; } .sidebar{ position:fixed; left:0; top:0; transform:translateX(-100%); transition:transform .2s; width:var(--side-w); } .sidebar.open{ transform:none; box-shadow:var(--shadow-lg); } .topbar .menu-btn{ display:inline-flex; } .hide-sm{ display:none; } .content{ padding:18px 14px 50px; } }
.brand-plate img{ height:64px; width:auto; margin:0 auto; }
.console .brand-plate img{ width:auto; max-height:64px; }
.brand-plate.big{ width:auto; display:inline-block; align-self:flex-start; padding:12px 18px; }
.brand-plate.big img{ height:84px; }
.login-logo{ height:72px; }
.tbl.nw td,.tbl.nw th{ white-space:nowrap; } .tbl.nw td:nth-child(2){ white-space:normal; }

/* structured content editor */
.cf-bar{ position:sticky; top:60px; z-index:15; display:flex; align-items:center; gap:6px; flex-wrap:wrap; background:#fff; border:1px solid var(--line); border-radius:10px; padding:6px 10px; margin-bottom:14px; box-shadow:var(--shadow); }
.cf-bar button{ border:1px solid var(--line-strong); background:#fff; border-radius:7px; height:30px; min-width:32px; padding:0 9px; cursor:pointer; font-weight:600; font-size:12.5px; } .cf-bar button:hover{ border-color:var(--gold-deep); } .cf-bar button[disabled]{ opacity:.4; cursor:default; }
.cf-bar .sep{ width:1px; height:22px; background:var(--line); margin:0 4px; } .cf-bar .hint{ margin:0 0 0 8px; flex:1; min-width:200px; }
.cf-card .card-head{ cursor:pointer; user-select:none; } .cf-card .cf-cardbody{ display:none; padding:16px 20px 8px; } .cf-card.open > .cf-cardbody,.cf-card.open > .cf-sub{ display:block; }
.cf-chev{ color:var(--ink-faint); transition:transform .15s; } .cf-card.open .cf-chev{ transform:rotate(180deg); }
.cf-card{ margin-bottom:14px; }
.cf-f{ margin-bottom:12px; } .cf-f label{ display:block; font-size:11px; font-weight:700; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.05em; margin-bottom:4px; }
.cf-rich{ min-height:38px; padding:8px 12px; border:1px solid var(--line-strong); border-radius:8px; background:#fff; line-height:1.55; outline:0; white-space:pre-wrap; word-break:break-word; }
.cf-f.tall .cf-rich{ min-height:64px; } .cf-rich:focus{ border-color:var(--gold-deep); box-shadow:0 0 0 3px var(--gold-tint); }
.cf-rich a{ color:var(--gold-link); text-decoration:underline; }
.cf-line{ width:100%; height:38px; padding:0 12px; border:1px solid var(--line-strong); border-radius:8px; background:#fff; font:inherit; }
.cf-f.head .cf-line{ font-weight:700; } .cf-f.hh1 .cf-line{ font-size:17px; } .cf-f.hh2 .cf-line{ font-size:15px; }
.cf-linkrow{ display:flex; align-items:center; gap:8px; margin-top:6px; color:var(--ink-faint); } .cf-url{ flex:1; height:32px; padding:0 10px; border:1px solid var(--line); border-radius:7px; font-size:12px; }
.cf-f.img{ display:flex; gap:14px; align-items:flex-start; padding:10px; border:1px dashed var(--line-strong); border-radius:10px; background:var(--surface-2); }
.cf-thumb{ width:120px; height:80px; border-radius:8px; background:#EEE center/cover no-repeat; flex:none; border:1px solid var(--line); } .cf-imginfo{ flex:1; display:flex; flex-direction:column; gap:8px; align-items:flex-start; } .cf-imginfo .cf-line{ height:34px; }
.cf-sub{ border:1px solid var(--line); border-radius:12px; background:#fff; margin:10px 0 14px; box-shadow:var(--shadow); } .cf-sub .cf-repbody{ padding:14px 16px 4px; }
.cf-subhead{ display:flex; align-items:center; gap:10px; padding:10px 14px; border-bottom:1px solid var(--line); background:var(--surface-2); border-radius:12px 12px 0 0; } .cf-subhead b{ flex:1; font-size:13px; }
.cf-card > .cf-sub{ margin:0; border:0; box-shadow:none; } .cf-card > .cf-sub .cf-subhead{ cursor:default; }
.cf-row{ display:flex; gap:8px; align-items:flex-start; } .cf-row .cf-repbody{ flex:1; min-width:0; } .cf-row > .cf-ctl{ padding-top:22px; }
.cf-ctl{ display:flex; gap:2px; flex:none; opacity:.55; } .cf-row:hover > .cf-ctl,.cf-subhead:hover .cf-ctl{ opacity:1; }
.cf-ib{ width:28px; height:28px; border:0; background:none; border-radius:6px; cursor:pointer; color:var(--ink-soft); } .cf-ib:hover{ background:var(--gold-tint); color:var(--ink); } .cf-ib.danger:hover{ background:var(--red-tint); color:var(--red); }
.cf-add{ margin:2px 0 16px; }
.serp{ font-family:Arial,sans-serif; } .serp-url{ color:#202124; font-size:12px; } .serp-t{ color:#1a0dab; font-size:19px; line-height:1.3; margin:2px 0 3px; } .serp-d{ color:#4d5156; font-size:13px; line-height:1.5; }
.checks{ list-style:none; margin:0; padding:6px 0; } .checks li{ display:flex; gap:10px; padding:8px 20px; font-size:12.5px; } .checks li i{ margin-top:2px; }

/* global areas managers */
.gl-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:12px; }
.gl-item{ display:flex; gap:12px; align-items:center; border:1px solid var(--line); border-radius:12px; padding:10px; background:#fff; }
.gl-thumb{ width:96px; height:64px; border-radius:8px; background:#EEEDE4 center/cover no-repeat; flex:none; border:1px solid var(--line); }
.gl-thumb.big{ width:200px; height:130px; }
.gl-meta{ display:flex; flex-direction:column; gap:8px; align-items:flex-start; min-width:0; } .gl-meta b{ font-size:12.5px; line-height:1.3; }

/* rich text editor inside the structured editor / modals */
.cf-rtehost .rte{ margin:0 0 14px; } .rte{ border:1px solid var(--line-strong); border-radius:10px; background:#fff; overflow:hidden; }
.rte-bar{ position:sticky; top:0; z-index:5; } .rte .rte-bar:first-child{ border-radius:10px 10px 0 0; }
.rte-body{ font-family:var(--sans); }
.rte-body h2{ font-size:21px; margin:20px 0 8px; color:var(--wine); } .rte-body h3{ font-size:17px; margin:16px 0 6px; } .rte-body h4{ font-size:14px; margin:14px 0 4px; }
.rte-body [data-align=center]{ text-align:center; } .rte-body [data-align=right]{ text-align:right; } .rte-body [data-align=justify]{ text-align:justify; }
.rte-body ul,.rte-body ol{ padding-left:22px; } .rte-body .check-list{ list-style:none; padding-left:0; } .rte-body .check-list i.icon{ color:var(--gold-deep); margin-right:8px; }
.rte-body .callout{ background:var(--gold-tint); border:1px solid rgba(200,150,90,.35); border-radius:10px; padding:10px 14px; margin:12px 0; display:block; }
.rte-body table{ border-collapse:collapse; width:100%; margin:12px 0; } .rte-body th,.rte-body td{ border:1px solid var(--line-strong); padding:6px 8px; text-align:left; } .rte-body th{ background:var(--surface-2); }
.rte-body img{ max-width:100%; height:auto; border-radius:8px; }

/* WYSIWYG document editor (iframe with the website's CSS) */
.rte-wysiwyg{ overflow:visible; border-radius:10px; } .rte-wysiwyg > .rte-bar:first-child{ position:sticky; top:60px; z-index:12; border-radius:10px 10px 0 0; box-shadow:0 4px 10px rgba(20,38,28,.06); }
.rte-frame{ border-radius:0 0 10px 10px; }
.cf-doccard > .cf-chead{ cursor:default; } .cf-doccard{ overflow:visible; } .cf-doccard .cf-rtehost{ padding:0; }
.cf-doccard .cf-rtehost .rte{ margin:0; border:0; border-top:1px solid var(--line-strong); border-radius:0 0 14px 14px; }

/* structured editor in the prototype's tour-editor layout */
.tab-panel .cf-card{ box-shadow:none; border-radius:12px; margin-bottom:12px; }
.tab-panel > .day{ margin-bottom:10px; } .tab-panel .day .cf-ctl{ opacity:.7; }
.day-head .cf-ctl{ margin-left:auto; } .day-head .t{ flex:1; }
.tab-panel .add-block{ margin-bottom:14px; }
#cfBar{ top:0; border-radius:0; border-left:0; border-right:0; margin:0; box-shadow:none; }


/* ---------- schema-driven editor (experiences, events, stories, page texts) ---------- */
.editor-grid{ display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:20px; align-items:start; }
.editor-main.card{ padding:0; overflow:hidden; }
.editor-side{ display:flex; flex-direction:column; gap:16px; position:sticky; top:76px; }
.editor-side .card{ margin-bottom:0; padding:0; }
.editor-side .card-pad{ padding:16px 18px; }
.stack-sm{ display:flex; flex-direction:column; gap:8px; }
.etabs{ display:flex; gap:2px; padding:10px 14px 0; border-bottom:1px solid var(--line); background:var(--surface-2); overflow-x:auto; }
.etab{ border:0; background:transparent; padding:10px 14px; font-weight:700; font-size:12.5px; color:var(--ink-soft); cursor:pointer; border-bottom:3px solid transparent; white-space:nowrap; }
.etab:hover{ color:var(--wine); }
.etab.on{ color:var(--wine); border-bottom-color:var(--gold-deep); }
.epanel{ display:none; padding:22px 24px 8px; }
.epanel.on{ display:block; }
.fgrid{ display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
.fgrid .field.wide{ grid-column:1 / -1; }
.field .hint.count{ font-weight:600; }
.imgpick{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.imgpick .imgbox{ width:92px; aspect-ratio:4/3; border-radius:8px; overflow:hidden; background:var(--surface-2); border:1px solid var(--line-strong); flex:none; }
.imgpick .imgbox img{ width:100%; height:100%; object-fit:cover; }
.imgpick input[type=text]{ flex:1; min-width:140px; }
.gallery-edit{ display:grid; grid-template-columns:repeat(auto-fill,minmax(110px,1fr)); gap:10px; margin-bottom:10px; }
.gitem{ position:relative; aspect-ratio:4/3; border-radius:8px; overflow:hidden; border:1px solid var(--line-strong); background:var(--surface-2); }
.gitem img{ width:100%; height:100%; object-fit:cover; }
.gitem .gx{ position:absolute; top:5px; right:5px; width:22px; height:22px; border-radius:50%; border:0; background:rgba(180,35,24,.92); color:#fff; cursor:pointer; font-size:14px; line-height:1; }
.checkbox-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:8px 14px; }
.repeater{ margin-bottom:6px; }
.rep-rows{ display:flex; flex-direction:column; gap:8px; margin-bottom:10px; }
.rep-row{ border:1px solid var(--line-strong); border-radius:10px; background:#fff; }
.rep-head{ display:flex; align-items:center; gap:10px; padding:9px 12px; cursor:pointer; background:var(--surface-2); border-radius:10px; }
.rep-row.open > .rep-head{ border-bottom:1px solid var(--line); border-radius:10px 10px 0 0; }
.rep-head .grip{ color:var(--ink-faint); font-size:12px; }
.rep-title{ font-weight:700; font-size:13px; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rep-actions{ display:flex; gap:4px; }
.rep-actions .btn{ width:28px; height:28px; padding:0; justify-content:center; }
.rep-body{ display:none; padding:14px 16px 4px; }
.rep-row.open > .rep-body{ display:block; }
.gprev{ font-family:Arial,sans-serif; }
.gprev .gp-url{ color:#202124; font-size:12px; word-break:break-all; }
.gprev .gp-title{ color:#1a0dab; font-size:18px; line-height:1.25; margin:3px 0; }
.gprev .gp-desc{ color:#4d5156; font-size:13px; line-height:1.45; }
.revlist{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.revlist li{ display:flex; justify-content:space-between; align-items:center; gap:10px; font-size:12.5px; }
.pagecards{ gap:16px; }
.pagecard{ display:flex; align-items:center; gap:14px; padding:16px 18px; text-decoration:none !important; color:inherit; transition:transform .15s ease, box-shadow .15s ease; }
.pagecard:hover{ transform:translateY(-2px); box-shadow:var(--shadow-lg); }
.pagecard .ico{ width:42px; height:42px; border-radius:10px; display:grid; place-items:center; flex:none; }
.pagecard b{ display:block; color:var(--wine); }
.pagecard .go{ margin-left:auto; color:var(--ink-faint); }
@media (max-width:1100px){ .editor-grid{ grid-template-columns:1fr; } .editor-side{ position:static; } .fgrid{ grid-template-columns:1fr; } }

.gprev .gp-img{ aspect-ratio:1.91/1; border-radius:8px; overflow:hidden; background:var(--surface-2); margin-bottom:10px; border:1px solid var(--line); }
.gprev .gp-img img{ width:100%; height:100%; object-fit:cover; }
