:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#203b53;background:#f6f8fa;font-size:14px;font-synthesis:none;--ink:#173d5c;--muted:#6a7c8b;--line:#e4eaf0;--blue:#1e5279;--soft:#edf3f8;--radius:16px;color-scheme:light}*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-padding-top:100px}body{margin:0;padding:0 0 env(safe-area-inset-bottom);-webkit-text-size-adjust:100%}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{min-height:44px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);padding:9px 13px;cursor:pointer;touch-action:manipulation}button:disabled{opacity:.42;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #87b5d5;outline-offset:3px}a{color:var(--blue);text-decoration:none}.app-header{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:calc(12px + env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) 12px max(24px,env(safe-area-inset-left));background:#f6f8faf5;border-bottom:1px solid var(--line)}.brand{display:flex;gap:11px;align-items:center;color:var(--ink)}.brand-mark{display:grid;place-items:center;width:42px;height:42px;background:var(--ink);color:#fff;border-radius:13px;font-size:31px}.brand strong{display:block;font-size:20px;letter-spacing:2px}.brand small{display:block;font-size:11px;letter-spacing:1px;color:var(--muted);margin-top:3px}.app-header nav{display:flex;gap:7px}.primary{background:var(--ink);color:#fff;border-color:var(--ink)}main{display:grid;grid-template-columns:220px minmax(390px,1fr) 250px;gap:18px;max-width:1600px;margin:0 auto;padding:22px}.panel{min-width:0;background:white;border:1px solid var(--line);border-radius:var(--radius);padding:18px;align-self:start}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}h1,h2,p{margin:0}h1{font-size:18px;letter-spacing:1px}h2{font-size:15px;font-weight:600}small,.step-note{color:var(--muted);font-size:11px}.library-panel{position:sticky;top:104px}#search{width:100%;min-height:44px;border:1px solid var(--line);border-radius:10px;background:#f8fafb;padding:10px 12px;font-size:16px}.tabs{display:flex;gap:5px;flex-wrap:wrap;margin:12px 0}.tabs button{font-size:11px;padding:8px;min-height:38px;flex:1;white-space:nowrap}.tabs .on{background:var(--soft);border-color:#bad0df;color:var(--ink)}#library{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;max-height:calc(100dvh - 295px);min-height:140px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}.motif{min-width:0;padding:5px;font-size:10px;contain:content}.motif img{display:block;aspect-ratio:1;width:100%;object-fit:contain;background:#f7f9fb;border-radius:6px}.motif span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:5px}#libraryStatus{margin-top:10px}.tool-buttons{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.tool-buttons button{padding:9px 4px;border-color:transparent;background:#f3f6f9}.tool-buttons button[aria-pressed=true]{background:var(--ink);color:white}.fill-palette{margin:18px 0 12px}.field-caption{display:block;color:var(--muted);font-size:11px;margin-bottom:9px}.swatches{display:grid;grid-template-columns:repeat(auto-fit,minmax(38px,1fr));gap:7px;margin:10px 0}.swatches button{position:relative;width:100%;height:40px;min-height:40px;padding:0;border:1px solid #d5e0e9;border-radius:9px}.swatches button.on{outline:2px solid var(--blue);outline-offset:2px}.swatches button.on::after{content:'✓';position:absolute;inset:0;display:grid;place-items:center;color:white;text-shadow:0 1px 3px #10263f,0 0 2px #10263f;font-size:19px;font-weight:700}.fill-swatches{grid-template-columns:repeat(13,minmax(0,1fr));gap:6px}.fill-swatches button{height:38px;min-height:38px}.tool-hint{color:var(--muted);font-size:12px;line-height:1.6;min-height:38px;margin-bottom:12px}.boards{display:grid;grid-template-columns:1fr 1fr;gap:14px}.boards>section{min-width:0}.stage-title{display:flex;align-items:baseline;justify-content:space-between;gap:5px;margin-bottom:9px;flex-wrap:wrap}.stage-title h2{font-size:12px}.stage-title span{font-size:10px;color:var(--muted)}.canvas-wrap{width:100%;aspect-ratio:1;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:#edf1f5;touch-action:none}canvas{display:block;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none}#canvas{cursor:grab}#canvas:active{cursor:grabbing}#canvas[data-tool=fill],#canvas[data-tool=unfill],#canvas[data-tool=eraser]{cursor:crosshair}#canvas[data-tool=pan]{cursor:grab}.board-tabs{display:none}.zoom-tools{display:flex;align-items:center;gap:8px;margin-top:14px}.zoom-tools input{flex:1;min-width:0}.zoom-tools button{padding:5px 11px}.zoom-tools output{min-width:41px;text-align:center}input[type=range]{accent-color:var(--blue);height:40px;cursor:pointer;touch-action:pan-y;width:100%;margin:0}output{font-size:12px;color:var(--muted)}.gesture-hint{font-size:10px;color:#8b98a3;line-height:1.7;margin-top:4px}#status{font-size:12px;color:var(--blue);line-height:1.65;margin-top:12px;min-height:20px}.settings-group{border-bottom:1px solid var(--line);padding:0 0 15px;margin-bottom:15px}.settings-group:last-of-type{margin-bottom:0}.settings-group summary{font-size:14px;font-weight:600;min-height:44px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;list-style:none}.settings-group summary::-webkit-details-marker{display:none}.settings-group summary::after{content:'＋';color:#899cab;font-weight:400}.settings-group[open] summary::after{content:'−'}#selection{font-size:12px;color:var(--muted);margin:7px 0 14px;overflow-wrap:anywhere}label{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;margin:15px 0 5px;min-height:28px}select{min-height:44px;max-width:145px;min-width:0;border:1px solid var(--line);border-radius:9px;background:#f8fafb;color:var(--ink);padding:8px;font-size:14px}.check{justify-content:flex-start;min-height:44px}.check input{width:20px;height:20px;accent-color:var(--blue)}.actions{display:flex;gap:7px;margin-top:13px}.actions button{flex:1;padding:8px 4px;font-size:12px}.hint{font-size:11px;line-height:1.75;color:var(--muted)}.settings-note{margin-top:14px}#editControls.disabled{opacity:.45}.export-result{margin-top:12px;padding:12px;border-radius:10px;background:var(--soft);display:flex;gap:10px;align-items:center;flex-wrap:wrap}.export-result a{min-height:44px;display:flex;align-items:center;font-size:13px}.mobile-nav{display:none}section,aside{scroll-margin-top:100px}@media(hover:hover){button:not(:disabled):hover{filter:brightness(.96)}}@media(max-width:1190px){main{grid-template-columns:190px minmax(0,1fr)}.properties{grid-column:1/-1;display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:22px}.settings-group{margin:0;border:0}.settings-note{grid-column:1/-1;margin:0}.fill-swatches{grid-template-columns:repeat(7,minmax(0,1fr))}#library{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){html{scroll-padding-top:88px}.app-header{padding:calc(9px + env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) 9px max(12px,env(safe-area-inset-left));gap:8px}.brand{gap:8px}.brand-mark{width:33px;height:36px;border-radius:10px;font-size:26px}.brand strong{font-size:16px;letter-spacing:1px}.brand small{display:none}.app-header nav{gap:5px}.app-header nav button{font-size:12px;padding:8px 9px;min-height:44px}main{display:flex;flex-direction:column;padding:12px max(12px,env(safe-area-inset-right)) calc(85px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));gap:12px}.panel{width:100%;padding:15px;border-radius:14px}.studio{order:0}.library-panel{order:1;position:static}.properties{order:2;display:block}.settings-group{border-bottom:1px solid var(--line);margin-bottom:14px;padding-bottom:14px}.settings-note{margin-top:12px}.panel-heading{margin-bottom:12px}.step-note{font-size:10px}h1{font-size:16px}.tool-buttons{gap:5px}.tool-buttons button{font-size:13px;min-height:44px}.fill-palette{margin:14px 0 10px}.fill-swatches{grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.fill-swatches button{height:44px;min-height:44px}.tool-hint{min-height:36px;margin-bottom:10px;font-size:11px}.board-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:#f0f4f7;border-radius:10px;padding:4px;margin-bottom:10px}.board-tabs button{border:0;background:transparent;font-size:12px}.board-tabs button[aria-selected=true]{background:white;box-shadow:0 1px 3px #193d5812}.boards{grid-template-columns:1fr}.boards[data-view=edit] .preview-board,.boards[data-view=preview] .editor-board{display:none}.stage-title{display:none}.zoom-tools{gap:6px;margin-top:10px}.zoom-tools button{min-width:44px;min-height:44px}.gesture-hint{font-size:10px}#library{grid-template-columns:repeat(5,minmax(0,1fr));max-height:340px;min-height:140px}.motif{font-size:10px}.tabs button{min-height:44px;font-size:12px}.swatches:not(.fill-swatches){grid-template-columns:repeat(7,minmax(0,1fr))}.swatches:not(.fill-swatches) button{height:44px;min-height:44px}select{font-size:16px;max-width:180px}.mobile-nav{position:fixed;bottom:0;left:0;right:0;z-index:6;display:flex;gap:8px;padding:8px max(16px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));background:#fffffffa;border-top:1px solid var(--line)}.mobile-nav a{flex:1;display:grid;place-items:center;min-height:44px;font-size:12px;border-radius:10px;color:var(--ink)}.mobile-nav a:nth-child(2){background:var(--soft);font-weight:600}.settings-group summary{min-height:48px}#status{font-size:11px}}@media(max-width:360px){.brand-mark{display:none}.app-header nav button{padding:8px}#library{grid-template-columns:repeat(4,minmax(0,1fr))}.step-note{display:none}}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.canvas-style{margin-bottom:14px;padding:0 12px 10px;background:var(--soft);border-radius:10px}.canvas-style label{margin-top:0;padding-top:10px;font-weight:600}.canvas-style select{flex:1;max-width:220px}.canvas-style .hint{margin-top:6px}

/* Quiet indigo-dye visual layer: CSS-only so it adds no assets or canvas cost. */
:root{--ink:#183b5b;--muted:#697b87;--line:#e4e7df;--blue:#245b82;--soft:#eef2ed;--radius:18px;background:#f2f3ed}
body{background:radial-gradient(ellipse at 50% -18%,#e5ebdf 0,transparent 52%),linear-gradient(180deg,#f5f5ef 0%,#eef1ec 100%);color:#24394a}
.app-header{background:rgba(247,247,241,.88);border-bottom-color:#dfe5dd;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.brand-mark{position:relative;isolation:isolate;overflow:hidden;background:#234f70;box-shadow:inset 0 0 0 1px #ffffff35,0 5px 14px #183b5b22;color:transparent}
.brand-mark::before{content:"";position:absolute;inset:5px;border-radius:50%;background:repeating-radial-gradient(circle at 50% 50%,#f8f7ef 0 1.7px,transparent 2px 4.5px);opacity:.94}
.brand-mark::after{content:"";position:absolute;inset:14px;border:1px solid #f8f7ef;border-radius:50%;background:#234f70;box-shadow:0 0 0 2px #234f7066}
.brand strong{letter-spacing:1.5px}.brand small{color:#72808a;letter-spacing:.8px}
.panel{background:rgba(255,255,252,.92);border-color:#e2e6df;border-radius:18px;box-shadow:0 8px 24px #213b4d08,0 1px 2px #213b4d08}
.panel-heading{margin-bottom:18px}.panel-heading h1,.panel-heading h2{color:#24465f}
#search{background:#f6f7f3;border-color:#e2e7e0}#search:focus{background:#fff;border-color:#89a9ba;outline:3px solid #dce8e8}
.tabs button{color:#687b87}.tabs .on{background:#e8efeb;border-color:#ccdcd5;color:#244e6a}
#library{scrollbar-color:#c6d2ce transparent}.motif{border-color:transparent;background:#f8f8f4;border-radius:11px;color:#516675;transition:background-color .18s ease,transform .18s ease,border-color .18s ease}
.motif img{background:linear-gradient(145deg,#f0f2ed,#fafaf6);border:1px solid #eaede7;border-radius:8px}
@media(hover:hover){.motif:hover{background:#edf2ee;border-color:#d7e2dc;transform:translateY(-1px)}}
button{border-color:#e1e7e1;box-shadow:0 1px 2px #1c3d5308;transition:background-color .16s ease,border-color .16s ease,transform .16s ease,box-shadow .16s ease}
button:active:not(:disabled){transform:translateY(1px);box-shadow:none}
button.primary,.primary{background:#234f70;border-color:#234f70;box-shadow:0 4px 12px #234f7020}
.tool-buttons button{background:#f1f4ef;color:#435e70}.tool-buttons button[aria-pressed=true]{background:#234f70;color:white;box-shadow:0 3px 9px #234f7024}
.canvas-style{background:#f0f3ee;border:1px solid #e3e9e1;border-radius:13px}.canvas-style select{background:#fff}
.canvas-wrap{border-color:#dfe5df;border-radius:16px;background:#edf0eb;box-shadow:inset 0 1px 4px #1b34400c}
.board-tabs{background:#edf1ec}.board-tabs button[aria-selected=true]{color:#244e6a;box-shadow:0 2px 7px #1c3d5312}
.swatches button{border-color:#d5dfdc}.swatches button.on{outline-color:#234f70}
.fill-swatches button{border-radius:10px}.fill-swatches button.on::after{text-shadow:0 1px 4px #10263f,0 0 3px #10263f}
#status{color:#315d78}.tool-hint{color:#677c88}.settings-group{border-color:#e7eae4}
select{background:#f8f9f5;border-color:#dfe5df;color:#294a60}
.export-result{background:#edf2ee;border:1px solid #dfe8e1}
.mobile-nav{background:rgba(250,250,246,.92);border-color:#dfe5dd;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 -5px 20px #263c4808}
.mobile-nav a:nth-child(2){background:#e9efeb;color:#244e6a}
#loadMore,#libraryRetry{width:100%;margin-top:7px;background:#f4f6f2}
@media(max-width:760px){
 .app-header{background:rgba(247,247,241,.94)}
 main{gap:11px}.panel{border-radius:16px}
 .library-panel{box-shadow:0 6px 18px #213b4d08}
 .canvas-wrap{border-radius:14px}
 .mobile-nav a:nth-child(2){box-shadow:inset 0 0 0 1px #dbe5de}
}
@media(prefers-reduced-motion:reduce){button,.motif{transition:none}}
