:root{--ink:#203d35;--muted:#718077;--paper:#f5f5ed;--line:#dce2d7;--green:#1e5144;--warm:#d6ab72;--danger:#a44e41;font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper);font-size:13px;color-scheme:light}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{border:1px solid var(--line);border-radius:7px;background:#fffef8;padding:9px 12px;cursor:pointer;line-height:1.2}button:hover{background:#e9eee3}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,input:focus,select:focus,textarea:focus{outline:2px solid #b89965;outline-offset:2px}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:6px;background:#fffef9;padding:10px;min-width:0}input[type=checkbox]{width:16px;height:16px;flex:none;accent-color:var(--green)}input[type=range]{padding:0;accent-color:var(--green);height:22px}label{display:block;font-size:12px;font-weight:600;margin:14px 0 6px}a{color:var(--green)}.primary{background:var(--green);color:#fff9e8;border-color:var(--green);font-weight:600}.primary:hover{background:#123e33}.secondary{width:100%;background:#e5ece0;border-color:#cbd8c3}.quiet{background:transparent;border-color:transparent}.eyebrow{font-size:10px;letter-spacing:.2em;font-weight:700;color:#638075}.subtle{font-size:11px;color:var(--muted);line-height:1.7}.checkbox{display:flex;gap:9px;align-items:flex-start;font-weight:400;line-height:1.5}.source-note{padding:12px;background:#eeeedd;border-left:3px solid #c6ac75;font-size:11px;line-height:1.7;color:#6f725b}[hidden]{display:none!important}.topbar{height:72px;display:flex;align-items:center;gap:24px;padding:0 24px;border-bottom:1px solid var(--line);background:#fffef7}.brand{display:flex;gap:12px;align-items:center;color:var(--ink);font-size:17px;font-weight:650;text-decoration:none;white-space:nowrap}.brand small{display:block;font-size:9px;letter-spacing:.14em;font-weight:500;margin-top:4px;color:var(--muted)}.brand-icon{font-size:29px;color:var(--green)}.header-status{display:flex;align-items:center;gap:15px;color:var(--muted);font-size:11px;margin-left:auto}.divider{height:16px;width:1px;background:var(--line)}.save-status:before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:#72946c;margin-right:7px}.save-status.dirty:before{background:#d4a35c}.save-status.error{color:var(--danger)}.header-actions{display:flex;gap:2px}.header-actions button{font-size:11px}.mapbar{height:54px;display:flex;align-items:center;gap:16px;justify-content:space-between;padding:0 20px;border-bottom:1px solid var(--line);background:#f0f2e8}.source-select{display:flex;align-items:center;gap:10px;min-width:0}.source-select label{margin:0;color:var(--muted);white-space:nowrap}.source-select select{width:210px;padding:7px}.source-select>span{font-size:10px;color:var(--muted);white-space:nowrap}.map-actions{display:flex;gap:5px;white-space:nowrap}.map-actions button{padding:6px 10px;font-size:11px}.map-actions [aria-pressed=true]{background:#dde7d8;border-color:#bbcbb2}.workspace-grid{height:calc(100dvh - 126px);display:grid;grid-template-rows:minmax(0,1fr);grid-template-columns:70px minmax(0,1fr) 344px;overflow:hidden}.tool-rail{display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:12px 8px;background:#f9f9f1;border-right:1px solid var(--line);overflow:auto}.tool{display:flex;flex-direction:column;align-items:center;gap:5px;font-size:9px;border-color:transparent;background:transparent;padding:9px 3px;min-height:52px}.tool svg{width:21px;height:21px;stroke:currentColor;stroke-width:1.4;fill:none;stroke-linecap:round;stroke-linejoin:round}.tool.active{background:var(--green);color:#fffbe9;border-color:var(--green)}.rail-divider{height:1px;margin:6px;background:var(--line);flex:none}.map-panel{min-width:0;min-height:0;display:flex;flex-direction:column;background:#233e33}.canvas-wrap{position:relative;flex:1;min-height:0;overflow:hidden;background:#263c33}#map{width:100%;height:100%;display:block;touch-action:none;outline:none;cursor:crosshair;user-select:none;-webkit-user-select:none}#map[data-tool=select]{cursor:default}#map[data-tool=pan]{cursor:grab}#map.dragging{cursor:grabbing}.compass{position:absolute;top:20px;right:22px;text-align:center;color:#fff9e0;pointer-events:none;font-size:10px}.compass span{display:block;font-size:27px;line-height:1.1}.compass small{display:block;font-size:9px;margin-top:5px;opacity:.7}.map-caption{position:absolute;bottom:18px;left:18px;padding:8px 10px;background:#20382ddb;border:1px solid #e0e6d433;border-radius:5px;color:#e1e5cf;font-size:10px;max-width:60%;pointer-events:none}.coordinate-readout{position:absolute;top:15px;left:16px;color:#fff9e0;font:10px ui-monospace,monospace;background:#20382dc9;padding:7px 9px;border-radius:4px;pointer-events:none}.map-scale{position:absolute;bottom:22px;right:20px;color:#f7f1d5;font-size:10px;border-bottom:2px solid #f7f1d5;padding-bottom:4px;text-align:center;pointer-events:none;min-width:40px}.context-bar{min-height:35px;display:flex;justify-content:space-between;gap:12px;align-items:center;padding:8px 12px;color:#63746a;background:#f6f7ed;font-size:10px;border-top:1px solid var(--line)}.context-bar>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.context-bar>span:last-child{white-space:nowrap}.sidebar{background:#fbfbf5;border-left:1px solid var(--line);overflow:auto;min-width:0}.sidebar-tabs{position:sticky;top:0;background:#fbfbf5;display:flex;gap:8px;border-bottom:1px solid var(--line);padding:7px 13px;z-index:2}.sidebar-tabs button{border:0;border-radius:0;background:transparent;color:var(--muted);font-size:12px;padding:12px 8px}.sidebar-tabs .active{border-bottom:2px solid var(--green);color:var(--green);font-weight:650}.count{font-size:9px;padding:2px 5px;border-radius:8px;background:#e4e9dc;margin-left:5px}.sidebar-search{display:flex;gap:7px;margin:15px 16px 12px}.sidebar-search input{font-size:11px;padding:9px}.sidebar-search button{font-size:11px;white-space:nowrap}.layer-filters{display:flex;gap:5px;flex-wrap:wrap;padding:0 16px}.layer-filters button{font-size:10px;padding:5px 8px;border-radius:4px}.layer-filters button:before{content:'';display:inline-block;width:6px;height:6px;border-radius:2px;background:var(--kind-color);margin-right:5px}.layer-filters [aria-pressed=false]{opacity:.45;background:transparent}.list-heading{margin:17px 16px 8px;display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:10px}.text-button{padding:0;border:0;background:transparent;color:var(--green);font-size:10px}.object-list{max-height:220px;overflow:auto;padding:0 9px 10px;border-bottom:1px solid var(--line)}.object-row{display:flex;gap:10px;width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:6px;padding:9px 8px;align-items:center;margin:2px 0}.object-row.active{background:#e7eee0;border-color:#c6d5bc}.object-row .dot{width:8px;height:8px;background:var(--kind-color);border-radius:2px;flex:none}.object-row strong{display:block;font-size:11px;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:228px}.object-row small{font-size:9px;color:var(--muted)}.object-row .state{margin-left:auto;font-size:9px;color:#859080;white-space:nowrap}.object-editor{padding:17px 18px 25px}.editor-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:16px}.editor-heading h2{margin:5px 0;font-size:17px;font-weight:600;max-width:210px;overflow:hidden;text-overflow:ellipsis}.object-id{font:9px ui-monospace,monospace;color:#82907d;margin:0;max-width:225px;overflow-wrap:anywhere}.status-badge{border:1px solid #d7cba9;background:#f2ecda;color:#8e7648;padding:4px 6px;font-size:9px;border-radius:4px;white-space:nowrap}.status-badge.confirmed{color:#39705a;border-color:#bbcfbc;background:#e6eee0}.field-row{display:flex;gap:9px}.field-row>div{flex:1;min-width:0}.field-row>button{flex:1;font-size:11px}.evidence-details{margin:17px 0;padding:11px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:11px;color:var(--muted)}.evidence-details summary{cursor:pointer;color:var(--ink)}.evidence-details code{font-size:9px;overflow-wrap:anywhere}.evidence-details p{line-height:1.65}.section-title{display:flex;justify-content:space-between;align-items:center;font-size:12px;margin:20px 0 10px}.section-title span{font-size:10px;color:var(--muted)}label output{float:right;color:var(--muted);font-weight:400}.confirm-box{margin-top:20px;border-top:1px solid var(--line);padding-top:12px}.confirm-box p{font-size:10px;color:var(--muted);line-height:1.6}.confirm-box button{width:100%;padding:12px}.confirm-box small{font-size:9px;display:block;line-height:1.7;color:var(--muted);margin-top:8px}.danger-text{display:block;border:0;background:transparent;color:#9c6557;padding:8px 0;margin-top:16px;font-size:10px}.settings-section{padding:18px}.settings-section h2{font-size:16px;margin:0 0 10px}.settings-section>p{font-size:11px;line-height:1.8;color:var(--muted)}hr{border:0;border-top:1px solid var(--line);margin:20px 0}.fit-job{border:1px solid var(--line);border-radius:7px;padding:12px;margin-top:12px}.fit-job strong{font-size:12px}.fit-job p{font-size:11px;color:var(--muted);line-height:1.6}.fit-job small{font-size:9px;color:var(--muted)}.fit-job button{margin-top:8px;font-size:11px}.fit-preview{position:absolute;bottom:75px;left:20px;right:20px;background:#fffdf0f5;border:1px solid #cccfaf;box-shadow:0 6px 30px #142f3440;display:flex;gap:12px;align-items:center;border-radius:9px;padding:16px;z-index:3}.fit-preview>div{flex:1}.fit-preview p{font-size:11px;margin:5px 0;color:#66745e}.fit-preview small{font-size:10px;color:#78816c}.fit-preview button{font-size:11px;white-space:nowrap}.draw-prompt{position:absolute;top:16px;left:50%;transform:translateX(-50%);display:flex;gap:9px;align-items:center;padding:8px 11px;border-radius:7px;background:#fcf9eaf2;box-shadow:0 3px 18px #132c3030;z-index:3;white-space:nowrap;font-size:11px}.draw-prompt button{padding:6px 9px;font-size:10px}.snap-indicator{position:absolute;pointer-events:none;width:16px;height:16px;border:2px solid #ffda84;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 2px #19362c99}.map-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#ecebd3;background:#263e33ed;font-size:13px;z-index:1}.mobile-panel-toggle{display:none}#toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,15px);opacity:0;pointer-events:none;padding:12px 18px;border-radius:8px;background:#183c35;color:#fff5d9;box-shadow:0 4px 20px #17382b40;font-size:12px;transition:.18s;max-width:min(600px,90vw);z-index:30}#toast.show{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid var(--line);border-radius:12px;max-width:570px;padding:32px;color:var(--ink);background:#fffef5;line-height:1.8}dialog::backdrop{background:#102b2777}dialog h2{font-size:22px;font-weight:600}dialog ol{padding-left:23px;font-size:13px}dialog li{padding-bottom:13px}dialog>p{font-size:12px;color:var(--muted)}.dialog-close{position:absolute;top:10px;right:10px;border:0;background:transparent;font-size:20px}.login-screen{min-height:100dvh;display:grid;grid-template-columns:1fr 1fr;background:#f2f2e7}.login-card{width:min(390px,calc(100% - 48px));align-self:center;justify-self:center;padding:40px 0}.back-link{font-size:11px;text-decoration:none;color:#84907d}.brand-mark{font-size:43px;margin:55px 0 22px;color:#2a5a45}.login-card h1{font-family:Georgia,"Songti SC",serif;font-size:30px;line-height:1.45;font-weight:500;letter-spacing:.02em;margin:12px 0}.intro{font-size:12px;line-height:1.9;color:#7d8675;margin-bottom:28px}.login-card input{padding:12px}.login-card button{width:100%;margin-top:22px;padding:14px;text-align:left;display:flex;justify-content:space-between}.login-card>small{display:block;font-size:10px;line-height:1.8;color:#8c9582;margin-top:35px}.login-card #login-error{font-size:12px;color:var(--danger);min-height:18px}.login-art{position:relative;overflow:hidden;background:#1e4135}.art-grid{position:absolute;inset:0;background-image:linear-gradient(#a5b79115 1px,transparent 1px),linear-gradient(90deg,#a5b79115 1px,transparent 1px);background-size:42px 42px;transform:rotate(-12deg) scale(1.3)}.plot{position:absolute;border:1px solid #e0cd9560;background:#d2d3a51a;transform:rotate(-12deg)}.p1{left:14%;top:24%;width:32%;height:23%;clip-path:polygon(0 0,100% 0,100% 75%,30% 100%,0 85%)}.p2{left:54%;top:17%;width:25%;height:49%;background:#d2a77120}.p3{left:22%;top:56%;width:26%;height:25%;border-radius:45%;background:#77a17b30}.p4{left:57%;top:72%;width:26%;height:14%}.art-caption{position:absolute;left:9%;bottom:6%;font:11px/1.8 ui-monospace,monospace;color:#e2dbb380}
@media(max-width:1100px){.topbar{padding:0 16px;gap:12px}.header-status{gap:9px}.workspace-grid{grid-template-columns:60px minmax(0,1fr) 300px}.source-select>span{display:none}.source-select select{width:165px}.mapbar{padding:0 12px}.map-actions{gap:3px}.map-actions button{padding:6px 7px}.brand{font-size:15px}.header-actions button{padding:7px}.sidebar-tabs{gap:2px;padding:6px 10px}.sidebar-tabs button{padding:10px 7px}.object-row strong{max-width:180px}}
@media(max-width:900px){.topbar{height:62px;padding:0 12px}.brand{font-size:14px;gap:7px}.brand-icon{font-size:24px}.brand small{font-size:8px}.header-status{font-size:9px}.header-status .divider,#confirmed-count{display:none}.header-actions button{font-size:10px;padding:7px 5px}#help-button{display:none}.mapbar{height:82px;flex-direction:column;align-items:stretch;gap:5px;padding:7px 10px}.source-select{justify-content:space-between}.source-select select{flex:1;max-width:none;width:auto;padding:6px 8px}.source-select>span{display:block;font-size:9px}.map-actions{justify-content:space-between}.map-actions button{padding:6px 10px;font-size:10px}.workspace-grid{height:calc(100dvh - 144px);grid-template-columns:52px minmax(0,1fr);position:relative}.tool-rail{padding:8px 4px;gap:1px}.tool{font-size:8px;min-height:46px;padding:6px 2px}.tool svg{width:19px;height:19px}.rail-divider{margin:4px}.sidebar{position:absolute;right:0;bottom:0;width:calc(100% - 52px);height:56%;z-index:6;border-top:1px solid #bccab6;border-radius:13px 0 0 0;box-shadow:0 -5px 25px #0c302a35;transform:translateY(110%);transition:transform .2s}.sidebar.open{transform:translateY(0)}.sidebar-tabs{padding:3px 10px}.sidebar-tabs button{padding:10px;font-size:11px}.mobile-panel-toggle{display:block;position:absolute;bottom:51px;right:12px;border:1px solid #e0e2c866;background:#f8f7e7ed;padding:9px 12px;font-size:10px;border-radius:18px;z-index:8}.map-caption{font-size:9px;left:10px;bottom:16px;max-width:65%;padding:6px 8px}.map-scale{bottom:18px;right:12px;font-size:9px}.coordinate-readout{top:10px;left:10px;font-size:9px}.compass{top:12px;right:13px}.compass span{font-size:22px}.compass small{font-size:8px}.context-bar{font-size:9px;padding:7px}.context-bar #selection-metrics{display:none}.fit-preview{bottom:95px;left:10px;right:10px;flex-wrap:wrap;padding:12px;gap:8px}.fit-preview>div{flex-basis:100%}.fit-preview button{flex:1}.draw-prompt{top:48px;gap:5px;padding:7px;font-size:10px}.draw-prompt button{font-size:10px;padding:5px}.login-screen{grid-template-columns:1fr}.login-art{display:none}.login-card{padding:25px 0}.brand-mark{margin-top:35px}.login-card h1{font-size:27px}.object-list{max-height:170px}dialog{margin:20px;padding:24px}dialog h2{font-size:19px}}
@media(pointer:coarse){button{min-height:34px}.tool{min-height:49px}input,select,textarea{font-size:16px}.object-editor label{font-size:11px}.source-select select{font-size:12px}.sidebar-search input{font-size:13px}.sidebar-tabs button{min-height:40px}}

.dsm-panel{position:absolute;top:84px;right:16px;width:230px;padding:13px;background:#fffef5f2;border:1px solid #dce2d7;border-radius:9px;z-index:3;box-shadow:0 3px 20px #142f2930;font-size:11px}.dsm-panel>small{display:block;color:#68786d;line-height:1.5;margin-top:4px}.dsm-panel p{font-size:10px;line-height:1.5;color:#6e786a;margin-bottom:0}.dsm-ramp{height:12px;margin-top:12px;border-radius:3px;background:linear-gradient(90deg,rgb(44,65,135),rgb(40,146,184),rgb(71,186,121),rgb(238,201,71),rgb(221,87,65))}.dsm-range-labels{display:flex;justify-content:space-between;font-size:10px;margin:4px 0 9px}.dsm-panel .field-row{gap:8px}.dsm-panel input[type=number]{padding:6px}.dsm-panel button{width:100%;font-size:11px;margin-top:8px}.dsm-panel label{margin-top:10px;font-size:10px}@media(max-width:900px){.dsm-panel{top:78px;right:10px;width:205px;padding:10px}.map-actions button{padding:6px 8px}.dsm-panel input[type=number]{font-size:14px}}
