@charset "UTF-8";
:root{--ink:#203c36;--muted:#7a8880;--paper:#fafbf6;--stage:#e8ece3;--line:#dce2d8;--accent:#b06e50;font-family:"PingFang TC","Noto Sans TC","Microsoft JhengHei",sans-serif;color:var(--ink);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--paper)}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button{border:0;background:none}a{color:inherit;text-decoration:none}button:disabled{opacity:.45;cursor:wait}[hidden]{display:none!important}.masthead{height:86px;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 32px;gap:36px}.brand{display:flex;align-items:center;gap:13px;font-size:17px;font-weight:650;letter-spacing:.04em}.brand-icon{font-size:42px;line-height:1;color:var(--accent)}.brand small{display:block;font-size:10px;color:var(--muted);font-weight:400;letter-spacing:.16em;margin-top:5px}.header-note{margin-left:auto;font-size:12px;color:#66776c;display:flex;align-items:center;gap:9px}.live-dot{width:6px;height:6px;border-radius:50%;background:#718e6d}.quiet{font-size:12px}.quiet span{margin-left:12px;color:var(--accent)}main{display:flex;height:calc(100dvh - 86px);min-height:540px}aside{width:286px;flex-shrink:0;display:flex;flex-direction:column;padding:32px 22px 17px;background:var(--paper);border-right:1px solid var(--line);z-index:5}.eyebrow{font-size:10px;letter-spacing:.17em;color:#7a8e7d}.intro h1{font-size:31px;line-height:1.4;font-weight:500;letter-spacing:.04em;margin:13px 0 14px}.intro h1 span{color:var(--accent)}.intro p{font-size:11px;line-height:1.8;color:var(--muted);margin:0 0 27px}.overview{display:flex;align-items:center;gap:12px;border:1px solid var(--line);padding:14px 12px;border-radius:5px;width:100%;text-align:left;font-size:12px}.overview>span{font-size:17px}.overview small{font-size:10px;margin-left:auto;color:var(--muted)}.overview.active{background:#e8eee3;border-color:#cdd9c7}.list-label{display:flex;justify-content:space-between;margin:25px 0 9px;font-size:10px;letter-spacing:.08em}.list-label span{letter-spacing:0;color:#95a093;font-size:9px}nav{overflow-y:auto;min-height:100px;flex:1;scrollbar-width:thin;scrollbar-color:#d5ddcf transparent}.zone-item{width:100%;display:flex;gap:10px;align-items:center;text-align:left;padding:12px 9px;border-radius:4px;margin:2px 0;font-size:12px;transition:background .2s}.zone-item:hover{background:#f0f3e9}.zone-item.selected{background:#e8eee3}.zone-number{color:#8b9a8e;font-size:10px;font-variant-numeric:tabular-nums}.zone-dot{width:5px;height:5px;border-radius:50%;background:var(--zone-color);flex-shrink:0}.zone-item.selected .zone-number{color:var(--accent)}.zone-arrow{margin-left:auto;font-size:13px;color:#9ba89b}.sidebar-footer{display:flex;justify-content:space-between;font-size:9px;color:#98a194;padding-top:15px;border-top:1px solid var(--line);margin-top:14px}.sidebar-footer strong{font-weight:400;color:#788977}#stage{position:relative;flex:1;min-width:0;overflow:hidden;background:var(--stage)}#viewer,#labels{position:absolute;inset:0}#viewer canvas{display:block;width:100%;height:100%;touch-action:none}#labels{pointer-events:none}.zone-label{pointer-events:auto;position:absolute;white-space:nowrap;display:flex;align-items:center;gap:6px;background:#fafbf2ed;box-shadow:0 3px 12px #22392c12;border:1px solid #fff9;border-radius:4px;padding:6px 8px;font-size:10px;transform:translate(-50%,-50%);transition:background .2s,opacity .2s;z-index:1}.zone-label span{background:var(--zone-color);color:white;border-radius:3px;padding:2px 4px;font-size:9px}.zone-label.selected{background:#203c36;color:#fff;z-index:2;border-color:#203c36}.sub-label{pointer-events:none;position:absolute;background:#203c36ed;color:white;font-size:10px;padding:4px 7px;white-space:nowrap;border-radius:3px;transform:translate(-50%,-50%)}.stage-top{position:absolute;top:24px;left:26px;right:26px;display:flex;justify-content:space-between;gap:12px;align-items:center;z-index:4;pointer-events:none}.stage-top>div{pointer-events:auto}.view-switch{padding:4px;border:1px solid #ffffffb0;background:#f8faf2d9;border-radius:6px;display:flex;gap:2px}.view-switch button{font-size:11px;padding:9px 15px;border-radius:3px}.view-switch button.selected{background:var(--ink);color:#f7f8ed}.stage-actions{display:flex;gap:6px}.stage-actions button{min-width:36px;height:36px;background:#f8faf2d9;border:1px solid #ffffffc0;border-radius:5px;font-size:13px;padding:0 11px}.stage-actions button span{font-size:10px;margin-left:5px}.stage-actions button[aria-pressed=false]{color:#9ba599;background:#edf0e6b0}.stage-actions button:hover{background:#fff}#scene-caption{position:absolute;top:105px;left:30px;pointer-events:none}#scene-caption h2{font-size:18px;font-weight:400;letter-spacing:.06em;margin:10px 0 8px}#scene-caption p{font-size:10px;color:#819079;letter-spacing:.05em}#loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:var(--stage);z-index:7;gap:14px;font-size:12px}.loading-symbol{font-size:62px;color:var(--accent);animation:breathe 2.8s ease-in-out infinite}.loading-symbol+strong{font-weight:500;font-size:19px;letter-spacing:.08em}#load-progress{color:#7e8e77;font-size:11px;max-width:min(420px,calc(100% - 48px));text-align:center;line-height:1.7}#loading p{font-size:10px;color:#96a08e}@keyframes breathe{50%{transform:rotate(90deg);opacity:.5}}#detail{position:absolute;left:26px;bottom:85px;width:330px;max-width:calc(100% - 105px);padding:20px;background:#fafbf6f2;border:1px solid #fff;border-radius:7px;box-shadow:0 8px 30px #203c3610;z-index:4;backdrop-filter:blur(14px)}.detail-head{display:flex;align-items:center;gap:13px}.detail-head>span{font-size:29px;font-weight:300;color:var(--accent);font-variant-numeric:tabular-nums}.detail-head small{font-size:9px;color:#8a9784;letter-spacing:.06em}.detail-head h2{font-weight:500;font-size:18px;margin:4px 0 0}#detail-close{font-size:20px;margin-left:auto;align-self:start;padding:0 3px;color:#98a38e}#detail-description{font-size:11px;color:#6e7e6b;line-height:1.9;margin:17px 0 13px}#detail-stats{display:flex;flex-wrap:wrap;gap:5px}#detail-stats span{font-size:10px;background:#eaf0e2;border-radius:3px;padding:6px 8px;color:#64755f}.detail-bottom{border-top:1px solid var(--line);padding-top:12px;margin-top:17px;display:flex;align-items:center;justify-content:space-between;font-size:9px}.detail-bottom span{color:#8b9784}.detail-bottom button{font-size:10px;padding:4px 0}#profession-editor{margin-top:15px;display:flex;flex-wrap:wrap;gap:7px;align-items:center}#profession-editor label{font-size:10px;color:#6b7b65}#profession-editor input{min-width:70px;width:130px;border:1px solid #ccd6c4;background:#fff;border-radius:3px;padding:6px;font-size:11px}#profession-editor small{color:#919d8a;font-size:9px;width:100%}.zoom-tools{position:absolute;right:25px;bottom:105px;display:flex;flex-direction:column;box-shadow:0 2px 8px #203c3608;border:1px solid #fff;border-radius:5px;background:#f8faf2db;z-index:4}.zoom-tools button{width:36px;height:37px;font-size:18px}.zoom-tools button+button{border-top:1px solid #dfe5d8}.orientation{position:absolute;right:27px;bottom:245px;display:flex;flex-direction:column;align-items:end;gap:5px;pointer-events:none;font-size:10px;color:#6d8065}.orientation small{font-size:8px;color:#94a18a}.stage-bottom{position:absolute;bottom:0;left:0;right:0;height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 27px;border-top:1px solid #ffffff60;background:#eef1e8c2;backdrop-filter:blur(8px);z-index:4}.stage-bottom button{font-size:16px;display:flex;align-items:center;gap:8px;padding:10px 0}.stage-bottom button span{font-size:11px}.gesture-hint{font-size:9px;color:#8a9881}.model-note{font-size:8px;letter-spacing:.16em;color:#99a590}#mobile-index{display:none}#toast{position:absolute;bottom:80px;left:50%;transform:translateX(-50%);border-radius:5px;background:#203c36;color:#fff;padding:10px 15px;font-size:11px;opacity:0;pointer-events:none;z-index:15;transition:opacity .2s}#toast.visible{opacity:1}dialog{border:1px solid #e3e8da;border-radius:10px;background:var(--paper);color:var(--ink);padding:28px;max-width:960px;width:calc(100% - 48px);max-height:90dvh;box-shadow:0 30px 120px #203c3633}dialog::backdrop{background:#10281e66;backdrop-filter:blur(5px)}.dialog-head{display:flex;justify-content:space-between;align-items:center}.dialog-head h2{font-size:23px;font-weight:500;margin:8px 0 18px}.dialog-head button{font-size:25px;color:#92a08a;align-self:start}.plan-tabs{display:flex;gap:8px;margin-bottom:15px;flex-wrap:wrap}.plan-tabs button{font-size:11px;border:1px solid var(--line);padding:9px 13px;border-radius:4px}.plan-tabs button.selected{background:var(--ink);color:#fff}.plan-wrap{position:relative}.plan-wrap img{width:100%;display:block;border-radius:5px}#plan-pins{position:absolute;inset:0}.plan-pin{position:absolute;transform:translate(-50%,-50%);background:#203c36;color:white;min-width:24px;min-height:24px;border-radius:50%;border:2px solid #fff;font-size:9px;box-shadow:0 3px 10px #0002}dialog p{font-size:12px;line-height:1.9;color:#6c7c64}#about-dialog{max-width:620px}.about-grid{display:flex;gap:10px;margin:22px 0}.about-grid>div{background:#eef2e8;flex:1;padding:16px;border-radius:4px;display:flex;flex-direction:column;gap:7px}.about-grid b{font-size:29px;font-weight:400}.about-grid span{font-size:10px;color:#84917c}.source-links{display:flex;gap:18px;flex-wrap:wrap}.source-links a{font-size:11px;border-bottom:1px solid #b9c6b0}.download-model{display:block;background:var(--ink);color:#fff;padding:14px;border-radius:4px;text-align:center;font-size:12px;margin-top:20px}
@media(min-width:1550px){aside{width:310px;padding:36px 28px}.intro h1{font-size:36px}.zone-item{padding:14px 9px}}
@media(max-height:780px) and (min-width:761px){aside{padding-top:22px}.intro h1{font-size:26px;margin:10px 0}.intro h1 br{display:none}.intro p{margin-bottom:17px}.list-label{margin-top:17px}.zone-item{padding:10px 9px}.intro .eyebrow{font-size:9px}}
@media(max-width:1000px){aside{width:245px;padding-left:17px;padding-right:17px}.stage-actions span{display:none}.gesture-hint{display:none}.stage-top{left:18px;right:18px}.view-switch button{padding:9px 11px}#scene-caption{left:21px}}
@media(max-width:760px){.masthead{height:70px;padding:0 18px}.brand{font-size:14px;gap:8px}.brand-icon{font-size:34px}.brand small{font-size:8px}.header-note{display:none}.quiet{margin-left:auto;font-size:10px}.quiet span{margin-left:3px}main{height:calc(100dvh - 70px);min-height:460px}aside{position:absolute;top:70px;bottom:0;left:0;width:270px;box-shadow:10px 0 40px #203c3620;transform:translateX(-105%);transition:transform .25s;z-index:9;padding-top:23px}aside.open{transform:translateX(0)}.intro h1{font-size:27px}.intro h1 br{display:none}.intro p{margin-bottom:18px}.zone-item{padding:10px 9px}.stage-top{top:16px;left:14px;right:14px;align-items:start}.view-switch button{font-size:10px;padding:8px 10px}.stage-actions{gap:4px}.stage-actions button{width:31px;min-width:31px;height:33px;padding:0;font-size:12px}#scene-caption{top:83px;left:18px}#scene-caption h2{font-size:15px}#scene-caption p{font-size:9px}.zone-label{padding:4px 5px;font-size:9px;gap:4px}.zone-label span{font-size:8px;padding:1px 3px}.zone-label:not(.selected) .label-title{display:none}.zone-label:not(.selected){background:#fafbf2cf}#mobile-index{display:block;position:absolute;bottom:80px;left:15px;background:var(--ink);color:white;border-radius:5px;padding:11px 14px;font-size:11px;z-index:10}.stage-bottom{height:58px;padding:0 17px}.model-note{font-size:7px}.zoom-tools{right:14px;bottom:80px}.orientation{right:15px;bottom:212px}.orientation small{font-size:7px}#detail{left:14px;bottom:131px;width:295px;padding:16px;max-width:calc(100% - 74px)}.detail-head h2{font-size:16px}#detail-description{font-size:10px;margin:12px 0}#detail-stats span{font-size:9px}#detail-num{font-size:26px}.detail-bottom{margin-top:12px;padding-top:10px}dialog{width:calc(100% - 24px);padding:19px}.dialog-head h2{font-size:19px}.plan-tabs button{font-size:9px;padding:8px 9px}.plan-pin{min-width:20px;min-height:20px;font-size:8px}#toast{max-width:90%;white-space:nowrap}.about-grid>div{padding:12px}.sub-label{font-size:9px}.sidebar-footer{font-size:8px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

@media(max-width:760px){aside{visibility:hidden}aside.open{visibility:visible}}

/* 1.1：標籤避讓、可觸控範圍與錯誤重試 */
.label-stem{position:absolute;width:1px;border-left:1px dashed #7f92737a;pointer-events:none;z-index:0}
.sub-label{max-width:110px;overflow:hidden;text-overflow:ellipsis}
#plan-direction{display:inline-block;font-style:normal;transform-origin:center}
#retry-btn{background:var(--ink);color:white;border-radius:5px;padding:12px 24px;min-height:44px}
.stage-actions button{min-width:40px;min-height:40px}
.zoom-tools button{min-width:44px;min-height:44px}
#detail-close{min-width:36px;min-height:36px}
@media(max-width:760px){.stage-actions button{width:44px;min-width:44px;height:44px}.stage-actions{gap:3px}.view-switch button{min-height:36px;padding:8px}.stage-top{gap:7px}.zoom-tools{bottom:80px}.orientation{bottom:235px}#mobile-index{min-height:44px}.stage-bottom button{min-height:44px}}
@media(max-width:350px){.stage-top{left:8px;right:8px;gap:5px}.view-switch button{font-size:9px;padding:8px 6px}.stage-actions{gap:2px}.stage-actions button{width:40px;min-width:40px}.zone-label{font-size:8px}}

#reset{display:grid;place-items:center}#reset svg{width:24px;height:24px;pointer-events:none}
/* 自動活動設定：預設收合，人物不再有可點選名牌。 */
.crowd-settings{position:absolute;right:24px;top:86px;width:270px;padding:16px;border:1px solid #fff;border-radius:10px;background:#fbfcf5f5;box-shadow:0 10px 35px #344c3412;z-index:5;color:#29483b}.crowd-settings[hidden]{display:none}.crowd-settings-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px}.crowd-settings-heading button{min-width:32px;min-height:32px;border:1px solid #dce4d4;border-radius:5px;background:#f8faf2;color:#4c6742;font-size:18px}.crowd-actions{display:flex;gap:5px;margin-top:10px}.crowd-actions button{border:1px solid #dce4d4;border-radius:5px;padding:7px 8px;background:#f8faf2;font-size:11px;color:#4c6742;cursor:pointer}.crowd-actions button[aria-pressed=true]{background:#e2ecd7;border-color:#c6d6b8}.crowd-settings-note{margin:10px 0 0;font-size:10px;line-height:1.7;color:#7d8d71}.crowd-labels{position:absolute;inset:0;pointer-events:none;z-index:2}.crowd-settings-toggle{font-size:16px}@media(max-width:760px){.crowd-settings{right:12px;top:77px;width:225px;padding:12px}.crowd-actions button{min-height:36px}.stage-actions{gap:2px}.stage-actions button{width:36px;min-width:36px}.view-switch button{font-size:10px;padding:7px}.stage-top{left:8px;right:8px;gap:3px}}

/* 場上人數 */
.crowd-population{display:flex;align-items:center;justify-content:space-between;margin:10px 0 4px;gap:12px}.crowd-population label{font-size:12px;font-weight:600}.crowd-population small{font-size:10px;font-weight:400;color:#829074;margin-left:5px}.crowd-population input{width:66px;padding:5px 7px;border:1px solid #d5decc;border-radius:5px;background:#fffef8;color:#243d34;font:inherit;text-align:center}#crowd-population-range{width:100%;accent-color:#6f9365;margin:4px 0 10px;cursor:pointer}.crowd-settings{max-height:calc(100% - 104px);overflow:auto}

.crowd-timers{display:grid;grid-template-columns:1fr;gap:6px;padding:10px 0;border-top:1px solid #e1e6da}.crowd-timers label{display:flex;align-items:center;gap:3px;flex-wrap:wrap;font-size:11px;color:#587050}.crowd-timers input{width:44px;min-width:0;padding:5px 3px;border:1px solid #d5decc;border-radius:5px;background:#fffef8;color:#243d34;text-align:center;font:inherit}.crowd-activity{font-size:10px;color:#718367;padding-bottom:9px}.crowd-chat-bubble{position:absolute;transform:translate(-50%,-100%);border-radius:10px;background:#fffdf2e8;color:#7a967b;padding:1px 5px;font-size:10px;letter-spacing:1px;pointer-events:none;box-shadow:0 2px 6px #253c3414}.crowd-chat-bubble[hidden]{display:none}

.crowd-timers label{display:grid;grid-template-columns:auto 32px auto;gap:2px;font-size:10px;justify-content:start}.crowd-timers input{width:32px;appearance:textfield;font-size:11px;padding:5px 1px}.crowd-timers input::-webkit-inner-spin-button{appearance:none}.crowd-timing-note{display:block;font-size:9px;color:#849176;margin:-3px 0 7px}
/* 只改場地的牆地材質；七種咖啡廳木色可收合。 */
.wood-preview-enabled #scene-caption{display:none}.wood-panel{position:absolute;left:26px;top:86px;width:268px;padding:15px;border:1px solid #fffaf1;border-radius:10px;background:#fffaf2f5;box-shadow:0 8px 30px #533b2814;z-index:5;color:#553d2b}.wood-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.wood-eyebrow{font-size:9px;letter-spacing:1.5px;color:#927456}.wood-heading h2{font-weight:600;line-height:1.5;margin:3px 0 0;font-size:15px}.wood-heading button{min-width:32px;min-height:32px;border:1px solid #dfcebb;border-radius:6px;background:#fffaf2;color:#79583e;font-size:18px;cursor:pointer}.wood-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.wood-options[hidden]{display:none}.wood-swatch{display:flex;flex-direction:column;align-items:center;gap:5px;min-height:62px;padding:6px 1px;border:1px solid #e9dece;border-radius:6px;background:#fffdf7;font-size:9px;color:#745a44;cursor:pointer}.wood-swatch:hover{background:#f2e6d5}.wood-swatch:focus-visible{outline:3px solid #98663e;outline-offset:2px}.wood-swatch[aria-pressed=true]{border-color:#92643d;background:#f1e1cc;box-shadow:0 0 0 1px #92643d}.wood-chip{display:block;width:34px;height:27px;border-radius:3px;background:repeating-linear-gradient(0deg,#412e1412 0 1px,transparent 1px 4px),linear-gradient(125deg,var(--wood-wall) 0 45%,var(--wood-floor) 45%);border:1px solid #79552e25}.wood-current{font-size:10px;line-height:1.6;color:#8c6c4e;margin:10px 0 0}.wood-panel[data-collapsed=true] .wood-heading{margin-bottom:0}.wood-panel[data-collapsed=true] .wood-current{margin-top:5px}.wood-panel h2{font-family:inherit}
@media(max-width:760px){.wood-panel{left:12px;right:65px;top:auto;bottom:76px;width:auto;max-width:300px;padding:11px}.wood-heading{margin-bottom:8px}.wood-heading h2{font-size:13px}.wood-swatch{font-size:9px;min-height:57px}.wood-options{gap:5px}.wood-current{font-size:9px;margin-top:7px}.wood-eyebrow{font-size:8px}}

.zone-cluster-note{font-size:10px;line-height:1.6;color:#926843;margin:0 0 8px;padding:8px 10px;background:#f1e7d8;border-radius:5px}.zone-item[data-cluster="future-human"] .zone-number{color:#96704c}.zone-item[data-cluster="future-human"]{border-left:2px solid #dcc4a3}.zone-item[data-cluster="future-human"].selected{border-left-color:#94714e}

/* 木色入口整合右上工具列，展開後才顯示色票。 */
.stage-actions #wood-toggle{display:inline-flex;align-items:center;justify-content:center;padding:0;width:36px}.wood-panel{left:auto;right:26px;top:76px;width:268px}.wood-panel[hidden]{display:none!important}
@media(max-width:760px){.stage-actions #wood-toggle{width:44px;min-width:44px;height:44px}.stage-actions{gap:4px}.stage-top{gap:6px;left:8px;right:8px}.view-switch button{padding:9px 7px}.wood-panel{left:auto;right:8px;top:72px;bottom:auto;width:min(280px,calc(100% - 16px));max-width:none}}

@media(max-width:380px){.stage-top{flex-wrap:wrap}.stage-actions{margin-left:auto}.wood-panel{top:124px}}
