:root{--bg: #f3f5f8;--card: #fff;--line: #e2e6ec;--ink: #1d2430;--muted: #6b7686;--accent: #b91c2c;--accent-dark: #8f0f1e;--ok: #16794a}*{box-sizing:border-box}body{margin:0;font:14px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}.app-header{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--card);border-bottom:2px solid var(--accent);position:sticky;top:0;z-index:20}.brand{font-weight:800;color:var(--accent);font-size:18px}.header-spacer{flex:1}.gap-control{font-size:12px;color:var(--muted)}.gap-control input{width:56px;padding:4px 6px;border:1px solid var(--line);border-radius:6px}.btn{padding:6px 12px;border:1px solid var(--line);background:var(--card);border-radius:7px;cursor:pointer;font-size:13px}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-dark)}.btn.danger{color:var(--accent)}.mini{padding:2px 7px;font-size:11px;border:1px solid var(--line);background:var(--card);border-radius:6px;cursor:pointer}.mini.danger{color:var(--accent)}.dropzone{margin:14px 16px;border:2px dashed var(--line);border-radius:12px;background:var(--card)}.dropzone.over{border-color:var(--accent);background:#fff5f6}.dropzone-inner{padding:22px;text-align:center;color:var(--muted)}.link{color:var(--accent);cursor:pointer;text-decoration:underline}.muted{color:var(--muted);font-size:12px}.progress{margin:0 16px 8px;height:18px;background:var(--card);border:1px solid var(--line);border-radius:8px;position:relative;overflow:hidden}.progress.hidden{display:none}#progress-bar{height:100%;width:0;background:var(--accent);transition:width .15s}#progress-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px}.board{padding:8px 16px 80px;display:flex;flex-direction:column;gap:12px}.empty-state{text-align:center;color:var(--muted);padding:48px}.day-divider{display:flex;align-items:center;gap:10px;margin:6px 2px 0;font-weight:700;color:var(--accent);font-size:13px}.day-divider:after{content:"";flex:1;height:2px;background:var(--accent);opacity:.25;border-radius:2px}.row{background:var(--card);border:1px solid var(--line);border-radius:10px}.row-head{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line)}.row-handle{cursor:grab;color:var(--muted);user-select:none}.row-name{font-weight:700;border:1px solid transparent;border-radius:6px;padding:3px 6px;min-width:120px}.row-name:hover,.row-name:focus{border-color:var(--line);outline:none}.row-count{font-size:11px;color:var(--muted);background:var(--bg);padding:1px 7px;border-radius:10px}.row-head .mini{margin-left:2px}.row-head .mini[data-delrow],.row-head .mini.danger{margin-left:auto}.strip{display:flex;gap:8px;padding:10px;overflow-x:auto;min-height:96px}.strip-empty{background:repeating-linear-gradient(45deg,#fafbfc,#fafbfc 10px,#f1f3f6 10px 20px)}.drop-hint{color:var(--muted);font-size:12px;align-self:center;padding:24px}.board{--thumb: 96px}.thumb{flex:0 0 auto;width:var(--thumb);cursor:pointer}.thumb-img{position:relative;width:var(--thumb);height:var(--thumb);border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#000}.thumb img{width:100%;height:100%;object-fit:cover;transition:transform .15s}.thumb:hover .thumb-img{border-color:var(--accent)}.thumb-cap{font-size:10px;line-height:1.25;color:var(--muted);text-align:center;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge-wm{position:absolute;bottom:2px;right:2px;font-size:9px;background:var(--accent);color:#fff;padding:0 4px;border-radius:4px}.drag-ghost{opacity:.4}.modal-back{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:40;padding:20px}.modal{background:var(--card);border-radius:12px;padding:18px;max-width:92vw;max-height:90vh;overflow:auto;box-shadow:0 20px 60px #0000004d}.modal h2{margin:0 0 12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}.form-grid label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted)}.form-grid label.wide{grid-column:1 / -1}.form-grid input,.form-grid select{padding:6px;border:1px solid var(--line);border-radius:6px;font-size:13px;color:var(--ink)}.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.viewer-back{position:fixed;inset:0;background:#000000eb;z-index:50;display:flex;flex-direction:column}.viewer-top{display:flex;justify-content:space-between;align-items:center;color:#eee;padding:10px 14px;gap:10px}.viewer-actions{display:flex;gap:6px}.viewer-stage{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden}.viewer-stage img{max-width:92vw;max-height:78vh;transition:transform .15s}.viewer-nav{position:absolute;top:50%;transform:translateY(-50%);font-size:48px;background:none;border:none;color:#fff;cursor:pointer;opacity:.7}.viewer-nav:hover{opacity:1}.viewer-nav.left{left:12px}.viewer-nav.right{right:12px}.wm-modal{width:1000px}.wm-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}.wm-head h2{margin:0}.wm-head select,.wm-head input{padding:5px;border:1px solid var(--line);border-radius:6px}.wm-head input{flex:1}.wm-body{display:grid;grid-template-columns:1fr 320px;gap:14px}.wm-stage{background:#111;border-radius:8px;display:flex;align-items:center;justify-content:center;min-height:420px;overflow:hidden}.wm-stage canvas{max-width:100%;max-height:60vh;cursor:move}.wm-panel fieldset{border:1px solid var(--line);border-radius:8px;margin:0 0 10px}.wm-panel legend{font-size:12px;color:var(--muted);padding:0 6px}.wm-panel label{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;margin:4px 0}.wm-panel input[type=range]{flex:1}.wm-text{border:1px solid var(--line);border-radius:6px;padding:6px;margin-bottom:6px;cursor:pointer}.wm-text.sel{border-color:var(--accent);background:#fff5f6}.wm-text input.wm-tcontent{width:100%;padding:4px;border:1px solid var(--line);border-radius:5px;margin-bottom:4px}.wm-trow{display:flex;align-items:center;gap:6px}
