:root{--accent: #c9503c;--accent-strong: #a93d2c;--accent-soft: rgba(201, 80, 60, .1);--ok: #1f7a5c;--danger: #c0392b;--bg: #f6f4ef;--bg-soft: #fffdf9;--bg-input: #fffdf9;--bg-stage: #ffffff;--text: #23211d;--text-dim: #6f6a61;--border: #e2ddd2;--border-strong: #cec7b8;--radius: 12px;--shadow: 0 1px 2px rgba(40, 34, 24, .05);--shadow-lift: 0 10px 28px rgba(40, 34, 24, .08);--mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;color-scheme:light}[data-theme=light]{color-scheme:light}[data-theme=dark]{color-scheme:dark;--bg: #15161a;--bg-soft: #1d1f24;--bg-input: #1a1c21;--bg-stage: #23262c;--text: #eceae5;--text-dim: #a19d95;--border: #32353c;--border-strong: #464a53;--accent: #ef7259;--accent-strong: #ff8b74;--accent-soft: rgba(239, 114, 89, .14);--shadow: none;--shadow-lift: 0 10px 30px rgba(0, 0, 0, .4)}[data-theme=sepia]{color-scheme:light;--bg: #f0e7d5;--bg-soft: #faf3e4;--bg-input: #fdf8ec;--bg-stage: #fffdf6;--text: #463c2c;--text-dim: #877454;--border: #dccfb2;--border-strong: #c8b48d;--accent: #a1602c;--accent-strong: #844c22;--accent-soft: rgba(161, 96, 44, .12);--shadow: 0 1px 3px rgba(90, 70, 30, .08)}[data-theme=green]{color-scheme:light;--bg: #d7e8d8;--bg-soft: #e9f3e9;--bg-input: #e1efe2;--bg-stage: #f3faf3;--text: #1d3b2a;--text-dim: #557463;--border: #b4ccb7;--border-strong: #93b497;--accent: #1f7a4d;--accent-strong: #155f3a;--accent-soft: rgba(31, 122, 77, .13)}[data-theme=ocean]{color-scheme:dark;--bg: #0b1b2d;--bg-soft: #122840;--bg-input: #0e2136;--bg-stage: #17334f;--text: #dfeaf6;--text-dim: #8ea8c4;--border: #234461;--border-strong: #33608a;--accent: #f2a65a;--accent-strong: #ffbd78;--accent-soft: rgba(242, 166, 90, .15);--shadow: none}[data-theme=violet]{color-scheme:light;--bg: #f4f1fa;--bg-soft: #fffdfd;--bg-input: #fffdfd;--bg-stage: #ffffff;--text: #2d2740;--text-dim: #7c719a;--border: #e0d9ef;--border-strong: #cbc0e0;--accent: #6d4bb5;--accent-strong: #56369c;--accent-soft: rgba(109, 75, 181, .12)}[data-theme=high]{color-scheme:dark;--bg: #000000;--bg-soft: #0b0b0b;--bg-input: #000000;--bg-stage: #000000;--text: #ffffff;--text-dim: #e0e0e0;--border: #ffffff;--border-strong: #ffffff;--accent: #ffd60a;--accent-strong: #ffe552;--accent-soft: rgba(255, 214, 10, .18);--ok: #5cff9d;--danger: #ff6b6b;--shadow: none;--shadow-lift: none}[data-theme=high] .btn.primary,[data-theme=high] .tool-card:hover .tool-icon{color:#000}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}h1,h2,h3,h4{margin:0 0 8px;letter-spacing:-.01em}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.container{max-width:1180px;margin:0 auto;padding:0 20px}.container-wide{max-width:1440px;margin:0 auto;padding:0 20px}.topbar{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--bg-soft) 88%,transparent);backdrop-filter:saturate(1.2) blur(10px);border-bottom:1px solid var(--border)}.topbar-inner{display:flex;align-items:center;justify-content:space-between;min-height:56px;gap:14px}.topbar-left{display:flex;align-items:center;gap:12px;min-width:0}.topbar-right{display:flex;align-items:center;gap:8px;flex:none}.topnav{display:flex;align-items:center;gap:18px;margin-left:6px;flex:1;font-size:13px}.topnav a{color:var(--text-dim)}.topnav a:hover{color:var(--accent)}.logo{font-weight:700;font-size:16px;color:var(--text);display:inline-flex;align-items:center;gap:9px;flex:none}.logo-badge{width:28px;height:28px;border-radius:8px;background:var(--accent);color:#fff;display:inline-flex;align-items:center;justify-content:center}.tool-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.back-link{color:var(--text-dim);font-size:13px;white-space:nowrap}.back-link:hover{color:var(--accent)}main{padding:26px 0 44px}.tool-main{padding-top:20px}.hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:36px;align-items:center;padding:52px 0 26px}.hero-kicker{display:inline-flex;align-items:center;gap:6px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:600}.hero h1{font-size:clamp(28px,4.2vw,44px);line-height:1.18;margin:12px 0 14px;font-weight:750}.hero p{color:var(--text-dim);font-size:15px;line-height:1.75;max-width:620px;margin:0}.search-box{max-width:520px;margin:24px 0 0}.search-box input{width:100%;padding:12px 16px;font-size:15px;border-radius:12px;border:1px solid var(--border);background:var(--bg-soft);color:var(--text);box-shadow:var(--shadow)}.search-box input:focus{outline:2px solid var(--accent);outline-offset:-1px}.hero-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.hero-tags span{font-size:12px;color:var(--text-dim);border:1px dashed var(--border-strong);border-radius:999px;padding:3px 10px}.hero-art{justify-self:stretch}.hero-art svg{width:100%;max-width:360px;margin:0 auto;display:block}.art-paper{fill:var(--bg-soft);stroke:var(--border);stroke-width:1.5}.art-stroke{stroke:var(--accent);stroke-width:7;stroke-linecap:round;stroke-linejoin:round;opacity:.9}.art-circle{stroke:var(--text-dim);stroke-width:1.5;fill:none}.art-axis{stroke:var(--text-dim);stroke-width:1.2;stroke-dasharray:6 6}.art-line{stroke:var(--text-dim);stroke-width:3;stroke-linecap:round;opacity:.5}.art-arrow{stroke:var(--text);stroke-width:2;stroke-linecap:round}.art-arrow-head{stroke:var(--text);stroke-width:2}.art-dot{fill:var(--accent)}.stats-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin:18px 0 8px}.stats-strip>div{background:var(--bg-soft);padding:14px 18px;display:flex;flex-direction:column;gap:2px}.stats-strip strong{font-size:20px;font-weight:700}.stats-strip span{font-size:12px;color:var(--text-dim)}.cat-block{margin-top:34px}.cat-title{display:flex;align-items:baseline;gap:10px;margin-bottom:14px;flex-wrap:wrap}.cat-title h2{font-size:18px;margin:0}.cat-title span{color:var(--text-dim);font-size:13px}.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:14px}.tool-card{display:flex;gap:13px;align-items:flex-start;padding:16px;background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .15s,transform .15s,box-shadow .15s;color:var(--text)}.tool-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow-lift)}.tool-icon{width:40px;height:40px;flex:none;border-radius:11px;background:var(--accent-soft);color:var(--accent);display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono);font-weight:700;font-size:15px}.tool-card h3{margin:0 0 4px;font-size:15px}.tool-card p{margin:0;color:var(--text-dim);font-size:12.5px;line-height:1.5}.why-block{margin-top:44px;border-top:1px solid var(--border);padding-top:28px}.why-block h2{font-size:18px}.why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:14px}.why-grid h3{font-size:14px;margin:0 0 6px;color:var(--accent)}.why-grid p{margin:0;color:var(--text-dim);font-size:13px;line-height:1.7}.about-page{padding:26px 0 40px;max-width:860px}.about-hero{padding:22px 0 18px}.about-hero h1{font-size:clamp(26px,3.4vw,34px)}.about-hero p{color:var(--text-dim);line-height:1.75;margin:0}.about-section{margin-top:30px}.about-section h2{font-size:18px;margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid var(--border)}.about-section p{color:var(--text-dim);line-height:1.8;margin:0 0 14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid var(--border);background:var(--bg-soft);color:var(--text);padding:6px 12px;border-radius:9px;font-size:13px;line-height:1.4;transition:border-color .15s,color .15s,background .15s;white-space:nowrap}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.btn.danger{color:var(--danger);border-color:var(--danger)}.btn.small{padding:3px 8px;font-size:12px;border-radius:7px}.btn:disabled{opacity:.45;cursor:not-allowed}.alert{padding:10px 14px;border-radius:9px;font-size:13px;margin:10px 0}.alert.error{background:color-mix(in srgb,var(--danger) 10%,transparent);color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 30%,transparent)}.alert.ok{background:color-mix(in srgb,var(--ok) 10%,transparent);color:var(--ok);border:1px solid color-mix(in srgb,var(--ok) 30%,transparent)}.alert.muted{background:var(--bg-soft);color:var(--text-dim);border:1px solid var(--border)}select,input[type=text],input[type=number],input[type=search],textarea{background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:9px;padding:5px 10px;font-size:13px}select:focus,input:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.opt-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:4px 0 10px}.opt-label{font-size:12.5px;color:var(--text-dim);display:inline-flex;align-items:center;gap:6px}.tool-page{padding-bottom:10px}.tool-head{margin-bottom:14px}.tool-head h1{font-size:22px;margin:0 0 4px}.tool-head p{color:var(--text-dim);margin:0;font-size:13px;max-width:860px}.board-shell{background:var(--bg-soft);border:1px solid var(--border);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}.board-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;border-bottom:1px solid var(--border);background:var(--bg-soft)}.tool-group{display:inline-flex;align-items:center;gap:3px;padding:2px;border:1px solid var(--border);border-radius:10px;background:var(--bg)}.tool-btn{display:inline-flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--text-dim);padding:5px 9px;border-radius:7px;font-size:12.5px;line-height:1.3}.tool-btn:hover{color:var(--text);background:var(--bg-soft)}.tool-btn.active{background:var(--accent);color:#fff}.tool-btn .ico{font-size:14px;line-height:1}.board-sep{width:1px;height:22px;background:var(--border)}.swatches{display:inline-flex;align-items:center;gap:4px}.swatch{width:20px;height:20px;border-radius:50%;border:2px solid transparent;padding:0}.swatch.active{border-color:var(--text)}.color-input{width:28px;height:26px;padding:1px;border-radius:7px;border:1px solid var(--border);background:var(--bg-soft)}.range{width:92px;accent-color:var(--accent)}.board-toolbar .spacer{flex:1}.board-extra,.board-quick{display:contents}.more-btn{display:none}.board-stage{position:relative;background:var(--bg-stage)}.board-shell.is-fullscreen{position:fixed;inset:0;width:100%;height:100%;z-index:60;border-radius:0;border:0;display:flex;flex-direction:column;background:var(--bg-soft)}.board-shell.is-fullscreen>.board-toolbar{flex:none}.board-shell.is-fullscreen>.work-grid{flex:1;min-height:0;grid-template-rows:minmax(0,1fr);align-items:stretch}.board-shell.is-fullscreen .svg-stage{height:auto;min-height:0}.board-shell.is-fullscreen .side{max-height:100%;overflow:auto}.board-shell.is-fullscreen .board-canvas-wrap{flex:1;height:auto!important;min-height:0}.board-shell.is-fullscreen .board-status{flex:none}.grid-canvas-wrap{background:var(--bg);padding:16px;display:flex;justify-content:center}.grid-canvas{width:100%;max-width:520px;height:auto;box-shadow:var(--shadow-lift);background:#fff}.board-shell.is-fullscreen .grid-canvas-wrap{flex:1;min-height:0;align-items:center;padding:12px;overflow:auto}.board-shell.is-fullscreen .grid-canvas{width:auto;max-width:100%;max-height:calc(100vh - 110px)}@media (max-width: 1020px){.board-shell.is-fullscreen .work-grid{grid-template-columns:1fr}.board-shell.is-fullscreen .work-grid>.side{display:none}}.board-canvas-wrap{position:relative;height:min(68vh,720px);min-height:380px;touch-action:none;overflow:auto}.board-canvas-wrap.hand-mode{cursor:grab}.board-canvas-wrap.hand-mode:active{cursor:grabbing}.board-canvas-wrap.select-mode,.board-canvas-wrap.select-mode .board-canvas{cursor:default}.sel-box{position:absolute;box-sizing:border-box;border:1px dashed var(--accent);background:#c9503c0a;pointer-events:none;border-radius:2px}.sel-handle{position:absolute;right:-7px;bottom:-7px;width:14px;height:14px;border-radius:3px;background:var(--accent);box-shadow:0 1px 3px #0003}.board-canvas,.overlay-canvas{position:absolute;top:0;left:0;width:100%;height:100%;display:block}.overlay-canvas{pointer-events:none}.text-editor{position:absolute;z-index:5;min-width:120px;padding:2px 6px;border:1px dashed var(--accent);border-radius:4px;background:var(--bg-soft);color:var(--text);font-size:16px}.board-status{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:6px 12px;border-top:1px solid var(--border);font-size:11.5px;color:var(--text-dim);background:var(--bg-soft)}.board-status .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);display:inline-block;margin-right:4px}.board-status .draft-restored{color:var(--accent)}.board-hint{font-size:12px;color:var(--text-dim);margin-top:8px}.panel{background:var(--bg-soft);border:1px solid var(--border);border-radius:12px;padding:14px}.panel h3{font-size:14px;margin:0 0 10px}.panel-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}.panel-row label{font-size:12.5px;color:var(--text-dim);min-width:64px}.field{display:flex;flex-direction:column;gap:4px}.field label{font-size:12px;color:var(--text-dim)}.field input,.field select{width:100%}.work-grid{display:grid;grid-template-columns:minmax(0,1fr) 268px;gap:14px;align-items:start}.work-grid .side{display:flex;flex-direction:column;gap:10px}@media (max-width: 1020px){.work-grid{grid-template-columns:1fr}.work-grid .side{flex-direction:row;flex-wrap:wrap}.work-grid .side>*{flex:1 1 240px}}.node-text-input{position:absolute;z-index:4;padding:3px 6px;border:1px solid var(--accent);border-radius:5px;background:var(--bg-soft);color:var(--text);font-size:13px;min-width:90px}.svg-stage{position:relative;width:100%;height:min(66vh,680px);min-height:360px;background:var(--bg-stage);border-radius:0;overflow:hidden;touch-action:none}.svg-stage svg{width:100%;height:100%;display:block}.svg-stage .stage-bg{fill:var(--bg-stage)}.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border:1px solid var(--border);border-radius:999px;font-size:12px;color:var(--text-dim);background:var(--bg-soft)}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--text-dim)}.legend span{display:inline-flex;align-items:center;gap:5px}.legend i{width:12px;height:12px;border-radius:3px;display:inline-block}.stamp-panel{display:flex;gap:6px;flex-wrap:wrap;padding:8px 10px;border-bottom:1px solid var(--border);background:var(--bg)}.stamp-btn{width:34px;height:34px;padding:4px;border-radius:8px;border:1px solid var(--border);background:var(--bg-soft);color:var(--text-dim);display:inline-flex;align-items:center;justify-content:center}.stamp-btn svg{width:100%;height:100%;display:block}.stamp-btn:hover{color:var(--accent);border-color:var(--accent)}.stamp-btn.active{color:#fff;background:var(--accent);border-color:var(--accent)}.stamping{cursor:crosshair}.tpl-block{margin-top:34px}.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(206px,1fr));gap:14px}.tpl-card{display:flex;flex-direction:column;overflow:hidden;color:var(--text);background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .15s,transform .15s,box-shadow .15s}.tpl-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow-lift)}.tpl-thumb{aspect-ratio:3 / 2;background:#fff;border-bottom:1px solid var(--border)}.tpl-thumb svg{width:100%;height:100%;display:block}.tpl-meta{padding:10px 12px;display:flex;flex-direction:column;gap:2px}.tpl-meta h3,.tpl-meta h2{margin:0;font-size:13.5px}.tpl-meta span{font-size:11.5px;color:var(--text-dim)}.tpl-meta em{font-style:normal;font-size:12px;color:var(--accent);margin-top:4px}.section-more{margin:14px 0 0}.related-tools{margin-top:38px;padding-top:18px;border-top:1px solid var(--border)}.related-tools .cat-title{margin-bottom:12px}.related-tools .cat-title a{font-size:12.5px;color:var(--accent)}.templates-page,.faq-page{padding:26px 0 40px;max-width:980px}.templates-page .tpl-grid{margin-top:18px}.faq-cta{margin-top:34px;padding:20px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft)}.faq-cta h2{font-size:18px;margin:0 0 8px}.faq-cta p{color:var(--text-dim);line-height:1.75;margin:0 0 14px}.faq-list{margin-top:18px;display:grid;gap:10px}.faq-item{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);padding:0 16px}.faq-item summary{cursor:pointer;padding:14px 0;font-weight:600;list-style:none}.faq-item summary:after{content:"+";float:right;color:var(--accent);font-weight:700}.faq-item[open] summary:after{content:"–"}.faq-item p{margin:0 0 16px;color:var(--text-dim);line-height:1.8}footer.site-footer{margin-top:42px;border-top:1px solid var(--border);background:var(--bg-soft);padding:30px 0 16px;font-size:13px;color:var(--text-dim)}.footer-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:24px}.footer-col h4{color:var(--text);font-size:13px;margin:0 0 10px}.footer-col ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.footer-col a{color:var(--text-dim)}.footer-col a:hover{color:var(--accent)}.footer-col small{color:var(--text-dim);opacity:.85}.footer-about{margin:0;max-width:380px}.footer-bottom{margin-top:22px;padding-top:14px;border-top:1px solid var(--border);display:flex;gap:16px;flex-wrap:wrap;align-items:center;font-size:12px}@media (max-width: 900px){.hero{grid-template-columns:1fr;gap:16px;padding-top:34px}.hero-art{order:-1;max-width:220px;margin:0 auto}.stats-strip{grid-template-columns:1fr 1fr}.why-grid{grid-template-columns:1fr}.footer-grid{grid-template-columns:1fr 1fr}}@media (max-width: 640px){.container,.container-wide{padding:0 14px}.topbar-inner{flex-wrap:wrap;min-height:0;padding:8px 0;row-gap:6px}.topnav{order:3;width:100%;gap:14px;margin-left:0}.topbar-right{margin-left:auto}.select-lang,.lang-switch,.theme-switch{max-width:118px}.tool-head h1{font-size:19px}.tool-grid,.footer-grid{grid-template-columns:1fr}.footer-bottom{flex-direction:column;align-items:flex-start;gap:6px}.board-toolbar{gap:6px;padding:7px;align-items:flex-start}.board-toolbar .board-sep{display:none}.board-toolbar .tool-btn{white-space:nowrap;flex:0 0 auto}.board-toolbar .board-tool{width:40px;height:40px;padding:0;font-size:17px;justify-content:center}.board-toolbar .board-tool .tool-label{display:none}.board-toolbar .more-btn{display:inline-flex;width:auto;padding:0 10px;gap:4px;font-size:12px}.board-toolbar .more-btn .tool-label{display:inline}.board-tool-group{flex:0 0 100%;display:grid;grid-template-columns:repeat(6,1fr);gap:6px;max-width:100%}.board-quick{display:flex;gap:4px}.board-extra{display:none}.board-extra.open{display:flex;flex:0 0 100%;flex-wrap:wrap;gap:8px;border-top:1px dashed var(--border);padding-top:8px}.board-extra .opt-label{flex:1 1 45%;display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px}.board-extra .opt-label select{max-width:100%}.board-extra .btn.small{padding:6px 8px}.board-toolbar .spacer{display:none}.board-canvas-wrap{min-height:340px;height:56vh}.swatches{max-width:100%;overflow-x:auto;flex-wrap:nowrap}.swatch{width:24px;height:24px;flex:0 0 auto}.range{width:74px}.stamp-btn{width:40px;height:40px}.svg-stage{height:70vh!important;min-height:420px;overflow:auto;touch-action:pan-x pan-y;aspect-ratio:auto!important}.svg-stage svg{width:1100px;height:auto;max-width:none}.flow-node,.geo-point{touch-action:none}}
