:root{--bg:#dfe4d6;--panel:#eef1e8;--ink:#1f2a22;--muted:#4c5a4f;--line:#b9c2ae;--accent:#7a5a14;--accent-ink:#fffaf0;--stage:#c7cfbb;--field:#ffffff;--chip:#e2e7d9;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg:#121a15;--panel:#1a241e;--ink:#e3e8dc;--muted:#a9b5a6;--line:#34443a;--accent:#d0b060;--accent-ink:#1a1408;--stage:#0d130f;--field:#101712;--chip:#243029}}:root[data-theme=dark]{--bg:#121a15;--panel:#1a241e;--ink:#e3e8dc;--muted:#a9b5a6;--line:#34443a;--accent:#d0b060;--accent-ink:#1a1408;--stage:#0d130f;--field:#101712;--chip:#243029}*,*:before,*:after{box-sizing:inherit}html{scroll-padding-top:env(safe-area-inset-top,0px)}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:Alegreya Sans,system-ui,-apple-system,Segoe UI,sans-serif;font-size:16px;line-height:1.45}#root{height:100%}.app{display:grid;grid-template-columns:360px 1fr;height:100%}.side{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.side-scroll{overflow-y:auto;padding:20px 20px 12px;flex:1;min-height:0}.brand{font-family:IM Fell English SC,Georgia,serif;font-size:30px;line-height:1.1;margin:0 0 4px}.sub{color:var(--muted);margin:0 0 18px;font-size:15px}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:var(--chip);padding:4px;border-radius:10px;margin-bottom:18px}.steps button{border:0;background:transparent;color:var(--ink);font:inherit;font-size:14px;padding:8px 2px;white-space:nowrap;border-radius:7px;cursor:pointer;min-height:44px}.steps button[aria-pressed=true]{background:var(--panel);box-shadow:0 1px 0 var(--line);font-weight:700}h2{font-family:IM Fell English,Georgia,serif;font-weight:400;font-size:21px;margin:18px 0 8px}.hint{color:var(--muted);font-size:15px;margin:0 0 12px}.tools{display:grid;grid-template-columns:1fr 1fr;gap:6px}.tool{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--field);color:var(--ink);font:inherit;padding:8px 10px;border-radius:8px;cursor:pointer;min-height:44px;text-align:left}.tool[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.sw{width:18px;height:18px;border-radius:4px;border:1px solid rgba(0,0,0,.35);flex:none}.row{margin:12px 0}.row label{display:flex;justify-content:space-between;font-size:15px;margin-bottom:4px}.row label span:last-child{color:var(--muted)}input[type=range]{width:100%;accent-color:var(--accent);min-height:28px}select,input[type=text],input[type=number]{width:100%;font:inherit;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:8px;padding:8px 10px;min-height:44px}.check{display:flex;align-items:center;gap:10px;font-size:15px;margin:10px 0;min-height:32px;cursor:pointer}.check input{width:20px;height:20px;accent-color:var(--accent)}.btn{font:inherit;border-radius:8px;padding:10px 14px;min-height:44px;cursor:pointer;border:1px solid var(--line);background:var(--field);color:var(--ink)}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:700;width:100%;font-size:17px}.btn:disabled{opacity:.6;cursor:progress}.btnrow{display:flex;gap:8px;flex-wrap:wrap}.btnrow .btn{flex:1}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.foot{border-top:1px solid var(--line);padding:14px 20px;display:flex;flex-direction:column;gap:8px}.stats{font-size:14px;color:var(--muted);margin:0}.dirty{font-size:14px;color:var(--accent);margin:0}.stage{background:var(--stage);display:flex;align-items:center;justify-content:center;padding:16px;min-width:0;min-height:0;overflow:hidden}.map{position:relative;width:min(100%,calc(100vh - 32px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)));aspect-ratio:1/1;container-type:inline-size;overflow:hidden;box-shadow:0 2px 18px #00000059;background:#72864f;touch-action:none}.map canvas,.map svg.guides{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.lbl-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.lbl{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;color:#f6eedb;font-family:IM Fell English SC,Georgia,serif;letter-spacing:.04em;text-shadow:0 0 .12em #231a13,0 0 .12em #231a13,0 0 .22em #231a13,.04em .04em .08em #231a13;-webkit-user-select:none;user-select:none}.lbl.nature{font-family:IM Fell English,Georgia,serif;font-style:italic;color:#e1edf1;text-shadow:0 0 .12em #10263a,0 0 .16em #10263a,0 0 .26em #10263a}.lbl.nature.green{color:#eef3e0;text-shadow:0 0 .12em #1b2a17,0 0 .16em #1b2a17,0 0 .26em #1b2a17}.lbl.drag{pointer-events:auto;cursor:grab}.scale{position:absolute;z-index:2;right:2.5%;bottom:2.5%;background:#1e1812c7;color:#f3ead4;padding:.5cqw .8cqw;border-radius:.3cqw;font-size:.9cqw;display:flex;flex-direction:column;gap:.3cqw;pointer-events:none}.layer{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:0 0}.zoom{position:absolute;top:1.6%;right:1.6%;display:flex;flex-direction:column;gap:6px;z-index:3}.zoom button{width:44px;height:44px;border-radius:8px;border:1px solid rgba(0,0,0,.35);background:#f5f0e2f0;color:#1f2a22;font:inherit;font-size:22px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.zoom button[aria-pressed=true]{background:#7a5a14;color:#fffaf0;border-color:#7a5a14}.zoom button:disabled{opacity:.45;cursor:default}.zoom .pct{font-size:12px;text-align:center;color:#f6eedb;text-shadow:0 0 3px #231a13,0 0 3px #231a13}.scale-bar{height:.5cqw;border:1px solid #f3ead4;background:linear-gradient(90deg,#f3ead4 25%,transparent 25% 50%,#f3ead4 50% 75%,transparent 75%);max-width:40cqw}.scale-nums{display:flex;justify-content:space-between}.busy{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#141a1659;color:#fff;font-family:IM Fell English,Georgia,serif;font-size:2.4cqw;pointer-events:none}.lbl-list{display:flex;flex-direction:column;gap:6px}.lbl-item{display:grid;grid-template-columns:28px 1fr;align-items:center;gap:6px}.lbl-item input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}.lbl-item input[type=text]{min-height:38px;padding:6px 8px}details{border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin:8px 0;background:var(--field)}summary{cursor:pointer;min-height:32px;display:flex;align-items:center}.note{font-size:14px;color:var(--muted)}.project{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-bottom:14px}.project .btn{padding:8px 6px;font-size:15px}.confirm{border:1px solid var(--accent);border-radius:8px;padding:12px;margin-bottom:14px;background:var(--field)}.confirm p{margin:0 0 10px;font-size:15px}.msg{font-size:14px;color:var(--muted);margin:-6px 0 12px}.msg.err{color:#b3261e}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .msg.err{color:#ff8a80}}:root[data-theme=dark] .msg.err{color:#ff8a80}.lm-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.lm-grid .tool{font-size:15px;padding:6px 10px}.card{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--field);margin:12px 0}.card h3{margin:0 0 6px;font-size:16px;font-weight:700}.area-row{border:1px solid var(--line);border-radius:8px;padding:8px;margin:8px 0;background:var(--field);display:flex;flex-direction:column;gap:6px}.area-row[data-active=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.area-head{display:flex;gap:6px;align-items:center}.area-head input[type=text]{flex:1;min-height:38px;padding:6px 8px}.area-row select{min-height:38px;padding:6px 8px}.btn.small{min-height:38px;padding:6px 10px;font-size:14px}.lm-mark{cursor:grab}.est .est-num{font-family:IM Fell English SC,Georgia,serif;font-size:28px;line-height:1.15;margin:2px 0}.est .est-tier{font-size:15px;margin:8px 0}.est .note{margin:4px 0}.est-rows{border-top:1px solid var(--line);margin-top:8px;padding-top:6px;display:flex;flex-direction:column;gap:2px}.est-row{display:flex;justify-content:space-between;gap:8px;font-size:14px}.est-row span:last-child{color:var(--muted);text-align:right;white-space:pre}.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (max-width:820px){html,body{height:auto}.app{grid-template-columns:1fr;height:auto}.stage{order:-1;padding:8px}.map{width:100%}.side{border-right:0;border-top:1px solid var(--line)}.side-scroll{overflow:visible}.scale{font-size:2cqw}}@media (prefers-reduced-motion: reduce){*{transition:none!important}}
