:root{--cell: 44px;--edge: 18px;--ink: #24292f;--line: #d6d9de;--accent: #3a6ff0;--bg: #f3f4f6;font-family:system-ui,Segoe UI,sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}header{display:flex;align-items:center;gap:24px;padding:10px 20px;background:#fff;border-bottom:1px solid var(--line)}header h1{font-size:18px;margin:0}header h1 span{color:var(--accent);font-weight:500}nav{display:flex;gap:6px}nav button{border:1px solid var(--line);background:#fff}nav button.active{background:var(--accent);color:#fff;border-color:var(--accent)}main{display:grid;grid-template-columns:340px 1fr;gap:16px;padding:16px 20px;align-items:start;max-width:1200px}.panel{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 16px}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}.panel-head h2{font-size:15px;margin:0}button{font:inherit;padding:5px 12px;border-radius:7px;cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--ink)}button:hover{border-color:var(--accent)}button:disabled{opacity:.45;cursor:not-allowed}input,select,textarea{font:inherit;padding:4px 8px;border:1px solid var(--line);border-radius:6px}input[type=number]{width:64px}label{display:inline-flex;align-items:center;gap:6px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:5px 6px;border-bottom:1px solid var(--line)}tr.editing{background:#eef3ff}td button{padding:2px 8px;font-size:12px}.badge{padding:2px 8px;border-radius:99px;font-size:12px}.badge.draft{background:#fff3cd}.badge.published{background:#d4edda}.publish{margin-top:12px;width:100%;background:var(--accent);color:#fff;border-color:var(--accent);padding:8px}.report{list-style:none;padding:0;font-size:13px}.report .bad{color:#b32020}.board{display:grid;gap:2px;margin:12px 0;width:max-content;-webkit-user-select:none;user-select:none}.cell{width:var(--cell);height:var(--cell);padding:0;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:600;border:1px solid var(--line);background:#fff}.cell.ms.box-r{border-right:3px solid var(--ink)}.cell.ms.box-b{border-bottom:3px solid var(--ink)}.cell.crowns{position:relative;border:1px solid rgba(0,0,0,.15)}.cell.crowns .rid{font-size:11px;font-weight:500;color:#0000008c}.cell.tiles.selected{outline:3px solid var(--ink)}.board.duo,.board.trail{gap:0}.duo-cell,.trail-cell{border-radius:0}.duo-cell.sun{color:#e8920b}.duo-cell.moon{color:#3a6ff0}.edge{border:none;background:transparent;padding:0;color:#99a;font-size:13px;display:flex;align-items:center;justify-content:center;border-radius:0;width:100%;height:100%;min-width:var(--edge);min-height:var(--edge)}.edge.set{color:var(--ink);font-weight:700}.board.trail .edge.wall{background:var(--ink)}.gap{width:var(--edge);height:var(--edge)}.trail-cell .cp{background:var(--ink);color:#fff;border-radius:50%;width:26px;height:26px;display:flex;align-items:center;justify-content:center;font-size:13px}.palette{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.swatch{width:40px;height:32px;border-radius:6px;color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;gap:2px;text-shadow:0 1px 2px rgba(0,0,0,.4)}.swatch.active{outline:3px solid var(--ink)}.swatch input[type=color]{width:14px;height:14px;padding:0;border:none;background:none}.logout{margin-left:auto}.login-wrap{display:flex;justify-content:center;padding-top:60px}.login-card{display:flex;flex-direction:column;gap:12px;width:320px}.login-card h2{margin:0 0 4px;font-size:17px}.login-card label{display:flex;flex-direction:column;align-items:stretch;gap:4px;font-size:13.5px}.row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:6px 0}.clue-form{background:#f6f7f9;border-radius:8px;padding:8px 10px}.actions{display:flex;gap:10px;margin:12px 0}.validation{padding:8px 12px;border-radius:8px;font-size:14px}.validation.good{background:#d4edda}.validation.bad{background:#f8d7da}.validation .reason{font-size:13px;margin-top:4px}.hint{font-size:12.5px;color:#667}.error{color:#b32020;font-size:13px}.msg{font-size:13.5px;color:#205a36}textarea{width:100%;font-family:ui-monospace,Consolas,monospace;font-size:12.5px}details summary{cursor:pointer;font-size:13.5px;margin:8px 0}
