.extmem-app{
  --paper:#f6f4ee;
  --panel:#ffffff;
  --ink:#23281f;
  --ink-soft:#5b6355;
  --line:#d8d6c8;
  --survey:#2f6b52;
  --survey-dark:#204c3b;
  --brass:#b8842f;
  --alert:#a83f2a;
  --ok:#2f6b52;
  --warn:#b8842f;
  --radius:10px;

  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'IBM Plex Sans', sans-serif;
  line-height:1.5;
}
.extmem-app *{box-sizing:border-box;}
.extmem-app ::selection{background:var(--brass); color:#fff;}
.extmem-app a{color:var(--survey-dark);}

.extmem-app .extmem-hero{
  position:relative;
  background:var(--ink);
  color:var(--paper);
  padding:38px 24px 32px;
  overflow:hidden;
}
.extmem-app .extmem-hero .contours{
  position:absolute; inset:0; opacity:0.14; pointer-events:none;
}
.extmem-app .extmem-hero .hero-inner{
  position:relative; max-width:880px; margin:0 auto;
}
.extmem-app .eyebrow{
  font-family:'IBM Plex Mono', monospace;
  font-size:12px;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--brass);
  margin:0 0 10px;
}
.extmem-app h1{
  font-family:'Space Grotesk', sans-serif;
  font-weight:700;
  font-size:clamp(24px, 4vw, 34px);
  margin:0 0 10px;
  letter-spacing:-0.01em;
}
.extmem-app .extmem-hero p{
  margin:0;
  max-width:56ch;
  color:#d7d9cd;
  font-size:15px;
}

.extmem-app .extmem-main{max-width:880px; margin:0 auto; padding:28px 24px 80px;}

.extmem-app .card{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:24px;
  margin-bottom:22px;
  position:relative;
}
.extmem-app .card-head{
  display:flex; align-items:center; gap:12px; margin-bottom:16px;
}
.extmem-app .stamp{
  flex:0 0 auto;
  width:30px; height:30px;
  border:1.5px solid var(--brass);
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-family:'IBM Plex Mono', monospace;
  font-weight:600; font-size:13px;
  color:var(--brass);
}
.extmem-app .card-head h2{
  font-family:'Space Grotesk', sans-serif;
  font-size:18px;
  margin:0;
  font-weight:600;
}
.extmem-app .card-sub{
  font-size:13px;
  color:var(--ink-soft);
  margin:-8px 0 16px 42px;
}

.extmem-app input:focus, .extmem-app button:focus-visible{
  outline:2px solid var(--survey);
  outline-offset:1px;
}

.extmem-app .filedrop{
  border:1.5px dashed var(--line);
  border-radius:8px;
  padding:20px;
  text-align:center;
  font-size:13px;
  color:var(--ink-soft);
  cursor:pointer;
  background:var(--paper);
}
.extmem-app .filedrop.has-file{border-color:var(--survey); color:var(--survey-dark);}
.extmem-app .filedrop input{display:none;}

.extmem-app button.primary{
  font-family:'IBM Plex Sans', sans-serif;
  font-weight:600;
  font-size:14px;
  padding:11px 20px;
  background:var(--survey);
  color:#fff;
  border:none;
  border-radius:8px;
  cursor:pointer;
}
.extmem-app button.primary:disabled{background:#a8ab9e; cursor:not-allowed;}
.extmem-app button.primary:hover:not(:disabled){background:var(--survey-dark);}

.extmem-app button.ghost{
  font-family:'IBM Plex Sans', sans-serif;
  font-size:13px;
  padding:8px 14px;
  background:transparent;
  color:var(--ink-soft);
  border:1px solid var(--line);
  border-radius:8px;
  cursor:pointer;
}
.extmem-app button.ghost:hover{border-color:var(--ink-soft); color:var(--ink);}

.extmem-app .row-actions{display:flex; gap:10px; margin-top:14px; flex-wrap:wrap;}

.extmem-app .status-line{
  font-family:'IBM Plex Mono', monospace;
  font-size:12.5px;
  margin-top:10px;
  color:var(--ink-soft);
}
.extmem-app .status-line.err{color:var(--alert);}
.extmem-app .status-line.ok{color:var(--ok);}

.extmem-app table{width:100%; border-collapse:collapse; font-size:13px;}
.extmem-app th{
  font-family:'IBM Plex Mono', monospace;
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:0.06em;
  text-align:left;
  color:var(--ink-soft);
  border-bottom:1px solid var(--line);
  padding:6px 8px;
}
.extmem-app td{
  border-bottom:1px solid var(--line);
  padding:5px 6px;
  vertical-align:middle;
}
.extmem-app td input{
  width:100%;
  border:1px solid transparent;
  background:transparent;
  font-family:'IBM Plex Mono', monospace;
  font-size:12.5px;
  padding:5px 6px;
  border-radius:5px;
  color:var(--ink);
}
.extmem-app td input:hover{border-color:var(--line);}
.extmem-app td input:focus{border-color:var(--survey); background:var(--paper);}
.extmem-app .table-wrap{overflow-x:auto; margin-top:4px;}
.extmem-app .delrow{
  background:none; border:none; color:var(--alert); cursor:pointer;
  font-size:15px; line-height:1; padding:4px;
}
.extmem-app .empty-note{
  font-size:13px; color:var(--ink-soft); padding:14px 0; text-align:center;
  font-style:italic;
}

.extmem-app .origin-grid{
  display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:6px;
}
@media (max-width:520px){ .extmem-app .origin-grid{grid-template-columns:1fr;} }
.extmem-app label{
  display:block; font-size:12.5px; color:var(--ink-soft); margin-bottom:5px;
  font-family:'IBM Plex Mono', monospace;
}
.extmem-app .origin-grid input{
  width:100%; padding:10px; border:1px solid var(--line); border-radius:8px;
  font-family:'IBM Plex Mono', monospace; font-size:14px; background:var(--paper); color:var(--ink);
}

.extmem-app .closure{
  margin-top:14px; padding:10px 14px; border-radius:8px;
  font-family:'IBM Plex Mono', monospace; font-size:13px;
  border:1px solid var(--line);
}
.extmem-app .closure.good{border-color:var(--ok); color:var(--survey-dark); background:#f0f6f1;}
.extmem-app .closure.mid{border-color:var(--warn); color:#7a5a1c; background:#fbf4e6;}
.extmem-app .closure.bad{border-color:var(--alert); color:var(--alert); background:#fbeeec;}

.extmem-app .compass{display:inline-block; vertical-align:middle; margin-right:6px;}

.extmem-app .extmem-footnote{
  max-width:880px; margin:0 auto 60px; padding:0 24px;
  font-size:12.5px; color:var(--ink-soft);
}
.extmem-app .extmem-footnote ul{padding-left:18px; margin:8px 0;}

@media (prefers-reduced-motion: reduce){
  .extmem-app *{transition:none !important; animation:none !important;}
}
