/* Shared OCE styles — used by /listing/[slug], /auth/*, /admin */
:root{
  --serif:'Fraunces','Times New Roman',serif;
  --sans:'Inter Tight',system-ui,-apple-system,sans-serif;
  --bg:#F7F4EE;
  --bg-deep:#EFEAE0;
  --ink:#0E1116;
  --ink-soft:#2A2823;
  --muted:#5C5A53;
  --rule:#E5E0D5;
  --rule-strong:#D4CDBE;
  --accent:#C8623A;
  --accent-deep:#9C4623;
  --paper:#FBF9F4;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--sans);color:var(--ink);background:var(--bg);line-height:1.55;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}

.wrap{max-width:1180px;margin:0 auto;padding:0 28px}
.brandbar{display:flex;justify-content:space-between;align-items:center;padding:24px 28px;border-bottom:1px solid var(--rule)}
.brandbar a.logo{font-family:var(--serif);font-size:22px;letter-spacing:-.01em}
.brandbar nav a{margin-left:18px;font-size:13px;color:var(--muted)}
.brandbar nav a:hover{color:var(--accent)}

h1,h2,h3{font-family:var(--serif);font-weight:300;letter-spacing:-.02em;line-height:1.08}
h1{font-size:54px}
h2{font-size:34px}
h3{font-size:22px}
em{font-style:italic;color:var(--accent)}

.eyebrow{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);display:flex;gap:12px;align-items:center}

.btn{display:inline-block;padding:14px 22px;font-size:13px;letter-spacing:.04em;border-radius:2px;text-align:center;cursor:pointer;border:1px solid transparent;font-family:inherit;transition:all .2s ease}
.btn.primary{background:var(--ink);color:var(--paper)}
.btn.primary:hover{background:var(--accent-deep)}
.btn.ghost{background:transparent;border-color:var(--ink);color:var(--ink)}
.btn.ghost:hover{background:var(--ink);color:var(--paper)}
.btn.link{background:transparent;color:var(--accent);padding:8px 0;border-bottom:1px solid var(--accent);border-radius:0;display:inline-block}
.btn:disabled{opacity:.5;cursor:not-allowed}

.field{display:block;margin-bottom:16px}
.field label{display:block;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.field input, .field select, .field textarea{width:100%;padding:14px 16px;border:1px solid var(--rule-strong);background:var(--paper);font-family:var(--sans);font-size:15px;color:var(--ink);border-radius:2px}
.field input:focus, .field select:focus, .field textarea:focus{outline:none;border-color:var(--accent)}
.field .help{font-size:12px;color:var(--muted);margin-top:6px}

.alert{padding:14px 18px;border-radius:2px;font-size:14px;margin-bottom:18px}
.alert.error{background:#fdecea;color:#7a2317;border:1px solid #f5c6c1}
.alert.success{background:#e8f3ec;color:#1f5b34;border:1px solid #b9dcc4}
.alert.info{background:#fbf2e6;color:#7a4717;border:1px solid #ead7b6}

/* Auth card */
.auth-shell{min-height:calc(100vh - 80px);display:flex;align-items:center;justify-content:center;padding:40px 20px}
.auth-card{max-width:440px;width:100%;background:var(--paper);border:1px solid var(--rule);padding:48px 40px;border-radius:2px}
.auth-card h1{font-size:36px;margin-bottom:8px}
.auth-card .sub{color:var(--muted);font-size:14px;margin-bottom:32px}
.auth-card .row{display:flex;justify-content:space-between;align-items:center;margin-top:18px;font-size:13px;color:var(--muted)}
.auth-card .row a{color:var(--accent);border-bottom:1px solid var(--accent)}

/* Listing detail */
.listing-hero{min-height:540px;background-size:cover;background-position:center;display:flex;align-items:flex-end;color:#fff;padding:48px 0}
.listing-hero .listing-eyebrow{display:flex;gap:10px;align-items:center;font-size:11px;letter-spacing:.22em;text-transform:uppercase;opacity:.95;margin-bottom:14px}
.listing-hero .tier-pill{padding:4px 10px;background:var(--accent);color:#fff;border-radius:2px;letter-spacing:.16em;font-size:10px}
.listing-hero .tier-pill.tier-featured{background:#0E1116}
.listing-name{font-size:64px;font-family:var(--serif);font-weight:300;line-height:1;max-width:900px}
.listing-tagline{font-family:var(--serif);font-style:italic;font-size:24px;font-weight:300;margin-top:14px;max-width:800px;opacity:.95}

.listing-body{padding:64px 0 96px;background:var(--bg)}
.two-col{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,.9fr);gap:64px}
@media (max-width:780px){.two-col{grid-template-columns:1fr;gap:36px}.listing-name{font-size:42px}}
.blurb{font-family:var(--serif);font-size:22px;line-height:1.55;font-weight:300;color:var(--ink-soft);margin-bottom:24px}
.editor-note{padding:18px 22px;background:var(--paper);border-left:3px solid var(--accent);font-size:14px;color:var(--ink-soft);margin-bottom:32px;font-style:italic}
.gallery{margin-top:36px}
.gallery h3{margin-bottom:16px;font-size:14px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-family:var(--sans)}
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.gallery-tile img{width:100%;height:200px;object-fit:cover}

.facts{display:grid;grid-template-columns:max-content 1fr;gap:8px 16px;font-size:14px;margin-bottom:24px}
.facts dt{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding-top:4px}
.facts dd{color:var(--ink)}
.facts a{color:var(--accent);border-bottom:1px solid rgba(200,98,58,.4)}
.cta-stack{display:flex;flex-direction:column;gap:10px}
.cta-stack .btn{width:100%}

/* Admin */
.admin-wrap{max-width:1280px;margin:0 auto;padding:32px 28px}
.admin-tabs{display:flex;gap:6px;border-bottom:1px solid var(--rule);margin-bottom:24px}
.admin-tabs button{padding:12px 18px;font-size:13px;letter-spacing:.04em;color:var(--muted);border-bottom:2px solid transparent}
.admin-tabs button.active{color:var(--ink);border-bottom-color:var(--accent)}
.admin-table{width:100%;border-collapse:collapse;background:var(--paper);border:1px solid var(--rule)}
.admin-table th,.admin-table td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--rule);font-size:14px;vertical-align:top}
.admin-table th{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);background:var(--bg-deep)}
.admin-table tr:last-child td{border-bottom:none}
.tag{display:inline-block;padding:2px 8px;background:var(--bg-deep);font-size:11px;letter-spacing:.1em;text-transform:uppercase;border-radius:2px;color:var(--muted)}
.tag.featured{background:var(--ink);color:#fff}
.tag.verified{background:var(--accent);color:#fff}
.tag.pending{background:#fbf2e6;color:#7a4717}
.tag.published{background:#e8f3ec;color:#1f5b34}
.tag.draft{background:#f5f3ed;color:var(--muted)}
.btn-row{display:flex;gap:8px;flex-wrap:wrap}
.btn-row .btn{padding:6px 12px;font-size:12px}

/* Misc */
footer.foot{padding:32px 28px;border-top:1px solid var(--rule);color:var(--muted);font-size:13px;text-align:center}

/* Claim banner on listing page */
.claim-banner{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:20px 24px;background:var(--paper);border:1px solid var(--rule-strong);border-left:3px solid var(--accent);margin-bottom:32px;flex-wrap:wrap}
.claim-banner b{font-family:var(--serif);font-size:18px;font-weight:400}
.claim-banner .btn{flex-shrink:0}
.claim-status{display:inline-block;padding:8px 14px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;border-radius:2px}
.claim-status.pending{background:#fbf2e6;color:#7a4717;border:1px solid #ead7b6}
.claim-status.verified{background:#e8f3ec;color:#1f5b34;border:1px solid #b9dcc4}

/* Owner dashboard */
.owner-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}
.owner-card{display:block;padding:22px 24px;background:var(--paper);border:1px solid var(--rule);transition:border-color .2s,transform .2s}
.owner-card:hover{border-color:var(--accent);transform:translateY(-1px)}
.owner-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px}
.owner-card h3{font-size:20px;line-height:1.2;font-weight:400}
.owner-card .muted{color:var(--muted);font-size:13px;margin-bottom:14px}
.owner-card-meta{display:flex;justify-content:space-between;align-items:center;font-size:12px}
.owner-card-meta .link-arrow{color:var(--accent);font-size:13px}

/* Owner edit form */
.edit-form{max-width:780px}
.edit-section{background:var(--paper);border:1px solid var(--rule);padding:32px;margin-bottom:24px;border-radius:2px}
.edit-section h2{font-size:24px;margin-bottom:20px;font-family:var(--serif)}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:680px){.grid-2{grid-template-columns:1fr}}
.hours-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media (max-width:680px){.hours-grid{grid-template-columns:1fr}}
.cta-row{display:flex;gap:12px;align-items:center}

/* Photos editor */
.photo-row{display:grid;grid-template-columns:120px 1fr;gap:18px;padding:14px 0;border-bottom:1px solid var(--rule);align-items:center}
.photo-row img{width:120px;height:88px;object-fit:cover;border-radius:2px}
.photo-fields{display:grid;grid-template-columns:1fr 90px auto auto auto;gap:10px;align-items:center}
.photo-fields input[type="text"], .photo-fields input:not([type]){padding:8px 12px;border:1px solid var(--rule-strong);background:var(--paper);font-size:13px;font-family:inherit}
.photo-fields .btn{padding:6px 12px;font-size:12px}
@media (max-width:780px){.photo-row{grid-template-columns:1fr}.photo-fields{grid-template-columns:1fr 1fr}}
.btn.danger, .btn.link.danger{color:#7a2317;border-color:#7a2317}
.btn.link.danger{border-bottom:1px solid #7a2317}
.alert.warn{background:#fbf2e6;color:#7a4717;border:1px solid #ead7b6}
.tag.rejected{background:#fdecea;color:#7a2317}
.tag.expired{background:#f5f3ed;color:var(--muted)}
.tag.unclaimed{background:#f5f3ed;color:var(--muted)}
.tag.free{background:#f5f3ed;color:var(--muted)}
.tag.hidden{background:#fdecea;color:#7a2317}

/* Generic helpers */
.muted{color:var(--muted)}
.tiny{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.small{font-size:13px;color:var(--muted)}

/* Image upload dropzone */
.dropzone{border:2px dashed var(--rule-strong);background:var(--bg);border-radius:3px;padding:28px;text-align:center;cursor:pointer;transition:all .2s ease;margin-bottom:18px}
.dropzone:hover, .dropzone.dragover{border-color:var(--accent);background:var(--paper)}
.dropzone-inner{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--muted);font-size:14px;pointer-events:none}
.dropzone-inner b{color:var(--ink);font-size:15px;font-weight:500}
.dropzone-inner .help{font-size:12px;color:var(--muted)}
.dropzone input[type="file"]{display:none}
.upload-progress{margin:12px 0;display:flex;flex-direction:column;gap:8px}
.upload-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;background:var(--paper);border:1px solid var(--rule);border-radius:2px;font-size:13px}
.upload-row .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-soft)}
.upload-row .status{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.upload-row.ok{border-left:3px solid #1f5b34}
.upload-row.ok .status{color:#1f5b34}
.upload-row.err{border-left:3px solid #7a2317;background:#fdecea}
.upload-row.err .status{color:#7a2317}

/* Hours editor */
.hours-rows{display:flex;flex-direction:column;gap:8px}
.hours-row{display:grid;grid-template-columns:110px 110px 1fr;gap:14px;align-items:center;padding:10px 14px;background:var(--paper);border:1px solid var(--rule);border-radius:2px}
.hours-day{font-size:13px;font-weight:500;color:var(--ink);letter-spacing:.04em;text-transform:capitalize}
.hours-toggle{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);cursor:pointer;user-select:none}
.hours-toggle input[type="checkbox"]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}
.hours-toggle .label-on, .hours-toggle .label-off{font-size:11px;letter-spacing:.16em;text-transform:uppercase}
.hours-times{display:flex;align-items:center;gap:8px}
.hours-times input[type="time"]{padding:8px 10px;border:1px solid var(--rule-strong);background:var(--bg);font-family:inherit;font-size:13px;color:var(--ink);border-radius:2px;flex:1;min-width:0}
.hours-times input[type="time"]:disabled{opacity:.4;cursor:not-allowed}
.hours-dash{color:var(--muted);font-size:13px}
.hours-times .closed-text{color:var(--muted);font-size:13px;font-style:italic;flex:1}
@media (max-width:680px){.hours-row{grid-template-columns:90px 1fr;gap:10px}.hours-toggle{grid-column:1 / -1;justify-content:flex-start}}

/* Open status badge in hero */
.open-status{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:2px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:500;background:rgba(255,255,255,.92);backdrop-filter:blur(4px);margin-top:14px;color:var(--ink)}
.open-status .dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.open-status--open{color:#0f4422}
.open-status--open .dot{background:#1f8a4a;box-shadow:0 0 0 3px rgba(31,138,74,.18)}
.open-status--closing-soon{color:#7a4717}
.open-status--closing-soon .dot{background:#d48a2c;box-shadow:0 0 0 3px rgba(212,138,44,.2)}
.open-status--closed{color:#5C5A53}
.open-status--closed .dot{background:#9a9890}

/* Admin claim review cards */
.claim-cards{display:flex;flex-direction:column;gap:16px}
.claim-card{background:var(--paper);border:1px solid var(--rule);border-radius:2px;padding:22px 24px;transition:border-color .2s}
.claim-card:hover{border-color:var(--rule-strong)}
.claim-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--rule);flex-wrap:wrap}
.claim-card-head .claim-biz{font-family:var(--serif);font-size:22px;font-weight:400;line-height:1.2;color:var(--ink)}
.claim-card-head .claim-biz a{color:var(--ink);border-bottom:1px solid var(--rule-strong)}
.claim-card-head .claim-biz a:hover{color:var(--accent);border-bottom-color:var(--accent)}
.claim-card-head .submitted{font-size:12px;color:var(--muted);text-align:right;flex-shrink:0}
.claim-card-body{display:flex;flex-direction:column;gap:12px;margin-bottom:18px}
.claim-row{display:grid;grid-template-columns:140px 1fr;gap:14px;align-items:start;font-size:14px}
@media (max-width:680px){.claim-row{grid-template-columns:1fr;gap:4px}}
.claim-label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding-top:3px}
.claim-email{color:var(--ink);word-break:break-all}
.claim-email a{color:var(--accent);border-bottom:1px solid rgba(200,98,58,.4)}
.claim-evidence{padding:12px 14px;background:var(--bg);border:1px solid var(--rule);border-radius:2px;font-size:13px;color:var(--ink-soft);line-height:1.55;white-space:pre-wrap;word-break:break-word;max-height:160px;overflow-y:auto}
.claim-domains{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--ink-soft)}
.claim-domains .dom{font-family:'SF Mono',Menlo,Consolas,monospace;color:var(--ink);font-size:12px}
.badge{display:inline-block;padding:3px 10px;font-size:10px;letter-spacing:.16em;text-transform:uppercase;border-radius:2px;font-weight:500}
.badge.match{background:#e8f3ec;color:#1f5b34;border:1px solid #b9dcc4}
.badge.nomatch{background:#fdecea;color:#7a2317;border:1px solid #f5c6c1}
.claim-card-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.claim-card-actions .btn{padding:8px 16px;font-size:12px}
.claim-card-actions .btn.approve{background:#1f5b34;color:#fff;border-color:#1f5b34}
.claim-card-actions .btn.approve:hover{background:#164524}
.claim-card-actions .btn.reject{background:transparent;border-color:#7a2317;color:#7a2317}
.claim-card-actions .btn.reject:hover{background:#7a2317;color:#fff}
.claim-empty{padding:48px 24px;text-align:center;color:var(--muted);font-size:14px;background:var(--paper);border:1px dashed var(--rule-strong);border-radius:2px}
