:root{
  --paper:#e9eef1; --sheet:#fff; --ink:#17232d; --muted:#4f606c; --line:#c4cfd6;
  --accent:#0b5c63; --accent-hover:#084950; --danger:#b3261e; --stage:#cfd8de;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 var(--sans)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.top{padding:1.5rem 1rem .5rem;max-width:1200px;margin:0 auto}
h1{font:700 2rem/1.1 var(--serif);margin:0 0 .35rem;letter-spacing:-.01em}
h2{font:700 1.15rem/1.2 var(--serif);margin:0 0 .8rem}
.lead{margin:0;font-size:1.05rem}
.local{margin:.4rem 0 0;color:var(--muted);font-size:.92rem}

.layout{display:grid;gap:1rem;padding:1rem;max-width:1200px;margin:0 auto}
.panel{background:var(--sheet);border:1px solid var(--line);border-radius:10px;padding:1rem}
.stage{background:var(--stage);border-radius:10px;padding:.75rem}

@media (min-width:960px){
  .layout{grid-template-columns:minmax(340px,430px) 1fr;align-items:start}
  .panel{grid-column:1}
  .stage{grid-column:2;grid-row:1 / span 3;position:sticky;top:1rem}
}

.drop{display:block;border:2px dashed var(--accent);border-radius:8px;padding:1.1rem;text-align:center;cursor:pointer;position:relative}
.drop:hover,.drop.over{background:#e4f1f2}
.drop:focus-within{outline:3px solid var(--accent);outline-offset:2px}
.drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.drop-main{display:block;font-weight:600}
.drop-sub{display:block;color:var(--muted);font-size:.85rem;margin-top:.2rem}

.list{list-style:none;margin:.75rem 0 0;padding:0;display:grid;gap:.4rem}
.list li{display:flex;gap:.4rem;align-items:stretch}
.list .pick{flex:1;min-width:0;text-align:left;background:#f4f7f9;border:1px solid var(--line);border-radius:6px;padding:.45rem .6rem;color:var(--ink);font:inherit;cursor:pointer}
.list .pick[aria-current="true"]{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent);background:#e4f1f2}
.list .nm{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.list .meta{display:block;font-size:.8rem;color:var(--muted)}
.list .rm{flex:none;width:2.5rem;border:1px solid var(--line);background:#fff;border-radius:6px;color:var(--danger);font-size:1.2rem;cursor:pointer}

.tools{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.6rem}
.tool,.ghost,.primary{font:inherit;border-radius:6px;cursor:pointer;min-height:2.5rem;padding:.35rem .8rem}
.tool{background:#fff;border:1px solid var(--line);color:var(--ink)}
.tool[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}
.stage .ghost{background:#fff}
.primary{width:100%;margin-top:.8rem;background:var(--accent);border:1px solid var(--accent);color:#fff;font-weight:700;min-height:3rem}
.primary:hover:not(:disabled){background:var(--accent-hover)}
.primary:disabled{opacity:.45;cursor:not-allowed}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

.sheet{display:flex;justify-content:center;align-items:center;min-height:240px}
.sheet canvas{display:none;max-width:100%;max-height:78vh;width:auto;height:auto;background:#fff;box-shadow:0 2px 14px rgba(23,35,45,.28)}
.sheet.has canvas{display:block}
.sheet.has .empty{display:none}
.stage.tool-on .sheet canvas{touch-action:none;cursor:crosshair}
.empty{color:var(--muted);text-align:center;padding:2rem 1rem;margin:0}
.pager{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:.6rem}
.hint{color:var(--muted);font-size:.85rem;margin:.6rem 0 0}

.field{display:block;margin-bottom:.7rem;font-weight:600;font-size:.92rem}
.field output{float:right;font-weight:400;color:var(--muted);font-variant-numeric:tabular-nums}
.field input[type=text],.field select,.field textarea,input[type=date]{display:block;width:100%;margin-top:.25rem;font:inherit;font-weight:400;padding:.5rem .6rem;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink)}
.field textarea{resize:vertical}
.field input[type=range]{display:block;width:100%;margin:.4rem 0 0;accent-color:var(--accent)}
.field input[type=color]{display:block;margin-top:.25rem;width:4rem;height:2.4rem;padding:2px;border:1px solid var(--line);border-radius:6px;background:#fff}
.row{display:flex;gap:.6rem;align-items:center;margin-bottom:.7rem}
.row input[type=date]{margin:0;flex:1}
.check{display:flex;gap:.5rem;align-items:flex-start;margin:.45rem 0;font-size:.92rem}
.check input{margin-top:.25rem;accent-color:var(--accent)}
.more{margin-top:.8rem;border-top:1px solid var(--line);padding-top:.7rem}
.more summary{cursor:pointer;font-weight:600}
.more>*:not(summary){margin-top:.7rem}

progress{display:block;width:100%;margin-top:.7rem;accent-color:var(--accent)}
.status{min-height:1.4em;margin:.7rem 0 0;font-size:.92rem}
.status.warn{color:var(--danger)}
.status.ok{color:var(--accent);font-weight:600}
.log{list-style:none;padding:0;margin:.5rem 0;font-size:.82rem;max-height:12rem;overflow:auto}
.log li{padding:.3rem 0;border-bottom:1px solid var(--line)}
.log code{font-family:"Courier New",monospace;font-weight:700}
#wipe{margin-top:.9rem;width:100%}

@media (prefers-reduced-motion:no-preference){.drop{transition:background .15s}}
