.map-editor-shell{--bg:#f3f7fa;--bg-2:#fffdf7;--bg-3:#e9f4f7;--line:#cad7e1;--line-2:#89a5b6;--text:#173f68;--muted:#60778b;--amber:#f6c84b;--amber-2:#b96d19;--danger:#bd4051;--walk:#15927f;--navy:#082653;--green:#118b76;--font:"DM Sans", "Avenir Next", "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", sans-serif;--mono:"SF Mono", "JetBrains Mono", ui-monospace, Menlo, monospace;--serif:"Iowan Old Style", Palatino, "Songti SC", "Source Han Serif SC", serif;background:var(--bg);height:100dvh;min-height:640px;color:var(--text);font-family:var(--font);margin:0;font-size:13px}@scope(.map-editor-shell){*{box-sizing:border-box}:scope{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);margin:0;font-size:13px}button,input,select{font:inherit;color:inherit}button{cursor:pointer}:scope{background:var(--bg);grid-template:"topbar topbar"110px"workspace inspector"minmax(0,1fr)"status inspector"28px/minmax(0,1fr) 300px;height:100dvh;display:grid;overflow:hidden}.drop-overlay{color:#fff;z-index:50;letter-spacing:.08em;pointer-events:none;background:#082653d1;border:2px dashed #ffe16a;border-radius:16px;place-items:center;font-size:16px;display:grid;position:fixed;inset:12px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.language-select{flex:none;display:inline-flex;position:relative}.language-select:after{content:"";pointer-events:none;border-bottom:1.5px solid #405c73;border-right:1.5px solid #405c73;width:6px;height:6px;position:absolute;top:50%;right:11px;transform:translateY(-65%)rotate(45deg)}.language-select select{border:1px solid var(--line);color:#405c73;appearance:none;background:#f6f9fb;border-radius:9px;width:108px;height:36px;padding:0 30px 0 10px;font-size:12px;font-weight:750}.topbar{background:#fffffff5;border-bottom:1px solid #cbd9e8;grid-area:topbar;grid-template-rows:56px 54px;grid-template-columns:max-content minmax(0,1fr);align-items:center;column-gap:14px;min-width:0;padding:0 12px 0 16px;display:grid;overflow-x:auto;box-shadow:0 5px 18px #06245114}.brand{color:#17345d;grid-area:1/1;align-items:center;gap:8px;min-width:0;text-decoration:none;display:flex}.brand-mascot{object-fit:contain;width:auto;height:39px}.brand-wordmark{object-fit:contain;width:88px;height:auto}.brand-divider{background:#cbd9e8;width:1px;height:26px;margin:0 3px}.brand h1{color:#17345d;letter-spacing:-.02em;white-space:nowrap;margin:0;font-size:15px;font-weight:850}.tool-group,.actions{align-items:center;gap:4px;display:flex}.tool-group{border:1px solid var(--line);background:#f7fafc;border-radius:10px;padding:4px}.topbar>.tool-group:not(.path-group){grid-area:2/1;justify-self:start}.path-group{flex-shrink:0;grid-area:2/2;justify-self:start;gap:2px}.tool-btn,.path-btn,.action-btn,.icon-btn{color:var(--muted);background:0 0;border:1px solid #0000;border-radius:7px}.tool-btn{flex-direction:column;align-items:center;gap:2px;min-width:48px;padding:4px 6px;display:flex}.tool-btn span{font-size:10px}.tool-btn.is-active,.path-btn.is-active,.icon-btn:hover,.action-btn:hover,.tool-btn:hover{color:#0b776d;background:#e7f6f3;border-color:#91c9c0}.tool-btn.is-active{color:#0b776d;border-color:#49a997;box-shadow:inset 0 0 0 1px #d3f0ea}.path-btn{border-left:2px solid var(--path,var(--line));white-space:nowrap;padding:5px 7px;font-size:12px}.path-btn.is-active{color:var(--text);background:var(--bg-3)}.top-spacer{display:none}.actions{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent;grid-area:1/2;justify-self:end;gap:8px;min-width:0;padding:2px 0 4px;overflow-x:auto}.file-actions,.utility-actions{flex:none;align-items:center;gap:6px;display:flex}.action-separator{background:#d8e1e7;flex:none;width:1px;height:26px;margin:0 1px}.action-btn{border:1px solid var(--line);white-space:nowrap;background:#fff;border-radius:8px;align-items:center;gap:6px;min-height:36px;padding:7px 12px;font-size:12px;font-weight:750;transition:color .16s,background .16s,border-color .16s,box-shadow .16s,transform .16s,filter .16s;display:inline-flex;box-shadow:0 2px 7px #0624510a}.action-btn svg,.icon-btn svg{width:16px;height:16px}.action-btn.primary{color:#60370d;background:linear-gradient(#ffe477,#f2aa2f);border-color:#b66c18;font-weight:850;box-shadow:0 2px #9a591e,0 6px 14px #a8611820}.action-btn.primary:hover{filter:brightness(1.035);transform:translateY(-1px)}.clear-action{box-shadow:none;background:0 0;border-color:#0000}.clear-action:hover{color:var(--danger);background:#fff3f4;border-color:#e4b5bb}.icon-btn{border:1px solid var(--line);background:#fff;border-radius:8px;place-items:center;width:36px;height:36px;display:grid;box-shadow:0 2px 7px #0624510a}.workspace{background-color:#071d36;background-image:linear-gradient(#ffffff09 1px,#0000 1px),linear-gradient(90deg,#ffffff09 1px,#0000 1px),radial-gradient(circle at 50% 38%,#174e8350,#0000 58%);background-size:32px 32px,32px 32px,auto;grid-area:workspace;min-width:0;min-height:0;position:relative;overflow:hidden}.viewport{touch-action:none;-webkit-user-select:none;user-select:none;position:absolute;inset:0;overflow:hidden}.world{transform-origin:0 0;position:absolute;top:0;left:0}.world img{pointer-events:none;max-width:none;display:block}.overlay{transform-origin:0 0;pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.overlay-screen{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.loupe{z-index:6;pointer-events:none;border:1px solid var(--amber-2);color:var(--text);background:#fffdf7f5;border-radius:9px;position:absolute;box-shadow:0 12px 30px #01122b59}.loupe canvas{image-rendering:pixelated;display:block}.loupe-meta{padding:6px 8px 8px}.loupe-label{letter-spacing:.08em;text-transform:uppercase;color:var(--amber);margin:0 0 2px;font-size:10px}.loupe-meta .mono{margin:0;font-size:12px}.loupe-color{color:var(--muted);align-items:center;gap:6px;margin:4px 0 0;display:flex}.loupe-color i{border:1px solid var(--line-2);flex:none;width:12px;height:12px}.empty{text-align:center;pointer-events:none;color:#f5faff;flex-direction:column;justify-content:center;align-items:center;padding:24px 24px 96px;display:flex;position:absolute;inset:0}.empty-kicker{letter-spacing:.28em;color:var(--amber);margin:0 0 8px;font-size:11px}.empty h2{margin:0 0 10px;font-size:28px;font-weight:850}.empty-copy{color:#bdd2e3;max-width:420px;margin:0;line-height:1.6}.drop-hint{color:#7f9bb2;margin:18px 0 0}.empty-actions{z-index:3;gap:8px;display:flex;position:absolute;top:calc(50% + 92px);left:50%;transform:translate(-50%)}.legend{color:#c2d5e4;pointer-events:none;background:#071d36db;border:1px solid #ffffff2c;border-radius:9px;flex-wrap:wrap;gap:10px 14px;padding:8px 10px;display:flex;position:absolute;bottom:12px;left:12px;box-shadow:0 8px 24px #0004}.legend i{vertical-align:middle;background:var(--walk);width:10px;height:2px;margin-right:6px;display:inline-block}.inspector{border-left:1px solid var(--line);background:#fffdf7;flex-direction:column;grid-area:inspector;min-width:0;min-height:0;display:flex;overflow:hidden;box-shadow:-6px 0 18px #0624510d}.inspector-body{flex:1;min-height:0;overflow:auto}.ins-section{border-bottom:1px solid var(--line);padding:14px 14px 10px}.ins-section.grow{flex:1;min-height:0;overflow:auto}.ins-section.compact{border-top:1px solid var(--line);background:#f5f9fb;flex:none;padding:10px 14px}.ins-section h2{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 10px;font-size:11px;font-weight:600}.ins-section h2 em{color:var(--text);margin-left:6px;font-style:normal}.field{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.field span{color:var(--muted);font-size:11px}.field input,.field select{border:1px solid var(--line);background:#fff;border-radius:7px;outline:none;width:100%;padding:6px 8px}.field input[type=number]{appearance:textfield}.field input[type=number]::-webkit-inner-spin-button{appearance:none;margin:0}.field input[type=number]::-webkit-outer-spin-button{appearance:none;margin:0}.field input:focus,.field select:focus{border-color:var(--green);box-shadow:0 0 0 3px #15927f16}.field-row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.field-row.four{grid-template-columns:1fr 1fr 1fr 1fr}.inline-actions{align-items:center;gap:10px;margin:4px 0 10px;display:flex}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.field input[type=range]{accent-color:var(--amber);padding:0}.check{color:var(--muted);align-items:center;gap:8px;margin:6px 0;display:flex}.meta-line{color:var(--muted);justify-content:space-between;gap:8px;margin-bottom:8px;display:flex}.stack .hint,.hint,.muted{color:var(--muted);margin:6px 0 0;line-height:1.45}.hint.ok{color:#16805e}.hint.warn{color:#a46616}.hint.bad{color:var(--danger)}.frame-banner{z-index:4;border:1px solid var(--line);color:#fff;pointer-events:none;white-space:nowrap;background:#082653e6;border-color:#ffe16a;border-radius:8px;padding:6px 12px;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #03153655}.frame-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;margin:8px 0 4px;padding:8px 0 0;display:flex}.frame-row .inline-actions{flex:none;margin:0}.frame-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 2px;font-size:11px}.frame-row .mono{color:var(--text);margin:0}.text-btn{color:var(--muted);background:0 0;border:0;padding:0}.text-btn:hover{color:var(--text)}.text-btn.danger:hover{color:var(--danger)}.list{margin:0 0 16px;padding:0;list-style:none}.list button{text-align:left;background:0 0;border:1px solid #0000;border-radius:7px;align-items:center;gap:8px;width:100%;padding:5px 6px;display:flex}.list button.is-active{background:#e7f6f3;border-color:#63b8a8}.list .dim{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto}.swatch{flex:none;width:8px;height:8px}.status{border-top:1px solid var(--line);min-width:0;color:var(--muted);font-family:var(--mono);white-space:nowrap;background:#f8fbfd;grid-area:status;justify-content:space-between;align-items:center;gap:12px;padding:0 14px;font-size:11px;display:flex;overflow:hidden}.toast{color:#60370d;z-index:40;background:linear-gradient(#ffe477,#f2aa2f);border:1px solid #b66c18;border-radius:9px;padding:8px 14px;position:fixed;bottom:48px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #061d4f38}.help-overlay{z-index:30;background:#0315369e;place-items:center;display:grid;position:fixed;inset:0}.help{border:1px solid var(--line);background:#fffdf7;border-radius:16px;width:min(420px,100% - 32px);padding:20px;box-shadow:0 24px 70px #03153678}.help h2{color:#173f68;margin:0 0 14px}.help dl{margin:0 0 12px}.help dl>div{border-bottom:1px solid var(--line);grid-template-columns:140px 1fr;gap:8px;padding:6px 0;display:grid}.help dt{color:var(--text)}.help dd{color:var(--muted);margin:0}kbd{border:1px solid var(--line-2);font-family:var(--mono);background:#f3f7fa;border-radius:5px;margin:0 2px;padding:1px 6px;font-size:11px;display:inline-block}@media (max-width:960px){:scope{grid-template:"topbar"184px"workspace"minmax(0,1fr)"status"28px/minmax(0,1fr)}.topbar{grid-template-rows:48px 44px 52px 40px;grid-template-columns:minmax(0,1fr);align-items:stretch;gap:0;padding:0;display:grid;overflow:hidden}.brand{border-bottom:1px solid var(--line);grid-area:1/1;width:100%;min-width:0;padding:0 14px}.brand>div{min-width:0}.brand h1{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.topbar>.actions,.topbar>.tool-group{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent;flex-wrap:nowrap;justify-content:flex-start;width:100%;min-width:0;overflow:auto hidden}.topbar>.actions::-webkit-scrollbar{height:3px}.topbar>.tool-group::-webkit-scrollbar{height:3px}.topbar>.actions::-webkit-scrollbar-thumb{background:var(--line-2)}.topbar>.tool-group::-webkit-scrollbar-thumb{background:var(--line-2)}.actions{border-bottom:1px solid var(--line);background:var(--bg-2);grid-area:2/1;padding:5px 8px}.topbar>.tool-group:not(.path-group){border:0;border-bottom:1px solid var(--line);grid-area:3/1;padding:3px 8px}.path-group{border:0;grid-area:4/1;padding:4px 8px}.top-spacer{display:none}.language-select,.action-btn,.icon-btn,.tool-btn,.path-btn{flex:none}.inspector{display:none}}}
