.workspace-page{background:#f3f6f4}
.workspace-header{position:relative}
.workspace-nav{display:flex;align-items:center;gap:clamp(16px,3vw,42px);margin-left:auto}
.workspace-nav a{font-size:.88rem;font-weight:700;color:#526a6c;white-space:nowrap}
.workspace-nav a[aria-current=page]{color:#14545d;border-bottom:2px solid #2c7980;padding:10px 0}
.workspace-header .locale-button{margin-left:25px}
.workspace-intro{background:#0b2630;color:#eff6f1;display:grid;grid-template-columns:1.15fr .7fr;align-items:end;gap:6vw;padding:70px clamp(22px,6.6vw,110px) 68px}
.workspace-intro .section-kicker{color:#a7d8c9}
.workspace-intro h1{font-size:clamp(3rem,5vw,5.8rem);margin:0;line-height:1.09}
.workspace-intro h1 em{color:#b7e1d1}
.workspace-intro-aside{padding-bottom:9px}
.workspace-intro-aside p{font-size:1rem;line-height:1.75;color:#b6cbc7;margin-bottom:22px}
.intro-tag{font-size:.68rem;letter-spacing:.13em;font-weight:800;color:#a8d7c9;border-top:1px solid #3c5c61;padding-top:16px;display:block}
.viewer-layout,.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:0;margin:38px clamp(22px,6.6vw,110px) 0;border:1px solid #bdcfca;background:#fff}
.viewer-main,.map-main{min-width:0}
.viewer-topline,.map-topline{height:57px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;border-bottom:1px solid #c5d5d1;font-size:.72rem;font-weight:800;letter-spacing:.12em;color:#476c70}
.viewer-stage{height:min(55vw,590px);min-height:400px;background:#172c34;position:relative;overflow:hidden}
#viewerCanvas{display:block;width:100%;height:100%;object-fit:contain;cursor:ew-resize;touch-action:pan-y}
#viewerCanvas[hidden]{display:none}
.viewer-empty{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:7px;text-align:center;padding:30px;color:#e5f1ec}
.viewer-empty[hidden]{display:none}
.viewer-empty span{color:#9fbdb8}
.stage-corner{position:absolute;width:25px;height:25px;border-color:#a9dac8;pointer-events:none}
.corner-a{left:23px;top:23px;border-left:1px solid;border-top:1px solid}
.corner-b{right:23px;bottom:63px;border-right:1px solid;border-bottom:1px solid}
.viewer-overlay{position:absolute;bottom:0;left:0;right:0;padding:18px 22px;background:#0a2029d9;display:flex;justify-content:space-between;gap:15px;color:#b7dcd1;font-size:.7rem;font-weight:800;letter-spacing:.12em;pointer-events:none}
.transport{height:75px;display:flex;align-items:center;gap:13px;padding:0 20px;border-bottom:1px solid #d5e0dc}
.transport button{width:36px;height:36px;border:1px solid #bdcfca;background:#f3f7f4;color:#16454d;font-size:1rem}
.transport button:hover{background:#e2eee8}
.transport button:disabled{opacity:.4;cursor:default}
.transport input{flex:1;min-width:70px}
input[type=range]{accent-color:#22757a}
#angleReadout{min-width:55px;text-align:right;color:#294d53;font-size:.82rem;font-weight:800}
.viewer-caption{padding:18px 21px 23px;margin:0;color:#61797a;font-size:.83rem}
.viewer-sidebar,.map-sidebar{border-left:1px solid #c5d5d1;background:#fbfcfa}
.side-section{padding:26px 25px;border-bottom:1px solid #d4e0dc}
.side-section:last-child{border:0}
.side-index{font-size:.68rem;font-weight:800;letter-spacing:.13em;color:#4a8587}
.side-section h2{font-size:1.35rem;letter-spacing:-.035em;margin:13px 0}
.side-section p{font-size:.84rem;line-height:1.7;color:#607676;margin:0 0 17px}
.side-section label:not(.upload-control){display:block;font-size:.81rem;font-weight:700;margin:17px 0 8px;color:#2a5055}
.upload-control,.map-action{display:flex;justify-content:space-between;align-items:center;width:100%;background:#183e45;color:#fff;border:0;padding:13px 16px;font-size:.84rem;font-weight:800;cursor:pointer}
.upload-control:hover,.map-action:hover{background:#286269}
#frameFiles{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.text-action{border:0;background:none;padding:13px 0;color:#206b72;text-decoration:underline;text-underline-offset:4px;font-size:.81rem;font-weight:700;text-align:left}
.side-section .side-small{font-size:.75rem;margin:7px 0 0}
.zoom-line{display:flex;align-items:center;gap:14px}
.zoom-line input{flex:1;min-width:80px}
.zoom-line strong{min-width:42px;text-align:right;color:#2d6066}
.side-state dl,.map-summary dl{margin:17px 0 0}
.side-state dl div,.map-summary dl div{display:flex;justify-content:space-between;gap:18px;padding:12px 0;border-top:1px solid #d7e2de;font-size:.78rem}
.side-state dt,.map-summary dt{color:#658080}
.side-state dd,.map-summary dd{margin:0;text-align:right;font-weight:700;color:#21464b}
.workspace-notes{display:grid;grid-template-columns:1fr 1fr;gap:25px;margin:54px clamp(22px,6.6vw,110px) 80px}
.workspace-notes>div{border-top:1px solid #9dbbb5;padding-top:19px}
.note-index{color:#4b8586;font-size:.7rem;letter-spacing:.13em;font-weight:800}
.workspace-notes h3{font-size:1.18rem;letter-spacing:-.03em;margin:11px 0}
.workspace-notes p{color:#607575;max-width:520px;font-size:.86rem;line-height:1.7}
.map-stage{height:min(55vw,590px);min-height:430px;position:relative;background:#e8efeb}
#originMap{width:100%;height:100%;z-index:1}
.map-fallback{position:absolute;inset:0;z-index:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:40px;background:#e9efed;color:#3f6668;font-size:.92rem}
.map-fallback[hidden]{display:none}
.map-fallback.visible{z-index:2}
.map-status{padding:16px 20px;border-top:1px solid #c7d8d4;color:#526f70;font-size:.82rem}
.map-sidebar input,.map-sidebar select,.map-sidebar textarea{width:100%;padding:11px 12px;border:1px solid #aac3bd;background:#fff;color:#1b3b41;font-size:.85rem;border-radius:0}
.map-sidebar textarea{resize:vertical;min-height:76px}
.map-sidebar .field-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.map-sidebar .field-grid label{margin-top:0}
.map-sidebar .field-grid input{min-width:0}
.map-sidebar .map-action{margin-top:18px}
.map-sidebar .secondary-action{background:#e6f0eb;color:#215d61;border:1px solid #b7d1c8}
.map-sidebar .secondary-action:hover{background:#d4e9df}
.map-summary{margin:22px clamp(22px,6.6vw,110px) 65px;padding:28px 30px;background:#fff;border:1px solid #c5d8d1}
.map-summary h2{font-size:1.55rem;margin:0 0 7px}
.map-summary>p{font-size:.84rem;color:#5e7777}
.map-summary dl{display:grid;grid-template-columns:1fr 1fr;gap:0 34px}
.map-summary dl div{font-size:.85rem}
.map-summary .context-notice{padding:16px 18px;background:#eaf2ee;border-left:3px solid #5c9691;margin:24px 0 0;color:#385f61;font-size:.85rem}
.map-pin-icon{width:20px;height:20px;background:#226e73;border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 2px #21565a,0 5px 12px #0004}
@media(max-width:1050px){.viewer-layout,.map-layout{grid-template-columns:minmax(0,1fr) 300px}}
@media(max-width:800px){.workspace-intro{grid-template-columns:1fr;padding:60px 28px;gap:25px}.workspace-intro-aside{max-width:620px}.viewer-layout,.map-layout{display:block;margin:28px 28px 0}.viewer-sidebar,.map-sidebar{border-left:0;border-top:1px solid #c5d5d1;display:grid;grid-template-columns:1fr 1fr}.viewer-sidebar .side-section:last-child,.map-sidebar .side-section:last-child{grid-column:1/-1}.side-section:nth-child(odd){border-right:1px solid #d4e0dc}.side-section:last-child{border-right:0}.workspace-notes{margin:48px 28px 70px}.map-summary{margin:22px 28px 60px}}
@media(max-width:560px){.workspace-header .brand{font-size:.62rem}.workspace-nav{gap:10px}.workspace-nav a{font-size:.72rem}.workspace-nav a:first-child{display:none}.workspace-header .locale-button{margin-left:0}.workspace-intro{padding:52px 20px}.workspace-intro h1{font-size:clamp(2.7rem,11vw,4rem)}.viewer-layout,.map-layout{margin:22px 16px 0}.viewer-stage{height:400px;min-height:400px}.map-stage{height:440px;min-height:440px}.viewer-sidebar,.map-sidebar{display:block}.side-section:nth-child(odd){border-right:0}.transport{gap:6px;padding:0 10px}.transport button{width:32px;height:32px}.viewer-overlay{font-size:.59rem;padding:14px}.workspace-notes{display:block;margin:40px 20px 65px}.workspace-notes>div+div{margin-top:28px}.map-summary{margin:20px 16px 55px;padding:23px 18px}.map-summary dl{display:block}}
@media(max-width:560px){.workspace-header{height:auto;min-height:68px;flex-wrap:wrap;gap:5px;padding-top:13px;padding-bottom:5px}.workspace-header .locale-button{margin-left:auto}.workspace-nav{order:3;width:100%;justify-content:space-between;margin:0}.workspace-nav a:first-child{display:inline-block}.workspace-nav a{font-size:.71rem}}

/* Locale-safe workspace layout */
.workspace-intro>* , .workspace-intro-aside,.viewer-sidebar,.map-sidebar,.side-section,.workspace-notes>div,.map-summary dl>div,.side-state dl>div,.map-summary dt,.map-summary dd,.side-state dt,.side-state dd{min-width:0}
.workspace-intro h1,.intro-tag,.viewer-topline span,.map-topline span,.viewer-overlay span,.upload-control span,.map-action,.map-summary dd,.side-state dd{overflow-wrap:break-word}
.viewer-topline,.map-topline{height:auto;min-height:57px;padding:12px 20px;gap:12px;flex-wrap:wrap;line-height:1.4}
.viewer-topline span:last-child,.map-topline span:last-child{flex-shrink:0}
.viewer-overlay{flex-wrap:wrap;line-height:1.35}
.upload-control,.map-action{gap:10px;text-align:left}
.workspace-nav{min-width:0}
@media(max-width:900px){.workspace-header{height:auto;min-height:68px;flex-wrap:wrap;gap:6px;padding-top:11px;padding-bottom:7px}.workspace-header .locale-button{margin-left:auto}.workspace-nav{order:3;width:100%;margin:0;justify-content:space-between;flex-wrap:wrap}.workspace-nav a:first-child{display:inline-block}}
@media(max-width:800px){.viewer-sidebar,.map-sidebar{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace-notes{grid-template-columns:repeat(2,minmax(0,1fr))}.map-summary dl{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.viewer-sidebar,.map-sidebar,.workspace-notes,.map-summary dl{display:block}.workspace-intro h1{font-size:clamp(2.15rem,9vw,3.25rem)}.workspace-nav{gap:8px 13px}.workspace-nav a{white-space:normal}.side-state dl div,.map-summary dl div{gap:10px}.side-state dt,.side-state dd,.map-summary dt,.map-summary dd{overflow-wrap:anywhere}.viewer-overlay span{letter-spacing:.04em}}

/* Two-axis viewer and touch layouts */
.viewer-stage{height:auto;min-height:0;aspect-ratio:4/3;max-height:650px}
#viewerCanvas{touch-action:none}
.axis-controls{border-bottom:1px solid #d5e0dc;background:#f8faf8;padding:5px 20px}
.axis-row{min-height:61px;display:flex;align-items:center;gap:11px;border-bottom:1px solid #dce6e1}
.axis-row:last-child{border:0}
.axis-label{width:90px;flex:0 0 90px;color:#4e777a;font-size:.7rem;letter-spacing:.1em;font-weight:800;line-height:1.25}
.axis-row button{width:38px;height:38px;flex:0 0 38px;border:1px solid #b8d0ca;background:#fff;color:#164d55;font-size:1.15rem;line-height:1}
.axis-row button:disabled{opacity:.35;cursor:default}
.axis-row input[type=range]{flex:1;min-width:50px;max-width:250px}
.axis-row #zoomRange{max-width:110px}
.axis-row strong,.axis-value,#angleReadout{color:#2c555b;font-size:.76rem;font-weight:800;white-space:normal;text-align:right}
.axis-row #angleReadout{min-width:43px}
.axis-spacer{flex:1}
.set-inputs{display:grid;gap:8px;margin:17px 0}
.set-inputs label{margin:0!important;padding:12px;background:#eef4f0;border:1px solid #c6d9d0;display:grid!important;grid-template-columns:1fr auto;gap:6px 10px;align-items:center}
.set-inputs label>span{font-size:.71rem;letter-spacing:.08em;color:#315f62}
.set-inputs input{grid-column:1/-1;min-width:0;width:100%;font-size:.75rem;color:#375c60}
.set-inputs small{font-size:.76rem;color:#226d6d}
.set-error{padding:11px 12px;margin:12px 0 0!important;background:#f9ece5;color:#814232!important;font-size:.78rem!important}
.set-error[hidden]{display:none}
.viewer-caption{line-height:1.6}
.map-stage{height:auto;min-height:340px;aspect-ratio:4/3;max-height:660px}
.map-provider-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:12px 20px;border-top:1px solid #cfddd6;background:#f6faf7;color:#3d6669;font-size:.76rem}
.map-provider-bar a{font-weight:800;color:#1d646b;text-decoration:underline;text-underline-offset:3px}
.map-provider-bar a[aria-disabled=true]{opacity:.45;pointer-events:none;text-decoration:none}
.map-provider-status{display:inline-flex;align-items:center;gap:8px}
.map-provider-status:before{content:"";width:7px;height:7px;border-radius:50%;background:#b7864c}
.map-provider-status.connected:before{background:#287d73}
.map-provider-status.failed:before{background:#bb604b}
@media(max-width:1250px){.axis-row{flex-wrap:wrap;padding:9px 0}.axis-spacer{display:none}.axis-value{flex:1;text-align:left}}
@media(max-width:1050px){.axis-label{width:75px;flex-basis:75px}.axis-row{gap:7px}.axis-row button{width:34px;height:34px;flex-basis:34px}}
@media(max-width:800px){.viewer-stage{aspect-ratio:4/3;max-height:620px}.map-stage{aspect-ratio:4/3;max-height:620px}}
@media(max-width:560px){.viewer-stage{aspect-ratio:1/1;min-height:290px}.map-stage{aspect-ratio:auto;height:clamp(310px,52vh,550px);min-height:310px}.axis-controls{padding:5px 10px}.axis-row{flex-wrap:wrap;min-height:0;padding:10px 0;gap:9px}.axis-label{width:100%;flex-basis:100%}.axis-row input[type=range]{max-width:none;min-width:70px}.axis-row #zoomRange{min-width:58px;max-width:none}.axis-spacer{display:none}.axis-value{flex:1;text-align:left}.axis-row strong{min-width:38px}.viewer-overlay{padding:10px 13px}.map-provider-bar{padding:12px 14px}.set-inputs label{padding:10px}}

.viewer-future{padding:18px 24px;margin:24px;background:#e7f0ec;color:#315f60;line-height:1.6;font-weight:700;font-size:.88rem}
