/* v127: 3D 卡片檢視器 / 3D 幻化台 / 3D 展廳 (shared overlay styles) */
.c3d{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#04080f;color:#e7edf5;overflow:hidden;font-family:"Noto Sans TC",system-ui,sans-serif;overscroll-behavior:contain}
.c3d::backdrop{background:#02060d}
.c3d[open]{animation:c3d-in .3s ease-out}
@keyframes c3d-in{from{opacity:0}to{opacity:1}}
.c3d-cv{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab}
.c3d-cv:active{cursor:grabbing}
.c3d-top{position:absolute;left:0;right:0;top:0;display:flex;align-items:center;gap:12px;padding:calc(12px + env(safe-area-inset-top)) 16px 12px;background:linear-gradient(#02060dcc,#02060d00);pointer-events:none}
.c3d-top>*{pointer-events:auto}
.c3d-title{font-size:15px;color:#f3e6c2;letter-spacing:.08em;white-space:nowrap}
.c3d-tabs{display:flex;gap:4px;padding:3px;border:1px solid #33506a;border-radius:999px;background:#0b1626cc}
.c3d-tabs[hidden]{display:none}
.c3d-tabs button{font:inherit;font-size:13px;min-height:32px;padding:0 14px;border:0;border-radius:999px;background:none;color:#c7d6e4;cursor:pointer}
.c3d-tabs button.is-on{background:linear-gradient(135deg,#41463b,#202d37);color:#f6e9bd;box-shadow:inset 0 0 0 1px #ad985c}
.c3d-x{margin-left:auto;width:40px;height:40px;border:1px solid #ffffff33;border-radius:50%;background:#0b1626cc;color:#e7edf5;font-size:22px;line-height:1;cursor:pointer}
.c3d-load{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:14px;pointer-events:none;color:#c7d6e4;font-size:14px;letter-spacing:.06em;text-align:center;padding:0 24px}
.c3d-load[hidden]{display:none}
.c3d-load i{width:42px;height:42px;border-radius:50%;border:2px solid #7df9ff33;border-top-color:#7df9ff;border-right-color:#e5cf93;animation:c3d-spin 1s linear infinite}
@keyframes c3d-spin{to{transform:rotate(360deg)}}
.c3d-bar{position:absolute;left:50%;bottom:calc(46px + env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;flex-wrap:wrap;justify-content:center;gap:8px;width:max-content;max-width:calc(100vw - 20px)}
.c3d-btn{font:inherit;font-size:13.5px;min-height:40px;padding:0 16px;border:1px solid #58778599;border-radius:999px;background:#0b1626d9;color:#d8e8f0;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.c3d-btn:hover{border-color:#e5cf93}
.c3d-btn.is-on{border-color:#ad985c;color:#f6e9bd;background:linear-gradient(135deg,#41463bd9,#202d37d9)}
.c3d-btn.is-rec{border-color:#e08a8a99;color:#ffd9d9}
.c3d-hint{position:absolute;left:0;right:0;bottom:calc(14px + env(safe-area-inset-bottom));margin:0;text-align:center;font-size:12px;color:#9eb3c7;pointer-events:none;text-shadow:0 1px 4px #000}
.c3d-rec{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:12px;background:#02060dcc;font-size:15px;letter-spacing:.08em;color:#f3e6c2}
.c3d-rec[hidden]{display:none}
.c3d-rec-bar{width:min(320px,70vw);height:6px;border-radius:9px;background:#ffffff1c;overflow:hidden}
.c3d-rec-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#7df9ff,#e5cf93)}
.c3d-toast{position:absolute;left:50%;top:calc(70px + env(safe-area-inset-top));transform:translate(-50%,-10px);max-width:min(520px,calc(100vw - 32px));padding:10px 16px;border:1px solid #ad985c88;border-radius:14px;background:#0b1626f2;color:#f3e6c2;font-size:13.5px;line-height:1.55;opacity:0;transition:opacity .25s,transform .25s;z-index:5}
body>.c3d-toast{position:fixed;z-index:9999}
.c3d-toast.is-in{opacity:1;transform:translate(-50%,0)}
.c3d-offscreen{position:fixed;left:0;top:0;width:2px;height:2px;opacity:0;pointer-events:none;z-index:-1}
body.c3d-on{overflow:hidden}
/* maker toolbar + plate editor buttons */
.c3d-open .c3d-open-i{color:#7df9ff;margin-right:4px;font-size:.85em}
.c3d-plate-btn{font:inherit;font-size:13px;min-height:36px;margin-top:8px;padding:0 14px;border:1px solid #7fb8c988;border-radius:999px;background:linear-gradient(135deg,#17364599,#1d2b3a99);color:#cfeef6;cursor:pointer}
.c3d-plate-btn:hover{border-color:#e5cf93;color:#f3e6c2}
/* 3D 展廳 caption */
.g3d-cap{position:absolute;left:50%;bottom:calc(98px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(520px,calc(100vw - 32px));text-align:center;pointer-events:none;text-shadow:0 2px 10px #000}
.g3d-cap b{display:block;font-size:clamp(17px,2.4vw,22px);color:#f6e9bd;letter-spacing:.06em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g3d-cap small{display:block;margin-top:2px;font-size:13px;color:#bcd3e3}
.g3d-cap em{display:block;margin-top:4px;font-style:normal;font-size:12px;color:#9eb3c7}
.g3d-open{display:inline-flex;align-items:center;gap:6px}
.g3d-open .g3d-i{color:#7df9ff}
@media(max-width:600px){.c3d-top{flex-wrap:wrap;gap:8px}.c3d-title{font-size:14px}.c3d-tabs{order:3;width:100%;justify-content:center}.c3d-btn{font-size:12.5px;min-height:38px;padding:0 12px}.c3d-bar{bottom:calc(40px + env(safe-area-inset-bottom))}.g3d-cap{bottom:calc(92px + env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){.c3d[open]{animation:none}.c3d-load i{animation-duration:3s}}
.g3d-open{font:inherit;font-size:13px;min-height:34px;margin-left:auto;margin-right:10px;padding:0 14px;border:1px solid #7fb8c988;border-radius:999px;background:linear-gradient(135deg,#17364599,#1d2b3a99);color:#cfeef6;cursor:pointer}
.g3d-open:hover{border-color:#e5cf93;color:#f3e6c2}
.g3d-count{font-size:12.5px;color:#9eb3c7;font-variant-numeric:tabular-nums}
