:root {
  --ui-bg: #f1f4f7;
  --panel: #ffffff;
  --ink: #1e2633;
  --muted: #657386;
  --line: #d8dee8;
  --accent: #0b6f6a;
  --accent-soft: #dcefed;
  --guide: #e0562f;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }

body {
  margin: 0;
  color: var(--ink);
  background: var(--ui-bg);
  font-family: "Yu Gothic", "Meiryo", system-ui, sans-serif;
}

button, input, select, textarea { font: inherit; }

button, select, input[type="text"], input[type="number"], textarea {
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fff;
}

button {
  min-height: 32px;
  padding: 4px 10px;
  cursor: pointer;
}

button:hover { border-color: var(--accent); }
button.active { background: var(--accent-soft); border-color: var(--accent); }
button:disabled { opacity: .45; cursor: default; }

.app {
  height: 100vh;
  display: grid;
  grid-template-columns: 210px minmax(480px, 1fr) 310px;
  grid-template-rows: 48px 1fr;
}

.toolbar {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--line);
  background: #fbfcfe;
  overflow-x: auto;
}

.tool-group {
  display: flex;
  align-items: center;
  gap: 6px;
  padding-right: 10px;
  border-right: 1px solid var(--line);
  white-space: nowrap;
}

.tool-group.push {
  margin-left: auto;
  border-right: 0;
  padding-right: 0;
}

.toolbar select { min-height: 32px; padding: 3px 8px; }
.toolbar label { display: flex; align-items: center; gap: 4px; color: var(--muted); font-size: 13px; }

.pages-panel, .side-panel {
  min-height: 0;
  background: var(--panel);
  border-right: 1px solid var(--line);
  overflow: auto;
}

.side-panel {
  border-right: 0;
  border-left: 1px solid var(--line);
}

.panel-title {
  position: sticky;
  top: 0;
  z-index: 2;
  padding: 12px;
  font-weight: 700;
  background: var(--panel);
  border-bottom: 1px solid var(--line);
}

.page-list, .layer-list { padding: 10px; display: grid; gap: 8px; }

.page-item, .layer-item {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px;
  background: #fff;
}

.page-item.active, .layer-item.active {
  border-color: var(--accent);
  background: var(--accent-soft);
}

.page-thumb {
  margin: 0 auto 7px;
  background: #fff;
  border: 1px solid #c8ced8;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .15);
}

.page-name { width: 100%; padding: 5px 6px; }
.page-meta, .layer-help { color: var(--muted); font-size: 12px; }
.layer-help { padding: 8px 12px 0; }

.workspace {
  min-width: 0;
  min-height: 0;
  overflow: auto;
  padding: 28px;
  background: #e7ebf0;
}

.canvas-wrap {
  position: relative;
  width: max-content;
  margin: 0 auto;
}

#editorSvg {
  display: block;
  background: white;
  box-shadow: 0 8px 28px rgba(15, 23, 42, .20);
  user-select: none;
  touch-action: none;
}

.drop-hint {
  position: absolute;
  inset: 16px;
  display: none;
  place-items: center;
  border: 2px dashed var(--accent);
  color: var(--accent);
  background: rgba(255,255,255,.74);
  font-size: 28px;
  font-weight: 700;
  pointer-events: none;
}

.canvas-wrap.dragging .drop-hint { display: grid; }

.properties { border-bottom: 1px solid var(--line); }
.empty { padding: 14px; color: var(--muted); }
.props-form { padding: 12px; display: grid; gap: 10px; }
.props-form label { display: grid; gap: 4px; font-size: 13px; color: var(--muted); }
.props-form input, .props-form select, .props-form textarea { width: 100%; padding: 6px 8px; color: var(--ink); }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.button-row { display: flex; gap: 6px; flex-wrap: wrap; }
.prop-section { display: grid; gap: 10px; }
.check-line { display: flex !important; grid-template-columns: auto 1fr; align-items: center; }
.check-line input { width: auto; }

.layer-item {
  display: grid;
  grid-template-columns: 20px 30px 30px 1fr;
  gap: 5px;
  align-items: center;
}

.layer-item.dragging { opacity: .45; }
.layer-grip { color: var(--muted); cursor: grab; text-align: center; }
.layer-item input[type="text"] { min-width: 0; padding: 5px; }
.layer-item .mini { width: 28px; height: 28px; min-height: 28px; padding: 0; }

.svg-object.hidden-object { opacity: .18; }
.selection-box { fill: none; stroke: #0b6f6a; stroke-width: 1.5; stroke-dasharray: 5 4; pointer-events: none; }
.selection-box.multi { stroke: #244a8f; }
.marquee { fill: rgba(11,111,106,.10); stroke: #0b6f6a; stroke-width: 1.5; stroke-dasharray: 5 4; pointer-events: none; }
.handle { fill: #fff; stroke: #0b6f6a; stroke-width: 1.5; cursor: nwse-resize; }
.grid-line { stroke: #dfe5ee; stroke-width: 1; pointer-events: none; }
.guide-line { stroke: var(--guide); stroke-width: 1.5; stroke-dasharray: 4 4; pointer-events: none; }
.text-hitbox { fill: transparent; pointer-events: all; cursor: move; }
.text-svg { paint-order: stroke fill; pointer-events: none; }

.modal {
  position: fixed;
  inset: 0;
  z-index: 20;
  display: grid;
  place-items: center;
  background: rgba(15, 23, 42, .48);
}

.modal-card {
  width: min(980px, calc(100vw - 32px));
  max-height: calc(100vh - 32px);
  overflow: auto;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 20px 50px rgba(15, 23, 42, .35);
}

.modal-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
}

.image-editor {
  display: grid;
  grid-template-columns: minmax(320px, 1fr) 260px;
  gap: 14px;
  padding: 14px;
}

.edit-canvas-wrap {
  position: relative;
  overflow: auto;
  min-height: 340px;
  background: #eef2f6;
  display: grid;
  place-items: center;
}

#imageCanvas { max-width: 100%; height: auto; background: #fff; }
.crop-box { position: absolute; border: 2px solid var(--accent); background: rgba(11,111,106,.12); pointer-events: none; }
.edit-controls { display: grid; gap: 10px; align-content: start; }
.edit-controls label { display: grid; gap: 4px; color: var(--muted); font-size: 13px; }
.small-note { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.5; }

#printArea { display: none; }

.screen-credit {
  position: fixed;
  right: 14px;
  bottom: 10px;
  z-index: 12;
  padding: 4px 8px;
  color: #4b596b;
  background: rgba(255, 255, 255, .88);
  border: 1px solid rgba(216, 222, 232, .9);
  border-radius: 6px;
  font-size: 12px;
  text-decoration: none;
  box-shadow: 0 2px 8px rgba(15, 23, 42, .10);
}

.screen-credit:hover {
  color: var(--accent);
  border-color: var(--accent);
}

@media (max-width: 980px) {
  .app { grid-template-columns: 170px minmax(360px, 1fr) 270px; }
  .toolbar { gap: 6px; }
  button { padding-inline: 8px; }
  .image-editor { grid-template-columns: 1fr; }
}

@media print {
  @page { margin: 0; }
  html, body { width: auto; height: auto; background: #fff; }
  .app, .modal, .screen-credit { display: none !important; }
  #printArea { display: block; }
  .print-page {
    page-break-after: always;
    break-after: page;
    margin: 0;
    overflow: hidden;
    background: #fff;
  }
  .print-page:last-child { page-break-after: auto; break-after: auto; }
  .print-page svg { display: block; width: 100%; height: 100%; }
}
