:root{font-family:system-ui,-apple-system,"PingFang TC",sans-serif;color:#1c2a48;background:#bfdfdb;font-size:16px;--paper:#fbf9f1;--border:#d9d4c5;--accent:#a66b27}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:1px solid var(--border);background:var(--paper);border-radius:14px;min-height:44px;padding:10px 15px}button:hover{background:#efe7d5}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #c88a26;outline-offset:3px}button[aria-pressed=true],button[aria-expanded=true]{background:#1c2a48;color:#fbf9f1;border-color:#1c2a48}button b{font-weight:500}a{color:inherit}#world3d{position:fixed;inset:0}canvas{width:100%;height:100%;display:block;touch-action:none}#loading3d{position:absolute;inset:40% 20%;display:grid;place-items:center;background:var(--paper);border-radius:20px;z-index:20}#loading3d[hidden]{display:none}header{position:fixed;top:22px;left:24px;padding:18px 24px;border:1px solid #ffffff88;border-radius:24px;background:#fbf9f1ed;box-shadow:0 8px 40px #38595512;max-width:380px}.eyebrow{font-size:.72rem;letter-spacing:.13em;color:#8b5e29;font-weight:700}h1{font-family:serif;margin:7px 0 12px;font-size:1.9rem}h1 span{display:block;font:400 .87rem/1.8 system-ui;margin-top:3px}header a{font-size:.75rem;text-decoration:none}.scene-note{position:fixed;right:24px;top:24px;text-align:right;display:grid;gap:7px;background:#fbf9f1c9;padding:14px 18px;border-radius:18px;font-size:.7rem}.scene-note small{line-height:1.7;color:#4b6268}.jackie-note{position:fixed;left:24px;bottom:110px;background:#fbf9f1e8;border:1px solid #fff8;border-radius:20px;padding:12px 18px;max-width:280px}.jackie-note button{border:0;background:transparent;font-weight:700;padding:0 5px;min-height:32px}.jackie-note p{font-size:.78rem;line-height:1.7;margin:3px 0}.status-dot{display:inline-block;width:8px;height:8px;background:#52876b;border-radius:50%}.world-pin{position:absolute;z-index:2;transform:translate(-50%,-100%);border-radius:99px;font-size:.75rem;min-height:36px;padding:8px 13px;box-shadow:0 4px 15px #344b4c22;background:#fbf9f1ed;white-space:nowrap}.labels-off{display:none}.toolbar{position:fixed;bottom:max(28px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;gap:5px;padding:8px;background:#fbf9f1f2;border:1px solid #fff;border-radius:28px;box-shadow:0 10px 40px #294b4b28;z-index:10}.toolbar button{min-width:68px;border:0;border-radius:19px;display:flex;flex-direction:column;gap:3px;align-items:center;font-size:.76rem;padding:9px 12px}.toolbar button>span{font-size:1.35rem;line-height:1.1}.settings{position:fixed;bottom:118px;left:50%;transform:translateX(-5%);width:340px;max-height:65dvh;overflow:auto;z-index:11;background:#fbf9f1f5;border:1px solid #fff;border-radius:24px;padding:20px;box-shadow:0 15px 60px #183f3c28}.settings h2{font-size:.73rem;color:#8b5e29;letter-spacing:.1em;margin:0 0 10px}.settings h2:not(:first-child){margin-top:17px}.options{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.options button{font-size:.78rem;padding:10px 6px}.times{grid-template-columns:repeat(4,1fr)}.times button{font-size:1.2rem}.times span{display:block;font-size:.72rem;margin-top:4px}.notice{position:fixed;right:16px;bottom:8px;font-size:10px;color:#304b52;background:#fbf9f1aa;padding:3px 7px;border-radius:8px;pointer-events:none}dialog{border:1px solid #fff;background:#fbf9f1f7;color:inherit;border-radius:24px;width:min(650px,calc(100vw - 32px));max-height:78dvh;padding:0;box-shadow:0 20px 80px #203a4a44}dialog::backdrop{background:#243f4933}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:22px 24px 14px;border-bottom:1px solid var(--border)}.modal-header small{color:#8b5e29;font-size:.7rem}.modal-header h2{margin:5px 0 0;font-family:serif}.close{border:0;font-size:1.5rem}.modal-body{padding:20px 24px;overflow:auto;max-height:60dvh;line-height:1.8}.modal-body p{margin:0 0 16px}.filter,.actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.filter button{font-size:.8rem}.video-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.video-card{background:#f0ebdf;border:1px solid var(--border);border-radius:14px;overflow:hidden}.video-card img{width:100%;height:180px;object-fit:cover;object-position:center}.video-card>div{padding:12px}.video-card h3{font-size:.9rem;margin:5px 0}.video-card small{font-size:.7rem}.video-card a{font-size:.8rem}.legal,.hint{font-size:.72rem;line-height:1.8;color:#58636b}.legal{margin-top:20px!important;padding-top:16px;border-top:1px solid var(--border)}.people{display:flex;align-items:center;gap:16px}.people img{width:90px;border-radius:16px}.people h3{font-size:1rem}.actions a,.actions button{padding:10px 14px;text-decoration:none;border-radius:12px;border:1px solid var(--border);min-height:44px}.actions a.line{background:#06c755;color:#102e22;font-weight:700}.station-picks{display:grid;gap:10px}.station-picks button{display:flex;gap:12px;align-items:center}.creative-video{width:100%;max-height:45dvh}.draft{white-space:pre-wrap;padding:16px;border:1px solid var(--border);border-radius:12px}.service-choices{display:flex;gap:8px;margin-bottom:12px}.toast{position:fixed;left:50%;top:25%;transform:translateX(-50%);background:#1c2a48;color:#fbf9f1;padding:12px 18px;border-radius:14px;z-index:40;display:none}.toast.show{display:block}body.large{font-size:19px}body.large .world-pin,body.large .toolbar button,body.large .settings button,body.large .jackie-note p{font-size:1rem}@media(max-width:650px){header{left:12px;top:12px;padding:13px 16px;max-width:250px}h1{font-size:1.5rem;margin-bottom:3px}h1 span{font-size:.72rem}.eyebrow{font-size:.62rem}header a{font-size:.65rem}.scene-note{top:auto;right:10px;bottom:114px;padding:6px 10px;font-size:.6rem}.scene-note small,#sceneState{display:none}.jackie-note{left:12px;bottom:114px;padding:7px 12px;max-width:220px}.jackie-note p{max-width:165px;font-size:.65rem}.toolbar{bottom:max(26px,env(safe-area-inset-bottom));gap:1px;padding:5px;width:calc(100% - 24px);justify-content:space-evenly}.toolbar button{min-width:0;flex:1;padding:9px 7px}.settings{left:12px;right:12px;transform:none;width:auto;bottom:114px;max-height:60dvh}.world-pin{font-size:.65rem;min-height:32px;padding:7px 9px}.video-grid{grid-template-columns:1fr}.video-card{display:grid;grid-template-columns:95px 1fr}.video-card img{height:170px}.modal-body{padding:16px;max-height:61dvh}.modal-header{padding:16px}dialog{max-height:80dvh}.notice{font-size:9px;right:8px;bottom:5px}.people{align-items:flex-start}.people img{width:65px}.service-choices{flex-wrap:wrap}}

/* 人物招呼卡：保留角色原圖，不把整張貼圖當走路骨架。 */
.jackie-greeting{display:flex;align-items:center;gap:26px}.jackie-greeting>img{width:180px;height:240px;object-fit:contain;flex-shrink:0;animation:hello 700ms ease-out both}.jackie-greeting>div{flex:1}.jackie-greeting .actions{flex-direction:column}.jackie-greeting button{text-align:left}.options a{font-size:.8rem;align-self:center;text-align:center;padding:10px}.fallback{display:none;position:absolute;left:50%;top:40%;transform:translateX(-50%);background:#fbf9f1;padding:24px;border-radius:20px;z-index:3;text-align:center}.fallback a{display:block;margin:14px}.scene-failed .fallback{display:block}.scene-failed .world-pin{display:none}@keyframes hello{from{opacity:0;transform:translateY(12px) rotate(-3deg)}to{opacity:1;transform:none}}@media(max-width:650px){.jackie-greeting{gap:12px}.jackie-greeting>img{width:100px;height:185px}.jackie-greeting p{font-size:.86rem}.jackie-greeting .actions{gap:7px}.jackie-greeting button{font-size:.85rem}}@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}

.find-fields{display:grid;grid-template-columns:1.5fr 1fr;gap:12px}.find-fields label{display:grid;gap:5px;font-size:.8rem}.find-fields input,.find-fields select{font:inherit;min-width:0;width:100%;min-height:44px;border:1px solid var(--border);border-radius:10px;padding:8px;color:#1c2a48;background:#fbf9f1}@media(max-width:360px){.find-fields{grid-template-columns:1fr}}

/* 手機人物卡：裁切透明留白，服務按鈕獨立一列。 */
.jackie-dialog[open]{display:flex;flex-direction:column;overflow:hidden;width:min(560px,calc(100vw - 28px));max-height:calc(100dvh - 28px)}
.jackie-dialog .modal-header{flex-shrink:0}.jackie-dialog .modal-body{min-height:0;max-height:none;overflow:auto;overscroll-behavior:contain;scroll-padding-top:16px}
.jackie-dialog .jackie-greeting{display:grid;grid-template-columns:140px minmax(0,1fr);gap:20px;align-items:center}
.jackie-dialog .jackie-avatar{width:140px;height:230px;position:relative;overflow:hidden;flex:none;background:radial-gradient(ellipse at 50% 80%,#e6dfc955,transparent 65%);border-radius:20px}
.jackie-dialog .jackie-avatar img{position:absolute;max-width:none;width:235px;height:235px;object-fit:contain;left:-47px;top:-1px;animation:hello 450ms ease-out both}
.jackie-dialog .jackie-greeting p{margin:0;font-size:1rem;line-height:1.85;min-width:0}
.jackie-services{display:grid;grid-template-columns:1fr;gap:8px;margin:12px 0 16px}.jackie-services button{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:48px;text-align:left;font-size:1rem;padding:10px 16px}.jackie-services button span{color:#8f5e0f}
.service-legal{border-top:1px solid var(--border);padding-top:8px}.service-legal summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:8px;font-size:.8rem;color:#58636b}.service-legal summary:before{content:'＋';font-size:1rem}.service-legal[open] summary:before{content:'－'}.service-legal .legal{margin:0!important;border:0;padding-top:4px;font-size:.75rem}
@media(max-width:650px){.jackie-dialog .modal-header{padding:14px 16px 12px}.jackie-dialog .modal-header h2{font-size:1.5rem}.jackie-dialog .close{width:44px;height:44px;min-height:44px;padding:4px;flex-shrink:0}.jackie-dialog .modal-body{padding:12px 16px 8px}.jackie-dialog .jackie-greeting{grid-template-columns:105px minmax(0,1fr);gap:12px}.jackie-dialog .jackie-avatar{width:105px;height:180px}.jackie-dialog .jackie-avatar img{width:185px;height:185px;left:-40px;top:-1px}.jackie-dialog .jackie-greeting p{font-size:.95rem;line-height:1.85}.jackie-services{margin-top:8px}.jackie-services button{min-height:48px}}
@media(max-height:580px){.jackie-dialog .jackie-avatar{height:125px}.jackie-dialog .jackie-avatar img{width:130px;height:130px;left:-12px}.jackie-dialog .jackie-greeting{grid-template-columns:105px minmax(0,1fr)}}

.treasure-pin{border-color:#b88738;color:#76511e;background:#fff2cc}.place-list{margin-bottom:18px;border-bottom:1px solid var(--border);padding-bottom:12px}.place-list summary{min-height:44px;cursor:pointer;font-size:.82rem;font-weight:700}.place-list .options{margin-top:8px}.treasure-photo img{display:block;width:100%;height:auto;max-height:45dvh;object-fit:contain;border-radius:14px;background:#242327}.treasure-info{padding-top:16px}.treasure-condition{display:inline-block;padding:4px 10px;border-radius:8px;background:#eae0ce;font-size:.8rem}.treasure-info h3{font-size:1.15rem;line-height:1.6;margin:10px 0}.treasure-info .treasure-price{font-size:1.7rem;color:#8f5e0f;font-weight:700;margin:0 0 14px}.treasure-info .actions a{width:100%;text-align:center}@media(max-width:650px){.treasure-photo img{max-height:39dvh}.treasure-info h3{font-size:1rem}.treasure-info .treasure-price{font-size:1.5rem}}
@media(min-width:651px){.treasure-product{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:center}.treasure-info{padding-top:0}.treasure-photo img{max-height:47dvh}}
@media(max-width:650px){.treasure-photo img{max-height:30dvh}.treasure-info{padding-top:10px}.treasure-info h3{margin:7px 0}.treasure-info .treasure-price{margin-bottom:8px}.treasure-info .actions{margin:8px 0}.treasure-info .hint{margin:6px 0 0}}

.treasure-photo{display:block;position:relative;width:100%;padding:0;border:0;min-height:0;background:#242327;cursor:zoom-in;overflow:hidden;border-radius:14px}.treasure-photo span{position:absolute;right:8px;bottom:8px;background:#fbf9f1ed;color:#1c2a48;border-radius:8px;padding:4px 8px;font-size:12px;pointer-events:none}.treasure-photo img{display:block;width:100%;height:auto;object-fit:contain}

.treasure-product+.treasure-product{margin-top:24px;padding-top:24px;border-top:1px solid var(--border)}
