/* XWhisperer, styled to match the Whisperer suite editorial theme
   (geowhisperer.org / imagewhisperer.org, shared editorial-theme.css).
   Palette and fonts reuse the suite's actual values. */
@import url("fonts.css");

:root{
  --ed-ink:#0a0a0a;
  --ed-paper:#f7f5f0;
  --ed-paper2:#f0ede6;
  --ed-cream:#ede9e0;
  --ed-card:#faf8f5;
  --ed-smoke:#6b6560;
  --ed-ash:#756f69;
  --ed-rust:#c44b28;
  --ed-line:#e0dbd4;
  --ed-line2:#d4cfc8;
  --ok:#3f7d43;
  --warn:#b06a12;
  --bad:#c0392b;
  --font-sans:'DM Sans',-apple-system,BlinkMacSystemFont,'SF Pro Display','Helvetica Neue',sans-serif;
  --font-mono:'JetBrains Mono','SF Mono',Monaco,'Cascadia Code',monospace;
  --radius:2px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:var(--font-sans); color:var(--ed-ink); background:var(--ed-paper);
  line-height:1.55; font-size:16px; -webkit-font-smoothing:antialiased;}
a{color:var(--ed-rust); text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1080px; margin:0 auto; padding:0 26px}
code,.mono{font-family:var(--font-mono); font-size:12.5px}
.eyebrow,.mono-label{font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.14em; font-size:11px; color:var(--ed-smoke)}

/* header / masthead */
.site-head{border-bottom:1px solid var(--ed-line); background:var(--ed-paper); position:sticky; top:0; z-index:5}
.head-inner{display:flex; align-items:center; justify-content:space-between; height:64px; gap:16px}
.wordmark{display:flex; align-items:center; gap:11px; color:var(--ed-ink)}
.wordmark:hover{text-decoration:none}
.dots{display:inline-flex; gap:5px}
.dots i{width:11px; height:11px; border-radius:50%; display:block}
.dots i:nth-child(1){background:#e0564a}
.dots i:nth-child(2){background:#e6a817}
.dots i:nth-child(3){background:#3fa34d}
.dots i:nth-child(4){background:#2f6fd0}
.wm-text{font-weight:500; font-size:18px; letter-spacing:-.01em}
.wm-text b{font-weight:700}
.nav{display:flex; align-items:center; gap:22px}
.nav a{color:var(--ed-ink); font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.12em; font-size:11px}
.nav a:hover{color:var(--ed-rust); text-decoration:none}
.lang{display:inline-flex; gap:8px; border-left:1px solid var(--ed-line); padding-left:18px}
.lang a{font-size:11px}
.lang a.on{color:var(--ed-rust); font-weight:700}

.main{padding:34px 26px 64px}

/* hero */
.hero{margin-bottom:22px}
.hero h1{font-size:30px; font-weight:700; letter-spacing:-.02em; margin:0 0 8px}
.hero .accent{color:var(--ed-rust)}
.lede{color:var(--ed-smoke); margin:0; font-size:15px}
.subline{margin:14px 0 0; font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.12em;
  font-size:11px; color:var(--ed-smoke); display:flex; gap:14px; flex-wrap:wrap; align-items:center}
.subline .dot{color:var(--ed-line2)}

/* forms */
.capture-form{margin:22px 0}
textarea,input[type=text]{font-family:var(--font-mono); background:var(--ed-card); border:1px solid var(--ed-line);
  border-radius:var(--radius); color:var(--ed-ink); font-size:14px; padding:12px 14px; width:100%}
textarea{resize:vertical; line-height:1.6}
textarea:focus,input[type=text]:focus{outline:none; border-color:var(--ed-rust); box-shadow:0 0 0 3px rgba(196,75,40,.1)}
.form-row{display:flex; align-items:center; gap:16px; margin-top:14px; flex-wrap:wrap}
.hint{color:var(--ed-smoke); font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.1em}
.errors{margin-top:16px; background:#fbeee9; border:1px solid #e7c3b5; border-radius:var(--radius); padding:12px 16px; font-size:14px}
.errors ul{margin:6px 0 0; padding-left:18px}

.btn{display:inline-flex; align-items:center; gap:8px; padding:9px 18px; border:1px solid var(--ed-line2);
  border-radius:var(--radius); background:var(--ed-paper); color:var(--ed-ink); cursor:pointer;
  font-family:var(--font-sans); font-size:12px; font-weight:500; text-transform:uppercase; letter-spacing:.08em;
  transition:background .2s,transform .1s,border-color .2s}
.btn:hover{text-decoration:none; border-color:var(--ed-ink)}
.btn:active{transform:scale(.98)}
.btn.primary{background:var(--ed-ink); color:var(--ed-paper); border-color:var(--ed-ink)}
.btn.primary:hover{background:#2a2a2a}
.btn.block{display:flex; width:100%; justify-content:center; margin-bottom:8px}
.btn.small{padding:6px 12px; font-size:11px}

/* section head */
.section-head{display:flex; align-items:center; justify-content:space-between; margin:40px 0 16px; gap:16px}
.section-head h1,.section-head h2{margin:0; font-size:15px; font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.14em; font-weight:500}
.section-head .big{font-family:var(--font-sans); font-size:22px; font-weight:700; text-transform:none; letter-spacing:-.01em}
.more{font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.12em; font-size:11px}

/* cards */
.cards{display:grid; grid-template-columns:repeat(auto-fill,minmax(310px,1fr)); gap:16px}
.card{display:block; border:1px solid var(--ed-line); border-radius:var(--radius); padding:0; color:var(--ed-ink);
  background:var(--ed-card); overflow:hidden; transition:border-color .2s, box-shadow .2s}
.card:hover{text-decoration:none; border-color:var(--ed-line2); box-shadow:0 2px 10px rgba(10,10,10,.05)}
.card-tab{display:flex; justify-content:space-between; align-items:center; padding:10px 16px; border-bottom:1px solid var(--ed-line)}
.card-body{padding:12px 16px 14px}
.handle{font-family:var(--font-mono); font-size:12px; letter-spacing:.02em; color:var(--ed-ink)}
.card-text{font-size:14.5px; color:#2a2622; min-height:44px; line-height:1.5}
.card-meta{display:flex; gap:12px; font-family:var(--font-mono); font-size:10.5px; text-transform:uppercase;
  letter-spacing:.08em; color:var(--ed-smoke); margin-top:12px; flex-wrap:wrap}
.card-meta .warn{color:var(--bad)}
.card-tags{margin-top:10px}

.status{font-family:var(--font-mono); font-size:10px; font-weight:500; text-transform:uppercase; letter-spacing:.1em;
  padding:3px 9px; border-radius:20px; white-space:nowrap}
.s-live{background:#e7f0e6; color:var(--ok)}
.s-edited{background:#f6ecda; color:var(--warn)}
.s-deleted,.s-unavailable{background:#f6e3df; color:var(--bad)}
.s-ok{background:#e7f0e6; color:var(--ok)}
.s-error{background:#f6e3df; color:var(--bad)}
.s-capturing,.s-pending,.s-queued{background:var(--ed-cream); color:var(--ed-smoke)}

.tag{display:inline-block; font-family:var(--font-mono); font-size:10.5px; text-transform:uppercase; letter-spacing:.06em;
  background:var(--ed-paper2); border:1px solid var(--ed-line); border-radius:20px; padding:2px 10px; margin:2px 4px 2px 0; color:var(--ed-smoke)}
.tag.warn{background:#f6e3df; border-color:#e7c3b5; color:var(--bad)}

.muted{color:var(--ed-smoke)}
.count{margin-top:18px; font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.1em}

/* search bar */
.search-bar{display:flex; gap:10px; flex-wrap:wrap; margin-bottom:22px}
.search-bar input{flex:0 0 auto}
.search-bar input[name=q]{flex:1; min-width:240px}

/* progress */
.progress{height:6px; background:var(--ed-cream); border-radius:20px; overflow:hidden; margin:8px 0 22px}
.progress .bar{height:100%; background:var(--ed-rust); transition:width .3s}
.job-table{width:100%; border-collapse:collapse; font-size:14px}
.job-table th,.job-table td{text-align:left; padding:10px 10px; border-bottom:1px solid var(--ed-line)}
.job-table th{font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.1em; font-size:10.5px; color:var(--ed-smoke); font-weight:500}
.jstatus{font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.08em}
.done-msg{margin-top:20px; font-size:15px}
.warn{color:var(--bad)}

/* detail */
.back{display:inline-block; margin-bottom:16px; font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.1em; font-size:11px}
.detail-grid{display:grid; grid-template-columns:1fr 320px; gap:24px; align-items:start}
.record-frame{border:1px solid var(--ed-line); border-radius:var(--radius); overflow:hidden; background:#fff}
.record-frame iframe{width:100%; height:1500px; border:0; display:block}
.detail-side{display:flex; flex-direction:column; gap:16px; position:sticky; top:80px}
.panel{border:1px solid var(--ed-line); border-radius:var(--radius); padding:16px; background:var(--ed-card)}
.panel-title{font-family:var(--font-mono); font-size:10.5px; text-transform:uppercase; letter-spacing:.14em; color:var(--ed-smoke); margin-bottom:12px}
.kv{display:flex; justify-content:space-between; gap:10px; font-size:12.5px; margin-top:9px; border-top:1px solid var(--ed-line); padding-top:9px}
.kv:first-of-type{border-top:0; margin-top:0; padding-top:0}
.kv span{color:var(--ed-smoke); font-family:var(--font-mono); font-size:10.5px; text-transform:uppercase; letter-spacing:.06em}
.kv b{font-family:var(--font-mono); font-size:11.5px; text-align:right}
.hash{display:block; word-break:break-all; background:var(--ed-paper2); padding:9px 11px; border-radius:var(--radius); font-family:var(--font-mono); font-size:11px}
.tiny{font-size:11px}
.ok-text{color:var(--ok); font-size:12.5px}
.panel input,.panel textarea{width:100%; margin-bottom:8px; font-size:12.5px; padding:9px 11px}
.citation{background:var(--ed-paper2); border:1px solid var(--ed-line); border-radius:var(--radius); padding:10px 12px;
  font-size:12px; line-height:1.5; margin-bottom:8px}
.citation .cl{font-family:var(--font-mono); font-size:9.5px; text-transform:uppercase; letter-spacing:.12em; color:var(--ed-smoke); display:block; margin-bottom:4px}
.copybtn{margin-top:2px}

/* footer */
.site-foot{border-top:1px solid var(--ed-line); color:var(--ed-smoke); font-size:12px; padding:22px 0 44px; margin-top:48px; background:var(--ed-paper)}
.site-foot p{margin:5px 0; line-height:1.6}
.foot-links{font-family:var(--font-mono); text-transform:uppercase; letter-spacing:.1em; font-size:10.5px}
.foot-links a{margin-right:18px}

@media (max-width:820px){
  .head-inner{height:auto; flex-wrap:wrap; padding:12px 0; gap:10px}
  .nav{gap:14px; flex-wrap:wrap}
  .detail-grid{grid-template-columns:1fr}
  .detail-side{position:static}
  .record-frame iframe{height:1000px}
  .hero h1{font-size:24px}
}
