:root {
  --ink:#18312c;
  --green:#145443;
  --muted:#526660;
  --soft:#eef4f0;
  --line:#d6dfda;
  --paper:#fafbf8;
  --danger:#923726;
  --accent:#c8964e;
  font:16px/1.5 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:var(--ink);
  background:var(--paper);
}

* {
  box-sizing:border-box;
}

body {
  margin:0;
}

a {
  color:var(--green);
  text-underline-offset:.18em;
}

button,select,input {
  font:inherit;
}

button,select,summary,.upload-trigger {
  cursor:pointer;
}

button:disabled,select:disabled {
  cursor:not-allowed;
}

button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible,.upload-trigger:focus-within {
  outline:3px solid #087bca;
  outline-offset:3px;
}

[hidden] {
  display:none!important;
}

.skip {
  position:absolute;
  top:0;
  left:1rem;
  transform:translateY(-160%);
  background:white;
  padding:12px;
  z-index:3;
}

.skip:focus {
  transform:translateY(5px);
}

.masthead {
  background:#142f29;
  color:white;
  border-bottom:3px solid var(--accent);
}

.mast-inner,.shell {
  max-width:1080px;
  margin:0 auto;
  padding-inline:clamp(16px,4vw,46px);
}

.mast-inner {
  min-height:64px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}

.brand {
  display:flex;
  align-items:center;
  gap:9px;
  font-weight:700;
  font-size:1.16rem;
  letter-spacing:-.03em;
}

.brand svg {
  color:#e3c288;
}

.workspace-label {
  font-size:.85rem;
  color:#d5e2dc;
}

.shell {
  padding-block:clamp(26px,5vw,56px) max(3rem,env(safe-area-inset-bottom));
}

.kicker,.eyebrow,.section-label {
  font-size:.73rem;
  font-weight:750;
  text-transform:uppercase;
  letter-spacing:.12em;
}

.kicker {
  display:flex;
  align-items:center;
  gap:9px;
  color:var(--muted);
}

.kicker>span {
  height:2px;
  width:25px;
  background:var(--accent);
}

h1,h2,h3,p {
  margin:0;
}

h1 {
  font:500 clamp(2.3rem,5.2vw,4rem)/1.08 Georgia,serif;
  letter-spacing:-.045em;
  margin:.35em 0 .24em;
}

.introduction {
  font-size:1.04rem;
  color:var(--muted);
  max-width:660px;
}

.property-bar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:18px 0 16px;
  margin-top:16px;
  border-block:1px solid var(--line);
}

.eyebrow {
  color:var(--muted);
  font-size:.67rem;
}

.property-bar h2 {
  font:600 1.18rem/1.3 system-ui;
  margin-top:.2em;
  overflow-wrap:anywhere;
}

.workspace {
  display:grid;
  grid-template-columns:minmax(0,1.44fr) minmax(0,1fr);
  align-items:start;
  gap:20px;
  margin-top:20px;
}

.panel {
  border:1px solid var(--line);
  background:white;
  border-radius:12px;
  padding:clamp(16px,3vw,28px);
  min-width:0;
}

.section-label {
  color:var(--muted);
  display:flex;
  align-items:center;
  gap:9px;
  letter-spacing:.085em;
}

.section-label>span {
  color:#745322;
  font-size:.73rem;
}

.panel h2 {
  font-size:1.36rem;
  letter-spacing:-.035em;
  line-height:1.25;
  margin:8px 0 9px;
}

.panel>p {
  color:var(--muted);
}

h3,.field-label {
  font-size:.91rem;
  font-weight:680;
}

.field-label {
  display:block;
  margin-top:20px;
  margin-bottom:5px;
}

select {
  display:block;
  width:100%;
  height:44px;
  background:white;
  color:var(--ink);
  border:1px solid #819a8e;
  border-radius:6px;
  padding:0 8px;
}

.field-help {
  color:var(--muted);
  font-size:.87rem;
  line-height:1.5;
  margin-top:6px;
}

.field-help:empty {
  margin:0;
}

.upload-area {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:10px;
  margin-top:12px;
  border:1.5px dashed #91ab9b;
  border-radius:8px;
  padding:15px;
  background:#f7faf7;
}

.upload-area.is-dragging {
  background:#ddede3;
  border-color:var(--green);
}

.upload-area strong,.upload-area small {
  display:block;
}

.upload-area strong {
  font-size:.91rem;
}

.upload-area small {
  font-size:.8rem;
  color:var(--muted);
}

.upload-trigger {
  position:relative;
  overflow:hidden;
  margin-left:auto;
}

.upload-trigger input {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  opacity:0;
  cursor:pointer;
}

.upload-trigger:has(input:disabled) {
  opacity:.5;
  cursor:not-allowed;
}

.button {
  display:inline-flex;
  justify-content:center;
  align-items:center;
  gap:8px;
  min-height:44px;
  background:white;
  color:var(--ink);
  border:1px solid #819a8e;
  border-radius:6px;
  padding:8px 14px;
  text-decoration:none;
  font-size:.87rem;
  font-weight:650;
}

.button:hover:enabled,.button:is(a,label):hover {
  background:var(--soft);
}

.button:disabled {
  opacity:.52;
}

.button.primary {
  background:var(--green);
  color:white;
  border-color:var(--green);
}

.button.primary:hover:enabled {
  background:#0d4235;
}

.wide {
  width:100%;
  margin-top:12px;
}

.button>span[aria-hidden] {
  margin-left:auto;
}

.file-section,.build-detail {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.file-section {
  margin-top:22px;
}

.count,.badge {
  display:inline-block;
  background:var(--soft);
  border-radius:999px;
  font-size:.75rem;
  font-weight:700;
  padding:3px 8px;
  color:var(--muted);
}

.badge.good {
  background:#deefe4;
  color:#1c5937;
}

.badge.warn {
  background:#f8ecd6;
  color:#73501f;
}

.badge.bad {
  background:#f7e6e2;
  color:var(--danger);
}

.build-detail {
  border-top:1px solid var(--line);
  padding-top:15px;
  margin-top:16px;
  flex-wrap:wrap;
}

.missing {
  padding-left:18px;
  color:var(--muted);
  font-size:.88rem;
  margin:8px 0;
}

.missing:empty {
  display:none;
}

.file-list,.jobs {
  list-style:none;
  margin:6px 0 0;
  padding:0;
}

.file-row,.job-row {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border-top:1px solid var(--line);
  padding:10px 0;
}

.file-row>div:first-child,.job-row>div:first-child {
  min-width:0;
}

.file-row strong,.job-row strong {
  display:block;
  font-size:.91rem;
  overflow-wrap:anywhere;
}

.file-row small,.job-row small {
  display:block;
  color:var(--muted);
  font-size:.82rem;
  overflow-wrap:anywhere;
}

.row-actions {
  display:flex;
  gap:6px;
  align-items:center;
  flex-wrap:wrap;
}

.row-actions .button {
  font-size:.79rem;
  padding:5px 10px;
}

.danger {
  color:var(--danger);
}

.empty {
  font-size:.88rem;
  color:var(--muted);
  padding:10px 0;
}

.help {
  border-top:1px solid var(--line);
  padding-top:8px;
  margin-top:16px;
  font-size:.88rem;
}

.help summary {
  min-height:44px;
  padding-block:11px;
  font-weight:650;
}

.help p {
  margin-bottom:10px;
  color:var(--muted);
}

.help a {
  display:inline-flex;
  align-items:center;
  min-height:44px;
  font-weight:650;
}

.history {
  margin-top:20px;
}

.notice {
  margin-top:16px;
  border-left:4px solid var(--green);
  background:var(--soft);
  padding:12px 15px;
  overflow-wrap:anywhere;
}

.notice.error {
  background:#f9ede8;
  border-color:var(--danger);
  color:#65291e;
}

.job-row .badge {
  margin-top:5px;
}

.jobs .button.primary {
  white-space:nowrap;
}

.tracking:empty {
  display:none;
}

@media(max-width:760px) {
  .workspace {
    grid-template-columns:minmax(0,1fr);
    gap:14px;
  }
  .history {
    margin-top:14px;
  }
  .shell {
    padding-block-start:26px;
  }
  .mast-inner {
    min-height:54px;
  }
  .panel {
    padding:17px;
  }
  .workspace-label {
    font-size:.76rem;
  }
}

@media(max-width:430px) {
  .upload-area {
    gap:8px;
  }
  .upload-trigger {
    margin-left:0;
    width:100%;
  }
  .job-row,.file-row:has(.confirm-remove) {
    align-items:flex-start;
    flex-direction:column;
  }
  .row-actions {
    max-width:100%;
  }
  .workspace-label {
    max-width:80px;
    line-height:1.15;
    text-align:right;
  }
}

.template-link {
  display:inline-flex;
  align-items:center;
  min-height:44px;
  font-weight:650;
  font-size:.85rem;
}

.auto-build {
  display:flex;
  align-items:center;
  gap:8px;
  min-height:44px;
  font-size:.85rem;
  cursor:pointer;
}

.auto-build input {
  flex:none;
  width:18px;
  height:18px;
  accent-color:var(--green);
}

.job-row {
  flex-wrap:wrap;
}

.share-panel {
  padding:14px;
  background:var(--soft);
  border-radius:7px;
  flex-basis:100%;
  min-width:0;
}

.share-panel p {
  color:var(--muted);
  font-size:.86rem;
  margin:4px 0 10px;
}

.share-url {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:6px;
  margin-block:10px;
}

.share-url input {
  min-width:0;
  flex:1 1 160px;
  padding:8px;
  border:1px solid var(--line);
  border-radius:4px;
  background:white;
  height:44px;
}

.share-url button {
  flex:none;
}
