:root{color-scheme:dark;font-family:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;background:#11131c;color:#f6f2f0;font-size:16px}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;border:1px solid #ffffff25;border-radius:14px;background:#ffffff0e;color:inherit;padding:13px 17px;text-align:left;min-height:46px;transition:background .2s,transform .2s}button:hover{background:#ffffff20}button:active{transform:translateY(1px)}button:focus-visible,input:focus-visible{outline:2px solid #ffccae;outline-offset:3px}button:disabled{cursor:default;opacity:.43}button.primary{background:#f1bca9;color:#302431;border-color:transparent;text-align:center;font-weight:700}[hidden]{display:none!important}.phone-frame{position:relative;max-width:480px;height:100dvh;min-height:480px;margin:auto;overflow:hidden;isolation:isolate;background:#293343;box-shadow:0 0 90px #0009}.backdrop,.shade{position:absolute;inset:0;z-index:-3}.backdrop{background:radial-gradient(ellipse at 75% 15%,#bf9a91aa,transparent 55%),linear-gradient(155deg,#5d727b,#25293e 70%);background-size:cover;background-position:center;transition:background-image .4s}.shade{z-index:-2;background:linear-gradient(0deg,#111522 0%,#131827a8 35%,#141c2920 80%,#141c29b0)}.portrait{position:absolute;z-index:-1;bottom:18%;left:5%;width:90%;height:70%;object-fit:contain;object-position:bottom;filter:drop-shadow(0 8px 25px #0005);mask-image:linear-gradient(#000 75%,transparent);opacity:.95}header{position:absolute;inset:0 0 auto;display:flex;justify-content:space-between;align-items:center;padding:calc(16px + env(safe-area-inset-top)) 20px 14px;z-index:2;background:linear-gradient(#19202bc9,transparent);pointer-events:none}header>*{pointer-events:auto}header small{font-size:11px;letter-spacing:.12em;color:#e4c8bb}#location{margin-top:5px;font-size:14px}#menu-button{padding:9px 13px;background:#20253590}.title-screen{height:100%;display:flex;flex-direction:column;justify-content:center;padding:36px}.eyebrow{color:#f0bda9;letter-spacing:.13em;font-size:12px}h1{font-size:48px;font-weight:500;letter-spacing:.12em;margin:15px 0 0}h2{font-size:20px;font-weight:500;margin:0 0 20px}.title-screen>p{letter-spacing:.2em;color:#e3cfc7}.title-actions{display:grid;gap:12px;margin-top:70px}.title-actions button{text-align:center}.muted{font-size:13px;color:#b7b7c3;line-height:1.7}.reader{position:absolute;inset:100px 0 0;overflow-y:auto;display:flex;flex-direction:column;justify-content:flex-start;scrollbar-width:thin;padding:24dvh 14px calc(18px + env(safe-area-inset-bottom));scroll-behavior:smooth}.text-card{padding:23px 21px;background:#171b2ae8;border:1px solid #ffffff18;border-radius:23px;backdrop-filter:blur(18px);box-shadow:0 10px 35px #0003;margin-top:auto}#scene-title{font-size:12px;color:#eebda9;letter-spacing:.13em;margin-bottom:16px}#prose{font-size:16px;line-height:1.95;overflow-wrap:anywhere}#prose p{margin:0 0 16px}.dialogue{color:#fff3e8;font-weight:500;border-left:2px solid #e5ac95;padding-left:12px}.inner{color:#b5b8ca;font-size:14px}.choices{display:grid;gap:10px;margin-top:24px}.choice{width:100%;background:#ffffff09;padding:15px 16px}.choice .hint{display:block;color:#b7b9ca;font-size:12px;margin-top:6px;line-height:1.6}.choice:disabled{opacity:.55}.messages{display:grid;gap:14px;margin-bottom:18px}.message{animation:message-in .4s both;animation-delay:var(--delay);font-size:14px}.sender{display:block;color:#bdc7cb;font-size:11px;margin:0 0 5px 4px}.bubble{display:inline-block;border-radius:4px 15px 15px;background:#d6e8dc;color:#263d35;padding:10px 14px;line-height:1.7;max-width:95%}@keyframes message-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}dialog{color:inherit;background:#202535;border:1px solid #ffffff25;border-radius:24px;padding:24px;width:calc(100% - 28px);max-width:450px;max-height:85dvh;overflow-y:auto;box-shadow:0 20px 90px #0007}dialog::backdrop{background:#090c16bb;backdrop-filter:blur(8px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:15px}.dialog-heading h2{margin:0}.dialog-heading button{padding:8px 12px}#menu-tabs{display:flex;gap:7px;overflow-x:auto;margin:0 -5px 24px;padding:4px 5px}#menu-tabs button{white-space:nowrap;font-size:12px;padding:8px 10px}#menu-tabs button[aria-current=true]{color:#f6c7b1;border-color:#e7b69e}.name-fields{display:grid;grid-template-columns:1fr 2fr;gap:12px;margin-bottom:24px}.name-fields label{display:grid;gap:8px;color:#c0c2cf;font-size:13px}input{min-width:0;width:100%;padding:14px;border:1px solid #ffffff30;border-radius:12px;background:#111626;color:#fff}#name-form>button{width:100%;margin:5px 0}.meter-row{margin:16px 0}.meter-label{display:flex;justify-content:space-between;font-size:13px;margin-bottom:8px}.meter{height:6px;background:#ffffff15;border-radius:8px;overflow:hidden}.meter>span{height:100%;display:block;width:var(--value);background:linear-gradient(90deg,#bb96a0,#f3bea4);border-radius:8px}.cast-card{border-bottom:1px solid #ffffff15;padding:16px 0;overflow:hidden;line-height:1.8}.cast-avatar{float:left;width:64px;height:78px;object-fit:cover;border-radius:12px;margin:0 14px 10px 0}.cast-card h3{font-size:16px;margin:0 0 4px}.cast-card p{font-size:13px;color:#c7c5d1;margin:8px 0}.bond-points{font-size:13px;color:#edbdaa}.cast-full{display:block;max-width:100%;max-height:350px;object-fit:contain;margin:12px auto;border-radius:14px}.cg-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.cg-grid img{width:100%;height:95px;object-fit:cover;border-radius:8px}.cg-grid button{font-size:12px;padding:8px}.save-slot{padding:14px 0;border-bottom:1px solid #ffffff1c}.save-slot p{font-size:12px;color:#bfc0ce;line-height:1.8}.save-slot button{margin:0 8px 5px 0;font-size:13px}.toasts{position:absolute;top:90px;right:16px;z-index:10;display:grid;gap:6px;pointer-events:none;max-width:90%}.toast{background:#202535ef;border:1px solid #f5c5a53b;border-radius:12px;padding:10px 14px;font-size:13px;animation:message-in .25s}.cg-dialog{padding:0;border:0;max-width:480px;width:100%;height:100dvh;max-height:100dvh;border-radius:0;background:#111623;animation:message-in .4s}.cg-dialog button{border:0;border-radius:0;padding:0;width:100%;height:100%;position:relative;text-align:center;background:none}.cg-dialog img{width:100%;height:100%;object-fit:contain}.cg-dialog span{position:absolute;bottom:30px;left:0;right:0;font-size:12px;text-shadow:0 1px 8px #000}.review-heading{font-size:14px;color:#f0c0aa;margin-top:24px}.ending{text-align:center;color:#e5bdac;padding:20px 0}.review-portrait{width:44px;height:52px;object-fit:cover;border-radius:9px;vertical-align:middle;margin-right:10px}@media(min-width:600px){body{padding:20px 0}.phone-frame{height:calc(100dvh - 40px);border-radius:28px;border:1px solid #ffffff20}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* 視覺小說式閱讀（2026-10-24）：文字框貼底、點一下出一段，圖片主體露出來 */
.top-actions{display:flex;gap:6px}
.top-actions button{padding:9px 11px;font-size:12px;background:#20253590;min-height:38px}
.cg-layer{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 22%;z-index:-1}
#beat,.next-mark{display:none}
.vn .reader{inset:0;padding:0 10px calc(10px + env(safe-area-inset-bottom));display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;cursor:pointer}
.vn .text-card{margin:0;max-height:64dvh;overflow-y:auto;padding:16px 18px 12px;background:#121624db;border-radius:20px}
.vn #prose{display:none}
.vn #beat{display:block;font-size:16px;line-height:1.85;min-height:3.6em;overflow-wrap:anywhere;animation:message-in .22s}
.vn #beat p{margin:0 0 10px}
.vn #scene-title{margin-bottom:10px}
.vn .messages{margin-bottom:12px}
.vn .next-mark{display:block;text-align:right;font-size:11px;color:#e9b9a5;letter-spacing:.1em;animation:blink 1.4s infinite}
.vn .next-mark[hidden]{display:none}
.vn .choices{margin-top:14px}
@keyframes blink{50%{opacity:.35}}
.vn .portrait{top:11%;bottom:auto;left:50%;width:auto;max-width:none;height:100%;transform:translateX(-50%);object-fit:fill;opacity:1;-webkit-mask-image:linear-gradient(#000 82%,transparent);mask-image:linear-gradient(#000 70%,transparent 88%);filter:drop-shadow(0 6px 14px #0007)}
.vn .portrait.feather{-webkit-mask-image:radial-gradient(ellipse 62% 72% at 50% 46%,#000 58%,transparent 100%);mask-image:radial-gradient(ellipse 62% 72% at 50% 46%,#000 58%,transparent 100%)}
.ui-off header,.ui-off .reader,.ui-off .toasts{display:none!important}
.ui-restore{position:absolute;inset:0;z-index:20;cursor:pointer}
.log-body{font-size:15px;line-height:1.9}
.log-body p{margin:0 0 14px}
.intro-banner{position:absolute;inset:0;z-index:30;display:flex;align-items:flex-end;background:#0b0e18c4;backdrop-filter:blur(6px);cursor:pointer;animation:message-in .35s}
.intro-card{width:100%;max-height:100%;overflow-y:auto;background:linear-gradient(#0000,#151a29 30%);padding-bottom:env(safe-area-inset-bottom)}
.intro-photo{display:block;width:100%;height:46dvh;object-fit:cover;object-position:center 18%;-webkit-mask-image:linear-gradient(#000 70%,transparent);mask-image:linear-gradient(#000 70%,transparent)}
.intro-body{padding:0 22px 22px;margin-top:-56px;position:relative}
.intro-body h2{font-size:28px;margin:6px 0 2px;letter-spacing:.08em}
.intro-body h2 small{display:block;font-size:12px;color:#c9c2cf;letter-spacing:.14em;margin-top:4px}
.intro-role{color:#f0c0aa;font-size:14px;margin:6px 0 10px}
.intro-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.intro-tags span{font-size:12px;padding:4px 10px;border:1px solid #f0bda966;border-radius:20px;color:#f6d9cb}
.intro-text{font-size:14px;line-height:1.85;color:#e8e4ea;margin:0 0 12px}
.intro-body dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:13px;margin:0 0 12px}
.intro-body dt{color:#e9b9a5}
.intro-body dd{margin:0;color:#d6d3dd}
.intro-tap{text-align:center;font-size:12px;color:#b9b6c6;animation:blink 1.4s infinite;margin:0}
.vn .portrait.feather{top:auto;bottom:0;left:0;width:100%;height:86%;transform:none;object-fit:contain;object-position:center bottom}
/* 轉場與動畫（2026-10-25）：立繪登場、換表情、換場黑幕、插畫緩慢推近 */
.fade{position:absolute;inset:0;z-index:5;background:#05070d;opacity:0;pointer-events:none}
.fade.enter{animation:scene-fade .7s ease}
@keyframes scene-fade{0%{opacity:0}35%{opacity:1}100%{opacity:0}}
.vn .portrait.enter{animation:sprite-in .5s ease-out both}
.vn .portrait.swap{animation:sprite-swap .25s ease-out}
@keyframes sprite-in{from{opacity:0;transform:translateX(-50%) translateY(14px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
@keyframes sprite-swap{from{opacity:.55}to{opacity:1}}
.cg-layer:not([hidden]){animation:cg-drift 14s ease-out both}
@keyframes cg-drift{from{transform:scale(1.07)}to{transform:scale(1)}}
/* 背景音樂開關：頂列與標題畫面 */
.bgm-toggle{font-size:15px;line-height:1}
.bgm-title{position:absolute;top:calc(14px + env(safe-area-inset-top));right:14px;padding:9px 12px;min-height:38px;background:#20253590}
