@font-face { font-family: "Montserrat"; src: url(fonts/Montserrat.ttf) format("truetype"); font-weight: 100 900; font-display: block; }
@font-face { font-family: "Montserrat"; src: url(fonts/Montserrat-Italic.ttf) format("truetype"); font-weight: 100 900; font-style: italic; font-display: block; }
@font-face { font-family: "Kalam"; src: url(fonts/Kalam-Regular.ttf) format("truetype"); font-weight: 400; font-display: block; }
@font-face { font-family: "Kalam"; src: url(fonts/Kalam-Bold.ttf) format("truetype"); font-weight: 700; font-display: block; }
@font-face { font-family: "Chakra Petch"; src: url(fonts/ChakraPetch-Medium.ttf) format("truetype"); font-weight: 500; font-display: block; }
@font-face { font-family: "Chakra Petch"; src: url(fonts/ChakraPetch-SemiBold.ttf) format("truetype"); font-weight: 600; font-display: block; }

:root { --bg: #f4f1ea; --fg: #1f2430; --muted: #6a7489; --line: #d8d2c4; --accent: #23395d; --panel: #fff; }
@media (prefers-color-scheme: dark) {
  :root { --bg: #15171c; --fg: #e8e6e1; --muted: #9aa3b5; --line: #343944; --accent: #9cc0ff; --panel: #1d2027; }
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--fg); font: 15px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; }
.bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; padding: 10px 16px; border-bottom: 1px solid var(--line); background: var(--panel); position: sticky; top: 0; z-index: 2; }
.bar h1 { font-size: 18px; margin: 0; flex: 1; }
.home { color: var(--accent); text-decoration: none; font-weight: 600; }
.actions { display: flex; flex-wrap: wrap; gap: 6px; }
.btn { border: 1px solid var(--line); background: var(--panel); color: var(--fg); padding: 6px 12px; border-radius: 8px; cursor: pointer; font: inherit; font-size: 14px; }
.btn:hover { border-color: var(--accent); }
.btn.primary { background: var(--accent); color: var(--panel); border-color: var(--accent); }
.btn.ghost { background: transparent; }
.btn.small { padding: 3px 10px; font-size: 13px; }
.wrap { display: grid; grid-template-columns: minmax(300px, 400px) 1fr; gap: 16px; padding: 16px; align-items: start; }
.panel { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 4px 14px 14px; max-height: calc(100vh - 90px); overflow: auto; position: sticky; top: 70px; }
fieldset { border: 0; border-top: 1px solid var(--line); margin: 10px 0 0; padding: 8px 0 0; }
fieldset:first-child { border-top: 0; }
legend { font-weight: 700; padding: 0 4px 0 0; }
.row { display: flex; flex-direction: column; gap: 2px; font-size: 13px; color: var(--muted); margin: 6px 0; }
.row input, .row select, .row textarea, .cls input { font: inherit; font-size: 14px; color: var(--fg); background: var(--bg); border: 1px solid var(--line); border-radius: 6px; padding: 5px 7px; width: 100%; }
.row textarea { resize: vertical; }
.row input[type=range] { padding: 0; }
.muted { color: var(--muted); font-weight: 400; }
.two { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.three { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.six { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; }
.six input { text-align: center; padding: 5px 2px; }
.tpls { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin: 6px 0; }
.tpls label { display: flex; align-items: center; gap: 6px; border: 1px solid var(--line); border-radius: 8px; padding: 6px 8px; cursor: pointer; font-size: 13px; }
.tpls label:has(input:checked) { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.cls { display: grid; grid-template-columns: 1fr 1fr 56px 28px; gap: 6px; margin: 6px 0; }
.cls .x { border: 0; background: none; color: var(--muted); font-size: 18px; cursor: pointer; }
.preview { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.preview canvas { width: 100%; height: auto; display: block; border-radius: 6px; box-shadow: 0 2px 12px rgba(0,0,0,.25); cursor: grab; touch-action: none; background: #222; }
.preview canvas.sheet { max-width: 760px; }
.foot { padding: 4px 16px 24px; color: var(--muted); font-size: 13px; max-width: 900px; }
@media (max-width: 860px) {
  .wrap { grid-template-columns: 1fr; padding: 16px; }
  .panel { position: static; max-height: none; }
  .preview { order: -1; }
}
