:root{font-family:Inter,Microsoft YaHei,system-ui,sans-serif;color:#223a34;background:#f4f5f1;font-synthesis:none;--green:#244f43;--line:#dfe5df;--muted:#77857c}*{box-sizing:border-box}body{margin:0}button,select,input,textarea{font:inherit}button,select{cursor:pointer}button{border:1px solid var(--line);background:#fff;color:#34483e;border-radius:8px;padding:9px 14px;transition:background .15s}button:hover{background:#edf2ec}button:focus-visible,select:focus-visible,polygon:focus-visible{outline:2px solid #568e72;outline-offset:3px}button.primary{background:var(--green);color:#fff;border-color:var(--green)}button.primary:hover{background:#376758}[hidden]{display:none!important}header{height:80px;display:flex;align-items:center;gap:14px;padding:0 28px;border-bottom:1px solid var(--line);background:#fff}.brand{display:flex;align-items:center;text-decoration:none;color:#244137;gap:13px;font-size:22px;font-weight:650;letter-spacing:2px}.brand-icon{display:grid;place-content:center;width:43px;height:43px;border:1px solid #8fa99a;border-radius:12px;font-size:23px;font-family:serif}.brand-sub{display:block;font-weight:400;letter-spacing:1px;font-size:11px;color:var(--muted);margin-top:4px}.header-meta{margin-left:auto;display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px}#header-version{padding-left:14px;border-left:1px solid var(--line)}.live-dot{width:6px;height:6px;border-radius:100%;background:#78a583}.workspace{display:flex;height:calc(100dvh - 80px);min-height:0}aside{flex:0 0 242px;border-right:1px solid var(--line);background:#fcfcfa;padding:26px 17px 16px;display:flex;flex-direction:column;overflow:auto}.section-heading{text-transform:uppercase;font-size:11px;letter-spacing:2px;color:#7a8a80;display:flex;justify-content:space-between;padding:0 12px 19px}.section-heading span{color:#a1b2a6;font-size:12px}.room{display:flex;width:100%;gap:12px;text-align:left;border:0;background:none;margin:3px 0;padding:13px 12px;border-radius:8px;align-items:center;font-size:13px;position:relative;flex-wrap:wrap}.room>span{font-size:11px;color:#a3afa8;min-width:16px}.room small{flex-basis:100%;padding-left:28px;color:#92a097;font-size:10px;margin-top:-6px}.room.selected{background:#e8efe7;color:#1d503c}.room.selected>span{color:#427858}.room.all{font-size:14px;margin-bottom:10px}.aside-bottom{margin-top:auto;padding:22px 8px 0}.aside-bottom label{font-size:11px;color:var(--muted);display:block;margin-bottom:9px}select{border:1px solid var(--line);background:#fff;color:#3b5145;border-radius:7px;padding:8px 9px;max-width:100%;font-size:12px}#model-version{width:100%}.aside-bottom p,.aside-bottom li{font-size:11px;line-height:1.8;color:#87928b}.aside-bottom ul{padding-left:15px}.aside-bottom summary{font-size:11px;color:#698071;cursor:pointer}.local-tag{padding-top:17px;border-top:1px solid var(--line);letter-spacing:1px}main{min-width:0;display:flex;flex:1;flex-direction:column;position:relative}.mode-bar{display:flex;align-items:center;justify-content:center;gap:8px;height:64px;flex-shrink:0;background:#f9faf7;border-bottom:1px solid var(--line)}.mode-bar button{border:0;background:none;color:#859084;font-size:13px;padding:10px 24px;position:relative}.mode-bar button.active{color:#234e3a;background:#e8eee7;font-weight:600}.view-area{position:relative;flex:1;min-height:200px;overflow:hidden;background:#eaece8}#stage{width:100%;height:100%;position:absolute;inset:0}canvas{display:block;width:100%;height:100%;touch-action:none;outline:none}.view-heading{position:absolute;left:30px;top:27px;pointer-events:none;z-index:2}.eyebrow{font-size:9px;letter-spacing:2px;color:#829186}h1{font-size:24px;font-weight:500;letter-spacing:1px;margin:7px 0 11px}.badge{font-size:11px;background:#ffffffc9;padding:5px 9px;border:1px solid #ffffffb5;border-radius:5px;color:#6a7a6b}.floating-tools{position:absolute;z-index:4;right:22px;top:25px;display:flex;align-items:center;gap:4px;background:#fffffff0;border:1px solid #fff;padding:5px;border-radius:10px;box-shadow:0 6px 25px #293d2910}.floating-tools button{background:none;border:0;font-size:12px;padding:8px 10px}.floating-tools label{font-size:11px}.floating-tools input[type=number]{width:55px;padding:4px;border:1px solid var(--line);border-radius:4px}.floating-tools details summary{font-size:12px;padding:8px;cursor:pointer}.display-options{position:absolute;right:0;top:46px;width:190px;display:grid;gap:13px;padding:18px;border:1px solid var(--line);background:#fff;border-radius:8px}.display-options label{display:flex;align-items:center;gap:9px;font-size:12px}input[type=checkbox]{accent-color:var(--green)}.view-help{position:absolute;bottom:22px;left:50%;transform:translate(-50%);font-size:11px;color:#768579;background:#ffffffc9;padding:8px 15px;border-radius:7px;white-space:nowrap;max-width:98%;overflow:hidden;text-overflow:ellipsis}#minimap{position:absolute;left:24px;bottom:22px;width:120px;background:#ffffffd4;border:1px solid #fff;border-radius:9px;padding:10px;z-index:3;box-shadow:0 4px 20px #32483207}#minimap svg{width:100%;height:112px;overflow:visible}#minimap polygon{fill:#e4e9e0;stroke:#829d86;stroke-width:.08;cursor:pointer}#minimap polygon.selected{fill:#a3c4a4;stroke:#2b6750}#position-dot{fill:#c87843;stroke:#fff;stroke-width:.05;pointer-events:none}#minimap small{font-size:8px;color:#91a08e;display:block;text-align:center}#walk-pad{position:absolute;bottom:64px;right:25px;display:grid;grid-template-columns:repeat(3,55px);gap:3px;z-index:4}#walk-pad button{font-size:11px;padding:10px 0;background:#ffffffdc}footer{height:40px;display:flex;align-items:center;padding:0 21px;background:#fff;border-top:1px solid var(--line);gap:15px;font-size:10px;color:#869287;flex-shrink:0}footer #status{max-width:65%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}footer #updated{margin-left:auto;white-space:nowrap}footer button{font-size:10px;border:0;padding:5px}#diagnostics{position:absolute;bottom:40px;left:15px;z-index:20;max-height:48vh;overflow:auto;background:#12271eea;color:#ddeddd;padding:18px;border-radius:9px;font-size:11px;max-width:90%}#loading{position:absolute;inset:0;z-index:15;background:#edf1e9d9;display:flex;gap:15px;justify-content:center;align-items:center;flex-direction:column;color:#556c55;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);font-size:13px}#loading-detail{max-width:80%;font-size:11px;overflow-wrap:anywhere}.spinner{width:30px;height:30px;border:2px solid #cfdbca;border-top-color:#567b58;border-radius:100%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#error{position:absolute;z-index:30;left:50%;top:50%;transform:translate(-50%,-50%);width:min(500px,90%);padding:25px;background:#fff8f2;border:1px solid #d8b79c;border-radius:12px;box-shadow:0 10px 80px #32190030}#error p{font-size:12px;white-space:pre-wrap;word-break:break-word;max-height:220px;overflow:auto;color:#936945}.empty-panel{position:absolute;inset:45% 20%;padding:20px;background:#fff;border-radius:10px;text-align:center;font-size:13px}#gallery{position:absolute;inset:0;overflow:auto;background:#f6f7f3;padding:120px 32px 32px}.gallery-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.gallery-heading h2{display:none}.gallery-heading p{font-size:12px;color:#8b978b}#missing{padding:10px 15px;background:#edece0;border-radius:7px;font-size:11px;color:#908a69;margin-bottom:22px}#image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:20px}.image-card{padding:0 0 15px;background:#fff;overflow:hidden;text-align:left;border:1px solid #e4e8df;border-radius:9px;position:relative}.image-card img{width:100%;height:155px;object-fit:cover;background:#e6e9e2;display:block}.image-card strong{display:block;padding:13px 14px 5px;font-size:12px;font-weight:500}.image-card small{display:block;padding:0 14px;color:#99a08e;font-size:10px}.image-type{position:absolute;top:12px;left:12px;font-size:10px;background:#ffffffe0;padding:4px 7px;border-radius:4px;color:#5b6c58}.image-card.failed{border-color:#ba967b}.empty-card{padding:40px;font-size:13px;color:#9a9f91}dialog{color:#304334;max-width:min(1200px,94vw);width:94vw;border:1px solid #dfe5d9;border-radius:12px;padding:22px;background:#fafbf8;max-height:92dvh}dialog::backdrop{background:#152d2599;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.dialog-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:16px}.dialog-head strong{font-size:17px;font-weight:550}.dialog-head p{font-size:11px;color:#8c9685;line-height:1.7;max-width:850px}.dialog-head button{border:0;background:none;padding:4px 8px;font-size:18px}#large-images{display:flex;gap:12px;width:100%;height:65vh;overflow:auto;background:#e8ebe3;border-radius:8px;align-items:center;justify-content:center}#large-images img{object-fit:contain;width:100%;height:100%;min-width:0}#large-images.compare img{width:calc(50% - 6px)}#compare-tools{display:flex;align-items:center;gap:18px;margin-bottom:14px;font-size:11px}#notes-dialog{max-width:640px}#notes-dialog textarea{width:100%;margin:10px 0 15px;border:1px solid #cfd9cc;border-radius:7px;padding:12px;resize:vertical;font-size:13px;background:#fff}#notes-dialog label{font-size:12px}.note-info{font-size:11px;line-height:1.8;background:#edf0e7;padding:12px;border-radius:6px;color:#7c8974}.note-actions{display:flex;gap:8px}.note-actions button{font-size:12px}.note{border-top:1px solid var(--line);padding:17px 0}.note small{font-size:10px;color:#9aab94}.note p{font-size:13px;white-space:pre-wrap;color:#52694a}#note-message{font-size:12px;color:#597851}#export-preview{font-size:10px;white-space:pre-wrap;word-break:break-all;max-height:200px;overflow:auto}#toast{position:fixed;z-index:100;bottom:25px;left:50%;transform:translate(-50%);background:#244d3f;color:#fff;padding:12px 24px;border-radius:8px;font-size:12px;box-shadow:0 6px 25px #25432b40}@media(max-width:1100px){header{padding:0 18px}.header-meta{display:none}header .brand{margin-right:auto}aside{flex-basis:205px;padding:20px 10px}.room{font-size:12px}.floating-tools{top:105px;right:16px}.view-heading{left:22px;top:20px}.view-help{left:auto;right:12px;transform:none;max-width:65%;font-size:9px}.mode-bar button{padding:9px 16px}.gallery-heading p{max-width:65%;font-size:11px}#gallery{padding:115px 20px 25px}}@media(max-width:700px){header{height:65px;padding:0 12px;gap:8px}.brand{font-size:18px;gap:8px}.brand-icon{width:34px;height:34px;font-size:18px}.brand-sub{font-size:8px;letter-spacing:0}.primary{font-size:11px}header button{padding:8px;font-size:11px}.workspace{height:calc(100dvh - 65px);display:block;min-height:0}aside{height:63px;display:block;padding:9px 7px;white-space:nowrap;overflow:auto;border-right:0;border-bottom:1px solid var(--line)}.section-heading,.aside-bottom,.room small{display:none}aside nav{display:inline}.room,.room.all{display:inline-flex;width:auto;margin:0 2px;padding:12px 10px;font-size:10px;gap:5px}.room>span{display:none}main{height:calc(100% - 63px)}.mode-bar{height:49px;gap:0}.mode-bar button{font-size:11px;padding:8px 13px}.view-heading{left:15px;top:14px}h1{font-size:19px;margin:5px 0 8px}.badge{font-size:9px}.eyebrow{font-size:8px}.floating-tools{top:98px;right:10px;left:10px;justify-content:flex-end;gap:0;padding:2px}.floating-tools button{padding:7px;font-size:10px}.floating-tools select{font-size:10px}.floating-tools summary{font-size:10px!important}.view-help{bottom:12px;font-size:8px;max-width:60%;padding:6px}#minimap{width:87px;left:12px;bottom:12px;padding:7px}#minimap svg{height:85px}#minimap small{font-size:6px}footer{height:34px;padding:0 8px;font-size:8px;gap:4px}footer #updated{display:none}footer #status{max-width:80%}#gallery{padding:100px 12px 20px}.gallery-heading{gap:10px}.gallery-heading p{font-size:10px}.image-card img{height:115px}#image-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.image-card strong{font-size:10px;padding:10px 8px 6px}.image-card small{font-size:8px;padding:0 8px}.image-type{top:7px;left:7px;font-size:8px}#walk-pad{right:12px;bottom:54px;grid-template-columns:repeat(3,42px)}#walk-pad button{font-size:10px}#notes-dialog{padding:15px}.note-actions{flex-wrap:wrap}.note-actions button{font-size:10px}#compare-tools{display:block}#compare-tools select{margin:8px 0}#large-images{height:55vh}.dialog-head p{font-size:9px}.empty-panel{inset:40% 5%;font-size:11px}}
