:root{--bg: #f6f1e7;--paper: #fffdf7;--ink: #2d2a26;--muted: #7a7266;--line: #e4dccd;--accent: #e0703a;--accent-ink: #fff;--accent-soft: #fbe3d6;--blue: #3a7bbf;--green: #3f9a5b;--red: #d2453b;--radius: 14px;--shadow: 0 1px 0 rgba(0, 0, 0, .04), 0 6px 18px rgba(60, 40, 10, .08);--font: ui-rounded, "SF Pro Rounded", "Nunito", "Segoe UI", system-ui, sans-serif;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px}body{-webkit-tap-highlight-color:transparent}a{color:var(--blue)}h1,h2,h3{margin:0 0 .5em;line-height:1.15}h1{font-size:1.8rem}h2{font-size:1.3rem}h3{font-size:1.05rem}p{line-height:1.5}img{max-width:100%}button,.btn{font:inherit;border:1.5px solid var(--line);background:var(--paper);color:var(--ink);border-radius:10px;padding:.5em .95em;cursor:pointer;display:inline-flex;align-items:center;gap:.4em;text-decoration:none;line-height:1.2;touch-action:manipulation}button:hover,.btn:hover{border-color:#cfc4b0}button:disabled{opacity:.5;cursor:default}button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}button.primary:hover{filter:brightness(1.05)}button.danger{color:var(--red)}button.ghost{background:transparent;border-color:transparent}button.active,button[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent)}button.big{font-size:1.15rem;padding:.8em 1.3em;border-radius:14px}input[type=text],input[type=password],input[type=number],select,textarea{font:inherit;border:1.5px solid var(--line);background:#fff;border-radius:10px;padding:.5em .7em;color:var(--ink);min-width:0}input[type=range]{accent-color:var(--accent);width:100%}input[type=checkbox]{accent-color:var(--accent);width:1.1em;height:1.1em}label.field{display:flex;flex-direction:column;gap:.3em;font-size:.9rem;color:var(--muted)}label.field>input,label.field>select{color:var(--ink)}label.check{display:flex;align-items:center;gap:.5em;font-size:.95rem}.card{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem}.muted{color:var(--muted)}.small{font-size:.85rem}.row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:.7rem}.spacer{flex:1}.error{color:var(--red)}.center{text-align:center}.topbar{display:flex;align-items:center;gap:.5rem;padding:.6rem 1rem;background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;flex-wrap:wrap}.brand{font-weight:800;font-size:1.2rem;color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:.4em;margin-right:.6rem}.brand-mark{width:26px;height:26px}.nav{display:flex;gap:.2rem;flex-wrap:wrap}.nav a{padding:.4em .75em;border-radius:9px;color:var(--ink);text-decoration:none;font-size:.95rem}.nav a:hover{background:var(--bg)}.nav a.on{background:var(--accent-soft);color:#9b3f12;font-weight:600}.page{max-width:1240px;margin:0 auto;padding:1.4rem 1rem 4rem}.page.wide{max-width:none}.page-head{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;margin-bottom:1.2rem}.page-head h1{margin:0}.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.grid.big{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.tile{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;text-decoration:none;color:inherit;cursor:pointer;border:2px solid transparent;transition:transform .12s ease}.tile:hover{transform:translateY(-2px)}.tile.selected{border-color:var(--accent)}.tile .thumb{aspect-ratio:1;background:var(--checker);display:flex;align-items:center;justify-content:center;padding:8px}.tile .thumb.wide{aspect-ratio:16 / 9;padding:0}.tile .thumb img{max-height:100%;max-width:100%;object-fit:contain}.tile .thumb.wide img{width:100%;height:100%;object-fit:cover}.tile .meta{padding:.55rem .7rem;font-size:.9rem;display:flex;flex-direction:column;gap:.1rem}.tile .meta b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:root{--checker: repeating-conic-gradient(#efe9dc 0% 25%, #faf7f0 0% 50%) 50% / 20px 20px}.checker{background:var(--checker)}.badge{display:inline-block;font-size:.72rem;padding:.15em .55em;border-radius:99px;background:var(--bg);color:var(--muted);font-weight:600}.badge.warn{background:#fff1c2;color:#8a6a00}.tabs{display:flex;gap:.3rem;flex-wrap:wrap}.home-cards{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}.home-card{padding:1.3rem;display:flex;flex-direction:column;gap:.4rem;text-decoration:none;color:inherit;cursor:pointer}.home-card .icon{font-size:2rem}.home-card:hover{outline:2px solid var(--accent-soft)}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#281e1473;z-index:100;display:flex;align-items:center;justify-content:center;padding:1rem}.modal{background:var(--paper);border-radius:18px;box-shadow:0 20px 60px #0000004d;max-width:min(960px,100%);max-height:calc(100vh - 2rem);overflow:auto;padding:1.3rem;width:100%}.modal.narrow{max-width:460px}.modal-head{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.modal-head h2{margin:0}.editor{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:1rem;align-items:start}.editor .stage{background:#2f2b27;border-radius:var(--radius);overflow:hidden;position:relative}.editor .panel{display:flex;flex-direction:column;gap:.9rem;position:sticky;top:70px;max-height:calc(100vh - 90px);overflow:auto}.panel section{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);padding:.9rem;display:flex;flex-direction:column;gap:.65rem}.panel h3{margin:0;font-size:.95rem}.toolbar{display:flex;gap:.35rem;flex-wrap:wrap;padding:.5rem;background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:.7rem;align-items:center}.toolbar button{padding:.4em .7em;font-size:.92rem}.range-row{display:grid;grid-template-columns:1fr auto;gap:.2rem .6rem;align-items:center;font-size:.9rem}.range-row input{grid-column:1 / -1}canvas.editor-canvas{display:block;touch-action:none}@media(max-width:900px){.editor{grid-template-columns:1fr}.editor .panel{position:static;max-height:none}}.capture{max-width:640px;margin:0 auto;padding:1rem;display:flex;flex-direction:column;gap:1rem}.capture .shoot{font-size:1.3rem;padding:1.1em;justify-content:center;width:100%;border-radius:18px}.quad-wrap{position:relative;touch-action:none;-webkit-user-select:none;user-select:none}.quad-wrap canvas{width:100%;display:block;border-radius:10px}.quad-wrap svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.preview-row{display:flex;gap:.6rem;flex-wrap:wrap}.preview-row img{width:110px;height:110px;object-fit:contain;border-radius:8px}.play-root{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e1b18;display:flex;flex-direction:column}.play-root canvas{flex:1;width:100%;height:100%;display:block;touch-action:none;user-select:none;-webkit-user-select:none}.play-bar{position:absolute;top:8px;left:8px;z-index:5;display:flex;gap:6px}.play-bar button{background:#fffdf7d9;padding:.4em .8em}.class-page{min-height:100vh;padding:1.5rem 1rem 3rem;max-width:1100px;margin:0 auto}.class-page h1{font-size:2.2rem;text-align:center;margin:.5rem 0 1.5rem}.class-tile .meta{font-size:1.2rem;padding:.8rem 1rem;font-weight:700}.print-sheet{background:#fff;width:210mm;height:297mm;box-shadow:var(--shadow);margin:0 auto 1rem}.print-sheet svg{width:210mm;height:297mm;display:block}.print-only{display:none}@media print{@page{size:A4 portrait;margin:0}body{background:#fff}.no-print{display:none!important}.print-only{display:block}.page{padding:0;max-width:none}.print-sheet{box-shadow:none;margin:0;page-break-after:always;break-after:page}}.lang-switch button{padding:.3em .55em;font-size:.85rem}.toast{position:fixed;bottom:1.2rem;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;padding:.6em 1.1em;border-radius:99px;z-index:200;font-size:.95rem}.qr{background:#fff;padding:10px;border-radius:12px;display:inline-block}.qr img{display:block;width:220px;height:220px;image-rendering:pixelated}.empty{text-align:center;padding:2.5rem 1rem;color:var(--muted)}.filmstrip{display:flex;gap:.5rem;overflow-x:auto;padding:.8rem .2rem;align-items:stretch}.film-frame{position:relative;flex:none;width:108px;height:108px;border-radius:10px;background:var(--checker);border:3px solid transparent;cursor:pointer;box-shadow:var(--shadow)}.film-frame.on{border-color:var(--accent)}.film-frame img{width:100%;height:100%;object-fit:contain;display:block}.film-no{position:absolute;top:4px;left:6px;font-size:.75rem;font-weight:800;color:var(--muted)}.film-tools{position:absolute;bottom:-2px;left:0;right:0;display:flex;justify-content:center;gap:2px}.film-tools button{padding:.1em .45em;font-size:.8rem}.film-add{flex:none;width:108px;height:108px;flex-direction:column;justify-content:center;font-size:.82rem;text-align:center;border-style:dashed}.map-grid{display:grid;gap:6px;overflow-x:auto;padding-bottom:4px}.map-cell{width:64px;height:46px;border-radius:8px;position:relative;padding:0;justify-content:center;font-size:.7rem}span.map-cell{display:block}.map-cell.add{border-style:dashed;color:var(--muted);font-size:1.1rem;background:transparent}.map-cell.room{background:#f1e8d8;overflow:visible}.map-cell.room.on{border-color:var(--accent);background:var(--accent-soft)}.map-cell .map-bg{position:absolute;top:2px;right:2px;bottom:2px;left:2px;opacity:.45;overflow:hidden;border-radius:6px;display:flex;align-items:center;justify-content:center}.map-cell .map-bg img{width:100%;height:100%!important;object-fit:cover;max-width:none!important}.map-cell .map-name{position:relative;font-weight:700;line-height:1.1;padding:0 3px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.map-door{position:absolute;background:var(--green);border-radius:3px;z-index:1}.map-door.e{right:-7px;top:18px;width:8px;height:10px}.map-door.w{left:-7px;top:18px;width:8px;height:10px}.map-door.n{top:-7px;left:27px;width:10px;height:8px}.map-door.s{bottom:-7px;left:27px;width:10px;height:8px}.adv-tabs{display:flex;gap:.3rem;flex-wrap:wrap;margin-bottom:1rem;border-bottom:2px solid var(--line);padding-bottom:.5rem}.adv-tabs button{font-weight:600}.step-card{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);padding:.9rem 1rem;display:grid;grid-template-columns:52px 1fr;gap:.4rem .9rem}.step-no{grid-row:span 3;width:46px;height:46px;border-radius:50%;background:var(--accent);color:#fff;font-weight:800;font-size:1.3rem;display:flex;align-items:center;justify-content:center}.step-line{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.step-line>.lbl{font-weight:700;min-width:7.5em;color:var(--muted);font-size:.9rem}.step-actions{display:flex;flex-direction:column;gap:.4rem;padding-left:.6rem;border-left:3px solid var(--accent-soft)}.step-between{display:flex;justify-content:center}.step-between button{font-size:.8rem;padding:.15em .7em;border-style:dashed;opacity:.55}.step-between button:hover{opacity:1}.tree-wrap{position:relative;overflow:auto;background:#f1e8d8;border-radius:var(--radius);min-height:420px;max-height:70vh}.tree-node{position:absolute;width:230px;background:var(--paper);border-radius:12px;box-shadow:var(--shadow);padding:.5rem .65rem;font-size:.82rem;cursor:pointer;border:2.5px solid transparent;display:flex;flex-direction:column;gap:2px}.tree-node.on{border-color:var(--accent)}.tree-node .who{font-weight:800;color:var(--accent);font-size:.78rem}.tree-node .say{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.tree-node .end{font-size:.72rem;font-weight:700}.tree-node.start:before{content:"▶ START";position:absolute;left:0;top:-20px;color:var(--accent);font-size:.7rem;font-weight:800}.scene-strip{display:flex;gap:.5rem;overflow-x:auto;padding:.6rem .2rem}.scene-frame{flex:none;width:150px;border-radius:10px;background:var(--paper);box-shadow:var(--shadow);border:3px solid transparent;cursor:pointer;overflow:hidden;font-size:.75rem}.scene-frame.on{border-color:var(--accent)}.scene-frame .pic{aspect-ratio:16/9;background:#2f2b27;display:flex;align-items:center;justify-content:center;overflow:hidden}.scene-frame .pic img{width:100%;height:100%;object-fit:cover;max-width:none}.scene-frame .cap{padding:4px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cast-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.cast-card{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);padding:.9rem;display:flex;flex-direction:column;gap:.6rem}
