:root{--bg:#0e1116;--panel-bg:#171c23;--panel-line:#262d37;--text:#e6eaf0;--text-dim:#9aa5b4;--accent:#35a06a;--accent-2:#4fc3f7;--radius:9px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);overscroll-behavior:none;font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#app{grid-template-columns:320px 1fr;grid-template-areas:"side board";height:100%;display:grid}.board{--page-bg:#12161b;background:var(--page-bg);grid-area:board;min-width:0;min-height:0;padding:12px;display:flex;position:relative}.tooltip{z-index:20;max-width:280px;color:var(--text);white-space:pre-line;pointer-events:none;background:#0b0e12;border-radius:8px;padding:6px 10px;font-size:13px;line-height:1.4;animation:.12s ease-out tooltip-in;position:fixed;box-shadow:0 6px 20px #0009}@keyframes tooltip-in{0%{opacity:0}}.toast{border:1px solid var(--panel-line);border-radius:var(--radius);max-width:calc(100% - 24px);color:var(--text);z-index:3;background:#1f2630;align-items:center;gap:14px;padding:8px 8px 8px 16px;font-size:14px;animation:.16s ease-out toast-in;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #00000073}.toast-action{min-height:32px;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:1px solid #3a4a5c;border-radius:7px;flex:none;padding:4px 12px;font-weight:600}.toast-action:hover{background:#27303c}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}#board-svg{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:100%;height:100%;display:block}#board-svg [data-ball]{cursor:grab}.board[data-mode=ellipse] #board-svg,.board[data-mode=rect] #board-svg,.board[data-mode=segment] #board-svg,.board[data-mode=polyline] #board-svg,.board[data-mode=ellipse] #board-svg [data-ball],.board[data-mode=rect] #board-svg [data-ball],.board[data-mode=segment] #board-svg [data-ball],.board[data-mode=polyline] #board-svg [data-ball],.board[data-mode=shot] #board-svg,.board[data-mode=shot] #board-svg [data-ball]{cursor:crosshair}.board[data-mode=select] #board-svg [data-shape]{cursor:move}#board-svg [data-handle]{cursor:pointer}.side{background:var(--panel-bg);border-right:1px solid var(--panel-line);-webkit-user-select:none;user-select:none;caret-color:#0000;flex-direction:column;grid-area:side;min-height:0;display:flex}.side input[type=text],.side input[type=number],.side textarea{-webkit-user-select:text;user-select:text;caret-color:auto}.side-scroll{scrollbar-gutter:stable;flex:auto;min-height:0;overflow-y:auto}.side-scroll::-webkit-scrollbar{width:10px}.modal-body::-webkit-scrollbar{width:10px}.side-scroll::-webkit-scrollbar-track{background:var(--panel-bg)}.modal-body::-webkit-scrollbar-track{background:var(--panel-bg)}.side-scroll::-webkit-scrollbar-button{display:none}.modal-body::-webkit-scrollbar-button{display:none}.side-scroll::-webkit-scrollbar-thumb{border:2px solid var(--panel-bg);background:#2c3440;border-radius:6px}.modal-body::-webkit-scrollbar-thumb{border:2px solid var(--panel-bg);background:#2c3440;border-radius:6px}.side-scroll::-webkit-scrollbar-thumb:hover{background:#3a4452}.modal-body::-webkit-scrollbar-thumb:hover{background:#3a4452}.side-scroll::-webkit-scrollbar-thumb:active{background:#465262}.modal-body::-webkit-scrollbar-thumb:active{background:#465262}@supports not selector(::-webkit-scrollbar){.side-scroll,.modal-body{scrollbar-width:thin;scrollbar-color:#2c3440 var(--panel-bg)}}.panel-toggle{border:none;border-bottom:1px solid var(--panel-line);background:var(--panel-bg);width:100%;height:40px;color:var(--text-dim);font:inherit;cursor:pointer;flex:none;place-items:center;font-size:16px;line-height:1;display:grid}.panel-toggle svg{display:block}.panel-toggle:hover{color:var(--text);background:#1f2630}#app[data-panel=collapsed]{grid-template-columns:44px 1fr}#app[data-panel=collapsed] .side-scroll{display:none}#app[data-panel=collapsed] .panel-toggle{border-bottom:none;flex:auto;height:auto}.panel{flex-direction:column;gap:18px;padding:14px 14px 32px;display:flex}.group{flex-direction:column;gap:8px;display:flex}.group h3,.fold>summary{letter-spacing:.07em;text-transform:uppercase;color:var(--text);margin:0;font-size:12.5px;font-weight:700}.panel-header{gap:6px;display:flex}.panel-header .text-input{text-overflow:ellipsis;flex:auto;min-width:0;padding-left:9px;padding-right:9px}.library-row{grid-template-columns:minmax(0,1.8fr) minmax(0,1fr);display:grid}.library-row .btn{white-space:nowrap}.panel-header .btn.icon{width:34px;height:38px}.panel-header .btn.icon svg{width:20px;height:20px}.panel-header .btn.icon.danger{color:var(--text);border-color:var(--panel-line)}.panel-header .btn.icon.danger:hover:not(:disabled){color:#f0b8b8;background:#3a2020;border-color:#5a2b2b}.fold{border-top:1px solid var(--panel-line);padding-top:12px;display:block}.fold>summary{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:2px 0;list-style:none;display:flex}.fold>summary::-webkit-details-marker{display:none}.fold>summary:after{content:"";border-bottom:2px solid;border-right:2px solid;width:7px;height:7px;margin-left:auto;margin-right:4px;transition:transform .15s;transform:rotate(-45deg)}.fold[open]>summary:after{transform:rotate(45deg)}.fold>summary:after{color:var(--text-dim)}.fold>summary:hover:after{color:var(--text)}.fold-body{flex-direction:column;gap:8px;margin-top:10px;display:flex}.subhead{align-items:center;gap:8px;min-height:28px;display:flex}.subhead .subgroup-title{flex:auto}.row{flex-wrap:wrap;gap:6px;display:flex}.row.orient{gap:8px}.row.split{flex-wrap:nowrap;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;display:grid}.row.split .btn{padding:7px 4px;font-size:13px}.subgroup{border:1px solid var(--panel-line);border-radius:var(--radius);background:#12171e;flex-direction:column;gap:8px;padding:10px;display:flex}.subgroup[hidden],.field[hidden],.row[hidden],.hint[hidden]{display:none}.subgroup-title{letter-spacing:.09em;text-transform:uppercase;color:var(--text-dim);margin:0;font-size:11px;font-weight:600}.hint{color:var(--text-dim);margin:2px 0 0;font-size:12px}.hint.status{color:var(--accent-2)}.hint.status:empty{display:none}.btn{border:1px solid var(--panel-line);border-radius:var(--radius);min-width:0;min-height:38px;color:var(--text);font:inherit;cursor:pointer;background:#1f2630;flex:auto;padding:7px 10px;font-size:14px;transition:background .12s,border-color .12s}.btn:hover:not(:disabled){background:#27303c}.btn:disabled{opacity:.4;cursor:default}.btn.active{border-color:var(--accent);background:#1d3a2b}.btn.download{flex-direction:column;align-items:center;gap:1px;padding:7px 4px 6px;display:flex}.download-format{align-items:center;gap:4px;font-size:14px;font-weight:600;display:inline-flex}.download-format svg,.btn.with-icon svg{flex:none;width:18px;height:18px}.download-caption{color:var(--text-dim);font-size:11px;line-height:1.2}.btn.download:hover:not(:disabled){border-color:#3a4a5c}.btn.with-icon{justify-content:center;align-items:center;gap:6px;display:inline-flex}.btn.danger{color:#f0b8b8;border-color:#5a2b2b}.btn.danger:hover:not(:disabled){background:#3a2020}.tool-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;display:grid}.tool-settings{border:1px solid var(--panel-line);border-radius:var(--radius);background:#12171e;flex-direction:column;gap:8px;padding:8px 10px 10px;display:flex}.settings-part,.shape-editor{flex-direction:column;gap:8px;display:flex}.settings-part[hidden],.shape-editor[hidden]{display:none}.choice-field{color:var(--text-dim);grid-template-columns:64px minmax(0,1fr);align-items:center;gap:8px;font-size:13px;display:grid}.choice-field[hidden]{display:none}.choice-field .btn{min-height:32px}.choice-field .btn.glyph{font-size:18px;line-height:1}.btn.tool{flex-direction:column;align-items:center;gap:2px;min-height:50px;padding:6px 1px 5px;font-size:11px;line-height:1.15;display:flex}.btn.tool svg{flex:none;width:22px;height:22px}.btn.tool span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.color-swatches{grid-template-columns:repeat(9,minmax(0,1fr));gap:5px;display:grid}.color-swatch{aspect-ratio:1;background:var(--swatch,#888);cursor:pointer;border:1px solid #ffffff40;border-radius:50%;width:100%;max-width:30px;padding:0;transition:box-shadow .12s;position:relative;box-shadow:0 0 0 2px #0000}.color-swatch.active{box-shadow:0 0 0 2px var(--panel-bg), 0 0 0 4px var(--accent)}.color-swatch.auto{background:linear-gradient(135deg,#fff 0 50%,#2b2b2b 50% 100%)}.color-swatch.custom{background:var(--swatch,conic-gradient(#e53935, #ffd54f, #66bb6a, #42a5f5, #ab47bc, #e53935));overflow:hidden}.color-swatch.custom input{opacity:0;cursor:pointer;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0}.slider-field{color:var(--text-dim);grid-template-columns:64px minmax(0,1fr) 36px;align-items:center;gap:8px;font-size:13px;display:grid}.slider-field input[type=range]{width:100%;accent-color:var(--accent)}.slider-value{text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}.slider-field.narrow{grid-template-columns:64px minmax(0,1fr)}.shot-slider{flex-direction:column;gap:2px;display:flex}.shot-scale{color:var(--text-dim);justify-content:space-between;margin-left:72px;font-size:11px;display:flex}.shot-readout{color:var(--text);text-overflow:ellipsis;white-space:nowrap;margin:4px 0 0 72px;font-size:13px;overflow:hidden}.tip-box{align-items:center;gap:12px;margin-top:6px;display:flex}.tip-picker{cursor:crosshair;touch-action:none;flex:none}.tip-picker.disabled{opacity:.4;cursor:default}.tip-ball{fill:#f5f3ec;stroke:#3a3a3a;stroke-width:1.5px}.tip-guide{stroke:#a0a0a0;stroke-width:1px}.tip-limit{fill:none;stroke:#8c8c8c;stroke-width:1px;stroke-dasharray:3 3}.tip-dot{fill:#d32f2f;stroke:#fff;stroke-width:1.5px}.tip-side{flex-direction:column;gap:4px;min-width:0;display:flex}.tip-readout{color:var(--text);white-space:nowrap;flex-direction:column;margin:0;font-size:13px;line-height:1.4;display:flex}.tip-readout>span{min-height:1.4em}.tip-show{color:var(--text-dim);cursor:pointer;align-items:center;gap:6px;font-size:13px;display:flex}.tip-show input{accent-color:var(--accent)}.slider-field[hidden],.btn[hidden]{display:none}.btn.small{flex:none;min-height:28px;padding:3px 10px;font-size:12px}.btn.icon{width:46px;height:44px;color:var(--text);flex:none;place-items:center;padding:0;display:grid}.swatches{gap:8px}.swatch{border:2px solid var(--ball-edge,#000);background:var(--ball,#888);cursor:pointer;border-radius:50%;flex:none;width:34px;height:34px;padding:0;transition:box-shadow .12s,transform .12s;box-shadow:0 0 0 2px #0000}.swatch:hover{transform:scale(1.06)}.swatch.active{box-shadow:0 0 0 2px var(--accent-2)}.swatch.striped{background:linear-gradient(180deg, var(--ball-body) 0 22%, var(--ball) 22% 78%, var(--ball-body) 78% 100%)}.swatch .num{color:#1b1b1e;background:#fff;border-radius:50%;place-items:center;width:17px;height:17px;margin:0 auto;font-size:11px;font-weight:700;line-height:1;display:grid}.text-input,.select{border:1px solid var(--panel-line);border-radius:var(--radius);width:100%;min-height:38px;color:var(--text);font:inherit;background:#12171e;padding:7px 10px;font-size:14px}.key-list{flex-direction:column;gap:4px;display:flex}.key-row{grid-template-columns:20px minmax(0,1fr) 84px;align-items:center;gap:10px;display:grid}.key-row>svg{width:18px;height:18px;color:var(--text-dim)}.key-name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.side input.key-input{text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;caret-color:#0000;min-height:32px;padding:4px 6px;font-weight:600}.side input.key-input:focus{border-color:var(--accent);background:#16241d;outline:none}.key-input::placeholder{color:var(--text-dim);font-weight:400}.field{color:var(--text-dim);align-items:center;gap:8px;font-size:13px;display:flex}.field>label{flex:0 0 110px}.field .select{flex:auto;width:auto}.field.checkbox{gap:8px}.field.checkbox>label{flex:auto}.field.checkbox input{width:18px;height:18px;accent-color:var(--accent)}.hidden-file{display:none}.modal{background:var(--panel-bg);width:min(440px,100vw - 32px);max-height:calc(100vh - 48px);color:var(--text);border:none;border-radius:14px;padding:0;box-shadow:0 24px 64px #0009}.modal[open]{flex-direction:column;display:flex}.modal.wide{width:min(1080px,100vw - 32px);height:calc(100vh - 48px)}.modal:focus{outline:none}.modal::backdrop{background:#05070ab8}.modal-head{border-bottom:1px solid var(--panel-line);flex:none;align-items:center;gap:12px;padding:12px 12px 12px 18px;display:flex}.modal-head h2{flex:auto;margin:0;font-size:17px;font-weight:600}.modal .modal-search{flex:0 300px;min-width:0;min-height:34px;padding:5px 10px}.modal .modal-search:focus{border-color:#3a4554;outline:none}.modal-close{width:34px;height:34px;color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:8px;flex:none;padding:0;font-size:17px}.modal-close:hover{color:var(--text);background:#27303c}.modal-body{flex-direction:column;flex:auto;gap:12px;min-height:0;padding:16px 18px 18px;display:flex;overflow-y:auto}.modal-foot{border-top:1px solid var(--panel-line);flex-direction:column;flex:none;gap:4px;padding:12px 18px 14px;display:flex;position:relative}.modal-foot>.toast{bottom:calc(100% + 12px)}.backup-row{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.backup-title{font-size:14px;font-weight:600}.backup-last{color:var(--text-dim);font-size:13px}.backup-actions{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.backup-actions .btn{flex:none;min-height:34px;padding:5px 12px}.choice-list{flex-direction:column;gap:8px;display:flex}.btn.choice{text-align:left;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 14px;display:flex}.choice-label{font-size:15px;font-weight:600}.choice-hint{color:var(--text-dim);font-size:12px}.ex-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;display:grid}.ex-card{border:1px solid var(--panel-line);background:#1b2129;border-radius:12px;flex-direction:column;display:flex;overflow:hidden}.ex-card:hover{border-color:#3a4554}.ex-card.current{border-color:var(--accent)}.ex-open{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;gap:8px;padding:8px 8px 0;display:flex}.ex-thumb{aspect-ratio:16/9;border-radius:7px;position:relative;overflow:hidden}.ex-thumb svg{width:100%;height:100%;display:block}.ex-badge{background:var(--accent);color:#fff;border-radius:6px;padding:1px 8px;font-size:11px;font-weight:600;position:absolute;top:6px;left:6px}.ex-title{text-overflow:ellipsis;white-space:nowrap;padding:0 2px;font-size:14px;font-weight:600;overflow:hidden}.ex-title.untitled{color:var(--text-dim);font-weight:400}.ex-foot{flex-wrap:wrap;align-items:center;gap:0 6px;padding:2px 6px 6px 10px;display:flex}.ex-date{color:var(--text-dim);white-space:nowrap;flex:auto;font-size:12px}.ex-actions{gap:2px;margin-left:auto;display:flex}.ex-action{width:32px;height:32px;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:8px;place-items:center;padding:0;display:grid}.ex-action svg{width:18px;height:18px}.ex-action:hover{color:var(--text);background:#27303c}.ex-action.danger:hover{color:#f0b8b8;background:#3a2020}.ex-empty{color:var(--text-dim);text-align:center;margin:48px 0}.ex-empty:empty{display:none}.help-row{border-top:1px solid var(--panel-line);padding-top:12px;display:grid}.help{grid-template-columns:190px minmax(0,1fr);align-items:start;gap:24px;display:grid}.help:has(.help-content:empty){display:none}.help-nav{flex-direction:column;gap:2px;display:flex;position:sticky;top:0}.help-link{color:var(--text-dim);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:7px 10px;font-size:14px;display:flex}.help-link:hover{color:var(--text);background:#222a34}.help-count{color:var(--text);background:#26303b;border-radius:10px;margin-left:auto;padding:0 7px;font-size:12px}.help-content{flex-direction:column;gap:28px;max-width:720px;display:flex}.help-chapter{flex-direction:column;gap:18px;scroll-margin-top:4px;display:flex}.help-chapter h3{border-bottom:1px solid var(--panel-line);letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);margin:0;padding-bottom:6px;font-size:12px;font-weight:700}.help-topic h4{margin:0 0 6px;font-size:15px;font-weight:600}.help-topic p,.help-topic ul{color:#c9d1dc;margin:0 0 6px;font-size:14px;line-height:1.5}.help-topic ul{padding-left:20px}.help-topic li+li{margin-top:2px}.help kbd{color:var(--text);font:inherit;white-space:nowrap;background:#222a34;border:1px solid #3a4554;border-bottom-width:2px;border-radius:5px;padding:0 5px;font-size:12px;line-height:1.5;display:inline-block}.help mark{color:#fff3c4;background:#4a4217;border-radius:3px}@media (max-width:760px){.help{grid-template-columns:minmax(0,1fr);gap:12px}.help-nav{flex-flow:wrap;gap:4px;position:static}.help-link{background:#222a34;padding:5px 10px}}@media (max-width:600px){.modal,.modal.wide{border-radius:0;width:100vw;max-width:none;height:100%;max-height:none}.modal-head{flex-wrap:wrap}.modal .modal-search{flex:100%;order:3}.ex-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.backup-actions{width:100%;margin-left:0}.backup-actions .btn{flex:100%}}@media (max-width:860px){#app{grid-template:"board"minmax(0,1fr)"side"/1fr}.side{border-right:none;border-top:1px solid var(--panel-line);max-height:46vh}#app[data-panel=collapsed]{grid-template-columns:1fr}#app[data-panel=collapsed] .panel-toggle{flex:none;height:40px}.board{padding:6px}.panel{gap:14px;padding:12px 12px 24px}.btn{min-height:44px}.btn.small{min-height:36px}.swatch{width:40px;height:40px}}@media (max-width:860px) and (orientation:landscape){#app{grid-template:"board side"minmax(0,1fr)/1fr 300px}#app[data-panel=collapsed]{grid-template-columns:1fr 44px}#app[data-panel=collapsed] .panel-toggle{flex:auto;height:auto}.side{border-top:none;border-left:1px solid var(--panel-line);max-height:none}}
