/* PictureTool Web — Stil
   Zwei Akzentfarben mit Bedeutung statt Dekoration:
   Ocker = bleibt (an der Untergrenze gehalten), Petrol = verkleinert. */

:root {
  --paper:   #E4E2DC;
  --surface: #F2F1ED;
  --sunk:    #DBD8D1;
  --ink:     #191B1D;
  --muted:   #696D70;
  --rule:    #C6C3BB;
  --held:    #A8661F;
  --cut:     #216257;
  --alert:   #9C3524;
  --term:    #1B1F21;
  --term-ink:#C9CEC8;

  --mono: ui-monospace, "SFMono-Regular", "SF Mono", "Cascadia Mono",
          "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace;
  --sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

  --gap: 22px;
  --r: 3px;
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.55;
}

code { font-family: var(--mono); font-size: .92em; background: var(--sunk);
       padding: 1px 4px; border-radius: 2px; }

/* --- Kopfleiste --------------------------------------------------- */

.bar {
  border-bottom: 1px solid var(--rule);
  background: var(--surface);
  position: sticky; top: 0; z-index: 20;
}
.bar-in {
  max-width: 1240px; margin: 0 auto; padding: 14px 24px;
  display: flex; align-items: baseline; gap: 20px; flex-wrap: wrap;
}
.mark { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; }
.mark-name {
  font-family: var(--mono); font-size: 17px; font-weight: 700;
  letter-spacing: .18em; text-transform: uppercase;
}
.mark-thin { font-weight: 400; color: var(--muted); }
.mark-sub { color: var(--muted); font-size: 13.5px; }

.chips { margin-left: auto; display: flex; gap: 8px; flex-wrap: wrap; }
.chip {
  font-family: var(--mono); font-size: 11px; letter-spacing: .08em;
  text-transform: uppercase; padding: 4px 9px; border-radius: var(--r);
  border: 1px solid var(--rule); color: var(--muted); white-space: nowrap;
}
.chip.ok    { color: var(--cut);   border-color: var(--cut); }
.chip.off   { color: var(--alert); border-color: var(--alert); }
.chip-quiet { border-style: dashed; }

/* --- Raster ------------------------------------------------------- */

.wrap {
  max-width: 1240px; margin: 0 auto; padding: 28px 24px 40px;
  display: grid; gap: var(--gap);
  grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
  grid-template-areas: "form side" "log log";
  align-items: start;
}
.col-form { grid-area: form; display: flex; flex-direction: column; gap: var(--gap); }
.col-side { grid-area: side; position: sticky; top: 86px; }
.col-log  { grid-area: log; }

@media (max-width: 900px) {
  .wrap { grid-template-columns: minmax(0, 1fr);
          grid-template-areas: "form" "side" "log"; }
  .col-side { position: static; }
}

/* --- Schritte ----------------------------------------------------- */

.step {
  background: var(--surface);
  border: 1px solid var(--rule);
  border-radius: var(--r);
  padding: 20px 22px 22px;
}
.step h2 {
  margin: 0 0 4px; font-family: var(--mono); font-size: 12px; font-weight: 700;
  letter-spacing: .16em; text-transform: uppercase;
  display: flex; align-items: center; gap: 10px;
}
.num {
  font-size: 11px; color: var(--surface); background: var(--ink);
  width: 18px; height: 18px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  letter-spacing: 0;
}
.hint { margin: 6px 0 0; color: var(--muted); font-size: 13px; }
.hint.warn { color: var(--held); }

/* --- Ablage ------------------------------------------------------- */

.drop {
  margin-top: 14px; padding: 26px 18px; text-align: center;
  border: 1.5px dashed var(--rule); border-radius: var(--r);
  background: var(--paper); cursor: pointer;
  transition: border-color .15s, background .15s;
}
.drop:hover, .drop:focus-visible { border-color: var(--ink); }
.drop.over { border-color: var(--cut); background: #E6EEEA; }
.drop-main { display: block; font-family: var(--mono); font-size: 14px; }
.drop-alt  { display: block; color: var(--muted); font-size: 12.5px; margin: 6px 0 10px; }
.drop-btns { display: inline-flex; gap: 8px; }

.filelist { margin-top: 14px; border-top: 1px solid var(--rule); padding-top: 10px; }
.filelist-head {
  display: flex; justify-content: space-between; align-items: baseline;
  font-family: var(--mono); font-size: 12px; margin-bottom: 6px;
}
.filelist ul {
  list-style: none; margin: 0; padding: 0; max-height: 190px; overflow-y: auto;
  font-family: var(--mono); font-size: 12px;
}
.filelist li {
  display: flex; justify-content: space-between; gap: 12px;
  padding: 2px 0; border-bottom: 1px solid var(--sunk); color: var(--muted);
}
.filelist li b { font-weight: 400; color: var(--ink);
                 overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.filelist li .tag { flex: none; font-size: 11px; letter-spacing: .06em; }
.tag-ytd { color: var(--cut); }
.tag-zip { color: var(--held); }

/* --- Formularfelder ----------------------------------------------- */

.field { margin-top: 16px; }
.field > label, .check {
  display: block; font-family: var(--mono); font-size: 11px;
  letter-spacing: .1em; text-transform: uppercase; color: var(--muted);
  margin-bottom: 5px;
}
.field-key > label { color: var(--held); }

.row { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.unit { font-family: var(--mono); font-size: 13px; color: var(--muted); }
.inline-hint { font-size: 12px; color: var(--muted); }

input[type=number], select {
  font-family: var(--mono); font-size: 14px; color: var(--ink);
  background: var(--paper); border: 1px solid var(--rule);
  border-radius: var(--r); padding: 7px 9px;
}
input[type=number] { width: 108px; }
.num-in { width: 78px; }
select { width: 100%; max-width: 100%; }
input[type=number]:focus-visible, select:focus-visible,
.btn:focus-visible, .drop:focus-visible, summary:focus-visible {
  outline: 2px solid var(--ink); outline-offset: 2px;
}

input[type=range] { flex: 1 1 130px; accent-color: var(--cut); min-width: 110px; }
.num-out { font-family: var(--mono); font-size: 14px; min-width: 44px; }

.check {
  text-transform: none; letter-spacing: 0; font-family: var(--sans);
  font-size: 13.5px; color: var(--ink); margin: 9px 0 0;
  display: flex; gap: 8px; align-items: flex-start; cursor: pointer;
}
.check input { accent-color: var(--cut); margin-top: 3px; flex: none; }

.fold { border-top: 1px solid var(--rule); margin-top: 16px; }
.fold summary {
  cursor: pointer; padding: 11px 0 9px; font-family: var(--mono);
  font-size: 11px; letter-spacing: .12em; text-transform: uppercase;
}
.fold summary::marker { color: var(--muted); }
.fold-in { padding: 0 0 14px 2px; }

/* --- Knöpfe ------------------------------------------------------- */

.btn {
  font-family: var(--mono); font-size: 13px; letter-spacing: .04em;
  border-radius: var(--r); border: 1px solid var(--ink);
  padding: 9px 16px; cursor: pointer; background: var(--ink); color: var(--surface);
  transition: opacity .15s;
}
.btn:hover { opacity: .85; }
.btn:disabled { opacity: .35; cursor: not-allowed; }
.btn-ghost { background: transparent; color: var(--ink); }
.btn-go { padding: 12px 26px; font-size: 14px; background: var(--cut); border-color: var(--cut); }
.btn-dl { background: var(--cut); border-color: var(--cut); text-decoration: none;
          display: inline-block; }
.btn-link { background: none; border: none; color: var(--muted); cursor: pointer;
            font-family: var(--mono); font-size: 12px; text-decoration: underline;
            padding: 0; }

.actions { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.actions-note { color: var(--muted); font-size: 13px; }

/* --- Signatur: Mipmap-Leiter -------------------------------------- */

.ladder {
  background: var(--surface); border: 1px solid var(--rule);
  border-radius: var(--r); padding: 20px 22px 18px;
}
.ladder-head h2 {
  margin: 0; font-family: var(--mono); font-size: 12px; font-weight: 700;
  letter-spacing: .16em; text-transform: uppercase;
}
.ladder-rows { margin-top: 16px; }

.lrow {
  display: grid; grid-template-columns: 92px 1fr 92px;
  align-items: center; gap: 10px; padding: 7px 0;
  font-family: var(--mono); font-size: 12.5px;
}
.lrow + .lrow { border-top: 1px solid var(--sunk); }
.lrow .src { color: var(--muted); text-align: right; white-space: nowrap; }
.lrow .dst { white-space: nowrap; }
.lrow .track { position: relative; height: 12px; background: var(--sunk); border-radius: 1px; }
.lrow .fill {
  position: absolute; inset: 0 auto 0 0; border-radius: 1px;
  transition: width .22s ease;
}
.lrow.cut  .fill { background: var(--cut); }
.lrow.cut  .dst  { color: var(--cut); }
.lrow.held .fill { background: var(--held); }
.lrow.held .dst  { color: var(--held); }
.lrow.held .src  { color: var(--ink); }

.floor {
  position: relative; height: 0; border-top: 2px dashed var(--held);
  margin: 3px 0; 
}
.floor span {
  position: absolute; right: 0; top: -9px; background: var(--surface);
  padding: 0 6px; font-family: var(--mono); font-size: 10.5px;
  letter-spacing: .1em; text-transform: uppercase; color: var(--held);
}

.aspect-note {
  margin: 14px 0 0; font-family: var(--mono); font-size: 11.5px;
  color: var(--muted);
}

.ladder-key {
  margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--rule);
  display: flex; gap: 16px; flex-wrap: wrap;
  font-family: var(--mono); font-size: 11px; color: var(--muted);
}
.key { display: inline-flex; align-items: center; gap: 6px; }
.sw { width: 12px; height: 12px; border-radius: 1px; display: inline-block; }
.sw-cut { background: var(--cut); }
.sw-held { background: var(--held); }
.sw-floor { border-top: 2px dashed var(--held); height: 0; }

/* --- Protokoll ---------------------------------------------------- */

.term { border: 1px solid var(--rule); border-radius: var(--r); overflow: hidden; }
.term-bar {
  background: var(--term); color: var(--term-ink);
  display: flex; align-items: center; gap: 14px;
  padding: 9px 16px; border-bottom: 1px solid #2C3234;
  font-family: var(--mono); font-size: 11px;
  letter-spacing: .12em; text-transform: uppercase;
}
.term-state { color: #8A9490; }
.term-state.run  { color: #7FB8A4; }
.term-state.ok   { color: #7FB8A4; }
.term-state.err  { color: #D08070; }
.term-time { margin-left: auto; color: #6E7876; }
.term-body {
  margin: 0; padding: 16px; background: var(--term); color: var(--term-ink);
  font-family: var(--mono); font-size: 12.5px; line-height: 1.5;
  max-height: 460px; overflow: auto; white-space: pre; tab-size: 4;
}
.term-foot {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  padding: 14px 16px; background: var(--surface); border-top: 1px solid var(--rule);
}
.result-txt { font-family: var(--mono); font-size: 12.5px; }

/* --- Fuß ---------------------------------------------------------- */

.foot {
  border-top: 1px solid var(--rule); background: var(--surface);
  padding: 18px 24px;
}
.foot p {
  max-width: 1240px; margin: 0 auto; color: var(--muted); font-size: 12.5px;
}

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