:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#030d0c;--color-bg-elevated:#081715;--color-bg-soft:#10241f;--color-ink:#c8c2b4;--color-ink-muted:#969688;--color-ink-faint:#64675e;--color-accent:#78aa9b;--color-accent-strong:#9bc7b8;--color-border:#9ebfb333;--color-focus:#a8cdbf;--font-sans:"Noto Sans TC", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif:"Noto Serif TC", "Songti TC", "PMingLiU", "MingLiU", serif;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--radius-sm:.375rem;--radius-md:.75rem;--radius-lg:1rem;--content-width:27.5rem;--touch-target:4.5rem}*{box-sizing:border-box}html{background:var(--color-bg);min-width:320px;color:var(--color-ink);font-family:var(--font-sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5}body{background:radial-gradient(circle at 50% -10%, #3b70604d, transparent 32rem), linear-gradient(180deg, #061412 0%, var(--color-bg) 52%, #020807 100%);min-height:100svh;margin:0}button,input{font:inherit}button{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}#root{min-height:100svh}.site-background{background:radial-gradient(circle at 50% 46%, #70b49c0d, transparent 18rem), radial-gradient(circle at 50% 50%, transparent 0 22rem, #0000003d 40rem), linear-gradient(90deg, #0107079e, #030c0b33 38%, #030c0b1f 62%, #010707a8), linear-gradient(180deg, #0005052e, #02080780), var(--site-background-image), linear-gradient(180deg, #061412 0%, var(--color-bg) 48%, #020807 100%);background-position:50%,50%,50%,50%,50%,50%;background-repeat:no-repeat;background-size:cover,cover,cover,cover,cover,cover;background-attachment:fixed,fixed,fixed,fixed,fixed,fixed;min-height:100svh;position:relative;overflow:hidden}@supports (min-height:100dvh){body,#root,.site-background{min-height:100dvh}}.site-background:before{content:"";pointer-events:none;background:linear-gradient(#00000038,#0000 18% 76%,#00000052),radial-gradient(#0000 0 25rem,#00000057 72%);position:fixed;inset:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{z-index:1;background:linear-gradient(#0000,#00000029),radial-gradient(at 0,#0d382f1f,#0000 18rem),radial-gradient(at right 72%,#08433f1f,#0000 18rem);place-items:center;min-height:100svh;padding:0;display:grid;position:relative}.reading-frame{background:linear-gradient(180deg, #0209081f 0%, #0209083d 42%, #020908db 100%), linear-gradient(90deg, #02080757, transparent 34%, transparent 66%, #02080757), var(--main-background-image), radial-gradient(ellipse at center 58%, #0b4a4124, transparent 18rem), var(--color-bg);background-position:50%,50%,top,50%,50%;background-repeat:no-repeat,no-repeat,no-repeat,no-repeat,no-repeat;background-size:cover,cover,cover,cover,cover;border:0;border-radius:0;flex-direction:column;width:100vw;height:100svh;min-height:100svh;max-height:100svh;margin:0 auto;display:flex;position:relative;overflow:hidden;box-shadow:0 2rem 7rem #0000005c,inset 0 -8rem 8rem #00000038}@supports (height:100dvh){.app-shell{min-height:100dvh}.reading-frame{height:100dvh;min-height:100dvh;max-height:100dvh}}.page-header{align-items:start;gap:var(--space-3);padding:max(var(--space-6), calc(env(safe-area-inset-top) + var(--space-4))) var(--space-4) var(--space-4);text-align:center;z-index:4;pointer-events:none;background:0 0;border-bottom:0;grid-template-columns:3rem 1fr 3rem;display:grid;position:relative}.page-header:after{content:"";z-index:-1;pointer-events:none;background:linear-gradient(#02090894 0%,#02090861 58%,#02090800 100%);position:absolute;inset:0 0 -3.5rem}.icon-button{width:2.75rem;height:2.75rem;color:var(--color-accent-strong);opacity:.7;pointer-events:auto;background:0 0;border:0;place-items:center;display:grid}.page-header h1{color:#b8d8cbc7;font-family:var(--font-serif);letter-spacing:.18em;text-shadow:0 0 1.2rem #71c6a929;margin:0;font-size:clamp(1.45rem,6.6vw,1.82rem);font-weight:500;line-height:1.2}.menu-button{justify-self:start}.record-button{justify-self:end}.icon-button svg,.action-icon svg,.free-action button svg{display:block}.title-rule{height:1.25rem;margin-top:var(--space-3);grid-column:2;justify-content:center;align-items:center;display:flex}.title-rule:before,.title-rule:after{content:"";background:linear-gradient(90deg,#0000,#a6d2bf73);flex:1;height:1px}.title-rule:after{background:linear-gradient(90deg,#a6d2bf73,#0000)}.title-rule span{width:.42rem;height:.42rem;margin:0 var(--space-2);background:#a6d2bf94;border:1px solid #a6d2bfa6;transform:rotate(45deg)}.scene-meta{margin:var(--space-1) 0 0;color:#adab9ab8;font-family:var(--font-serif);letter-spacing:.1em;grid-column:1/-1;font-size:clamp(.92rem,4vw,1.06rem);font-weight:400;display:block}.scene{position:absolute;inset:0;overflow:hidden}.scene-hero-image{z-index:0;opacity:.72;pointer-events:none;background-position:50%;background-repeat:no-repeat;background-size:cover;height:min(36svh,19rem);position:absolute;top:clamp(8.4rem,19svh,10.8rem);left:0;right:0;-webkit-mask-image:linear-gradient(#0000 0,#000 8% 62%,#0000 100%);mask-image:linear-gradient(#0000 0,#000 8% 62%,#0000 100%)}.scene-hero-image:after{content:"";background:radial-gradient(circle at 50% 34%,#84ddc21f,#0000 7rem),linear-gradient(#02090814,#02090838 58%,#020908b8),linear-gradient(90deg,#02080752,#0000 34% 66%,#02080752);position:absolute;inset:0}.scene-scroll{z-index:2;overscroll-behavior:contain;height:100%;padding:min(48svh, 25rem) var(--space-5) max(4rem, calc(env(safe-area-inset-bottom) + 4rem));scrollbar-width:none;-webkit-overflow-scrolling:touch;position:relative;overflow:auto;-webkit-mask-image:linear-gradient(#0000 0 12.25rem,#000 17rem 100%);mask-image:linear-gradient(#0000 0 12.25rem,#000 17rem 100%)}.scene-scroll::-webkit-scrollbar{display:none}.scene-atmosphere{z-index:1;pointer-events:none;background-color:#0000;background-image:linear-gradient(#00000005 0%,#030d0c0a 38%,#030d0c2e 100%),linear-gradient(90deg,#0208071f,#0000 42%,#0208072e),radial-gradient(circle at 50% 38%,#91e2c72e,#0000 5rem);background-position:50%,50%;background-repeat:no-repeat;background-size:cover,cover;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;margin:0;position:absolute;inset:0;box-shadow:inset 0 6rem 5rem #0209081f,inset 0 -8rem 7rem #030d0c6b}.story-block{gap:var(--space-4);margin-bottom:var(--space-8);color:#cac5b7db;font-family:var(--font-serif);letter-spacing:.055em;text-shadow:0 1px .55rem #000000d1,0 0 .07rem #dcd6c629;font-size:clamp(1rem,4.15vw,1.12rem);font-weight:400;line-height:1.92;display:grid}.story-block p{margin:0}.story-divider{width:64%;height:1rem;margin:var(--space-3) 0;justify-self:center;align-items:center;display:flex}.story-divider:before,.story-divider:after{content:"";background:linear-gradient(90deg,#0000,#7fb5a261);flex:1;height:1px}.story-divider:after{background:linear-gradient(90deg,#7fb5a261,#0000)}.keeper-thinking{justify-items:center;gap:var(--space-3);margin:0 0 var(--space-8);color:#969688d1;font-family:var(--font-serif);letter-spacing:.05em;text-align:center;display:grid}.keeper-thinking p,.keeper-thinking small{margin:0}.keeper-thinking small{color:#78aa9b9e;max-width:92%;font-size:.78rem;line-height:1.6}.ink-bloom{aspect-ratio:1;filter:blur(.5px);opacity:.72;transform-origin:50%;background:radial-gradient(circle at 48% 52%,#294f45cc,#0000 42%),radial-gradient(circle at 37% 38%,#65937f2e,#0000 32%),radial-gradient(circle at 62% 35%,#13342f99,#0000 38%);border-radius:45% 55% 48% 52%;width:5.5rem;animation:2.6s ease-in-out infinite inkBloom}.action-options{gap:var(--space-3);margin-top:0;display:grid}.action-button{align-items:center;gap:var(--space-4);width:100%;min-height:3.75rem;padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);color:#cfc9bbe6;font-family:var(--font-serif);letter-spacing:.055em;text-align:left;background:linear-gradient(90deg,#081513c2,#11252194),#0208077a;grid-template-columns:2.45rem 1px 1fr;font-size:clamp(.96rem,3.9vw,1.08rem);font-weight:400;transition:background-color .16s,border-color .16s,color .16s,transform .16s;display:grid;box-shadow:inset 0 0 1.8rem #79b8a40f,0 .8rem 2rem #0000003d}.action-button:hover{color:#d5cfc1f2;border-color:#a6d2bf6b}.action-button:active{transform:scale(.992)}.action-button:disabled,.free-action input:disabled,.free-action button:disabled{cursor:wait;opacity:.58}.action-icon{color:var(--color-accent);opacity:.82;place-items:center;line-height:1;display:grid}.action-separator{background:#acd6c62e;width:1px;height:1.65rem}.free-action{gap:var(--space-2);margin-top:var(--space-8);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-2);background:linear-gradient(90deg,#081513b8,#11252185),#02080770;grid-template-columns:1fr 3.2rem;display:grid;box-shadow:inset 0 0 1.6rem #79b8a40f,0 .8rem 2rem #00000047}.free-action input{color:#ccc6b8e6;min-width:0;min-height:3.15rem;font-family:var(--font-serif);letter-spacing:.04em;padding:0 var(--space-4);background:0 0;border:0;border-right:1px solid #acd6c629;border-radius:0;font-size:1rem;line-height:1.5}.free-action input::placeholder{color:#7d84799e}.free-action button{color:#b2d8c9e0;background:#7fb5a257;border:0;border-radius:50%;place-self:center;place-items:center;width:3.05rem;height:3.05rem;padding:0;line-height:1;transition:background-color .16s,transform .16s;display:grid}.free-action button:active{transform:scale(.96)}.check-notice,.keeper-error{color:#bfbaabe0;font-family:var(--font-serif);letter-spacing:.04em;margin:0 0 var(--space-5);padding:var(--space-3) var(--space-4);background:linear-gradient(#0d1b1685,#050e0c99),#04100e70;border:1px solid #96b09c29;line-height:1.7}.check-notice p,.keeper-error p{margin:0}.check-notice p+p{margin-top:var(--space-3)}.check-notice span{color:#8fb7a6eb;margin-right:var(--space-2)}.check-notice strong{color:#cac3b0f5;margin-right:var(--space-3);font-weight:400}.check-roll-button{align-items:center;gap:var(--space-3);width:100%;min-height:3.15rem;margin-top:var(--space-4);border-radius:var(--radius-md);color:#cac3b0f0;font-family:var(--font-serif);letter-spacing:.12em;text-align:left;padding:var(--space-2) var(--space-3);background:linear-gradient(90deg,#16261fb8,#08110ebd),#07100eb8;border:1px solid #8fb7a647;grid-template-columns:3.1rem 1fr;font-size:1rem;display:grid}.check-roll-button:disabled{cursor:default;opacity:.64}.d100-die,.result-die{aspect-ratio:1;color:#cac3b0f5;font-family:var(--font-serif);background:radial-gradient(circle at 35% 25%,#d2e7dc24,#0000 36%),linear-gradient(145deg,#102621eb,#030c0bf0);border:1px solid #8fb7a657;place-items:center;display:grid;box-shadow:inset 0 0 1.4rem #79b8a414,0 .75rem 1.5rem #0000003d}.d100-die{letter-spacing:.04em;border-radius:28% 34% 30% 32%;width:2.45rem;font-size:.78rem}.dice-stage{z-index:8;-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);pointer-events:auto;background:radial-gradient(circle,#122a242e,#0000 8rem),radial-gradient(circle,#0000002e,#0000 18rem),#0107076b;place-items:center;display:grid;position:fixed;inset:0}.result-die{letter-spacing:0;cursor:pointer;pointer-events:auto;border-style:solid;border-radius:26% 33% 28% 35%;width:min(38vw,11rem);font-size:clamp(2.4rem,14vw,4.8rem);animation:.42s cubic-bezier(.16,1,.3,1) both diceReveal}.result-die.rolling{color:#cac3b0d1;letter-spacing:.08em;pointer-events:none;font-size:clamp(1.2rem,7vw,2rem);animation:1.05s cubic-bezier(.22,1,.36,1) both diceRoll}.result-die[data-outcome=success]{box-shadow:inset 0 0 1.6rem #79b8a424,0 0 2.8rem #569ecd57,0 0 6rem #569ecd2e}.result-die[data-outcome=failure]{box-shadow:inset 0 0 1.6rem #79b8a414,0 0 2.8rem #b43a3657,0 0 6rem #b43a362e}.keeper-error{color:#d2a596e6;border-color:#9c272257}.keeper-retry-button{margin-top:var(--space-4);border-radius:var(--radius-sm);color:#debbadeb;min-height:2.8rem;font-family:var(--font-serif);letter-spacing:.12em;padding:0 var(--space-4);background:linear-gradient(90deg,#2812108f,#0c1512a3),#07100eb8;border:1px solid #d2a59647;font-size:.94rem}.keeper-retry-button:disabled{cursor:wait;opacity:.58}.character-overlay{z-index:10;padding:var(--space-3);font-family:var(--font-serif);align-items:end;display:grid;position:absolute;inset:0}.character-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:radial-gradient(circle at 50% 18%,#6ea69114,#0000 18rem),repeating-linear-gradient(#b4cdbe06 0 1px,#0000 1px 4px),#010606c7;border:0;animation:.26s ease-out both backdropFadeIn;position:absolute;inset:0}.character-overlay[data-closing=true] .character-backdrop{animation:.22s ease-in both backdropFadeOut}.character-panel{color:#bfbaabe6;scrollbar-width:none;will-change:transform, opacity;background:url(/assets/images/sheet-bg.png) 50%/cover no-repeat;border:0;border-radius:0;width:100%;min-height:min(82svh,43rem);max-height:min(88svh,46rem);padding:0;animation:.52s cubic-bezier(.16,1,.3,1) both sheetSlideIn;position:relative;overflow:hidden;box-shadow:0 1.5rem 4rem #0000007a}.character-overlay[data-closing=true] .character-panel{animation:.28s cubic-bezier(.7,0,.84,0) both sheetSlideOut}.record-tabs{z-index:2;pointer-events:auto;align-items:end;gap:.18rem;display:flex;position:absolute;top:min(25.5svh,11.4rem);left:12%;right:12%}.record-tabs:after{content:"";opacity:.72;pointer-events:none;border:2px solid #aaaa9473;border-left-color:#0000;border-radius:0 .75rem .75rem 0;width:1.6rem;height:3.3rem;position:absolute;top:-1.9rem;right:-.45rem;transform:rotate(18deg)}.record-tab{color:#969688e0;min-width:3.25rem;height:2rem;font-family:var(--font-serif);letter-spacing:.08em;padding:0 var(--space-2);background:linear-gradient(#16261fb8,#08110ebd),#07100eb8;border:1px solid #96b09c29;border-bottom:0;border-radius:.55rem .55rem 0 0;font-size:.82rem;transform:translateY(.35rem)}.record-tab[data-active=true]{color:#cac3b0f0;background:linear-gradient(#283a2fbd,#0c1b17db),#0c1b17db;border-color:#96b09c47;height:2.35rem;transform:translateY(0)}.character-content{top:min(29.5svh,13.25rem);left:12%;right:12%;bottom:max(var(--space-8), env(safe-area-inset-bottom));scrollbar-width:none;padding-right:.2rem;position:absolute;overflow:auto;-webkit-mask-image:linear-gradient(#0000 0,#000 1.5rem calc(100% - 1.75rem),#0000 100%);mask-image:linear-gradient(#0000 0,#000 1.5rem calc(100% - 1.75rem),#0000 100%)}.character-content::-webkit-scrollbar{display:none}.character-panel-header:before{content:"RESTRICTED\a 機密";z-index:1;color:#b8362f9e;width:6.5rem;height:3.2rem;font-family:var(--font-sans);letter-spacing:.12em;white-space:pre;text-align:center;text-transform:uppercase;mix-blend-mode:screen;opacity:.82;border:2px solid #9c272294;place-items:center;font-size:.82rem;font-weight:700;line-height:1.05;display:grid;top:-2.2rem;left:-1.8rem;transform:rotate(-13deg);box-shadow:inset 0 0 0 1px #9c272238,0 0 .35rem #9c272214}.character-panel-header{justify-content:space-between;align-items:start;gap:var(--space-4);padding-bottom:var(--space-4);margin-bottom:var(--space-4);border-bottom:1px solid #96b09c2e;display:flex;position:relative}.character-kicker{margin:0 0 var(--space-1);color:#829c89db;font-family:var(--font-sans);letter-spacing:.16em;font-size:.68rem}.character-panel h2,.character-panel h3{color:#c2c5b2e6;font-family:var(--font-serif);margin:0;font-weight:400}.character-panel h2{letter-spacing:.16em;font-size:1.55rem}.character-panel h3{margin-bottom:var(--space-3);padding-left:var(--space-3);letter-spacing:.12em;border-left:1px solid #78aa9b75;font-size:.96rem}.character-close{border-radius:var(--radius-sm);color:#c2c5b2b8;background:#0d1b167a;border:1px solid #96b09c33;width:2.2rem;height:2.2rem;font-size:1.35rem;line-height:1}.character-note{margin:0 0 var(--space-5);color:#969688d1;letter-spacing:.04em;font-size:.86rem;line-height:1.7}.character-summary,.stat-grid,.skill-list{margin:0;display:grid}.character-summary{gap:var(--space-2);margin-bottom:var(--space-5);grid-template-columns:repeat(2,minmax(0,1fr))}.character-summary div,.stat-grid div,.skill-list div{background:linear-gradient(#0d1b1666,#050e0c80),#04100e61;border:1px solid #96b09c24}.character-summary div{border-radius:var(--radius-sm);padding:var(--space-3)}.character-summary dt,.stat-grid dt,.skill-list dt{color:#859080e0;font-family:var(--font-sans);letter-spacing:.12em;text-transform:uppercase;font-size:.68rem}.character-summary dd,.stat-grid dd,.skill-list dd{margin:var(--space-1) 0 0;color:#cac3b0eb;font-family:var(--font-serif)}.character-section+.character-section{margin-top:var(--space-5)}.stat-grid{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr))}.stat-grid div{padding:var(--space-2);text-align:center;border-radius:0}.stat-grid dd{font-size:1.08rem}.skill-list{gap:var(--space-2)}.skill-list div{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:0;display:flex}.skill-list dd{color:#8fb7a6e0;margin:0}.gear-list{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.gear-list li{border-radius:var(--radius-sm);color:#bfbaabd6;padding:var(--space-2) var(--space-3);background:#04100e61;border:1px solid #96b09c24;font-size:.86rem}.record-card-list{gap:var(--space-3);display:grid}.record-card{padding:var(--space-3);background:linear-gradient(#0d1b1666,#050e0c80),#04100e61;border:1px solid #96b09c24}.record-card h4{margin:0 0 var(--space-2);color:#cac3b0eb;font-family:var(--font-serif);letter-spacing:.08em;font-size:1rem;font-weight:400}.record-card p{color:#969688db;letter-spacing:.04em;margin:0;font-size:.9rem;line-height:1.75}.record-log{gap:var(--space-3);counter-reset:record-log;margin:0;padding:0;list-style:none;display:grid}.record-log li{counter-increment:record-log;color:#bfbaabdb;letter-spacing:.04em;padding-left:var(--space-4);border-left:1px solid #78aa9b57;line-height:1.7;position:relative}.record-log li:before{content:counter(record-log, decimal-leading-zero);color:#78aa9bb8;font-family:var(--font-sans);letter-spacing:.08em;font-size:.68rem;position:absolute;top:0;left:.45rem;transform:translate(-100%)}@keyframes sheetSlideIn{0%{opacity:0;transform:translateY(42%)scale(.985)}65%{opacity:1}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes diceRoll{0%{opacity:0;transform:translate(-36vw,24vh)rotate(-80deg)scale(.55)}32%{opacity:1;transform:translate(18vw,-12vh)rotate(210deg)scale(.8)}64%{transform:translate(-8vw,6vh)rotate(520deg)scale(1.05)}to{opacity:1;transform:translate(0)rotate(720deg)scale(1)}}@keyframes diceReveal{0%{opacity:0;transform:scale(.72)rotate(-8deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes inkBloom{0%{opacity:.4;border-radius:46% 54% 50% 50%;transform:scale(.74)rotate(0)}45%{opacity:.78;border-radius:58% 42% 44% 56%;transform:scale(1.08)rotate(11deg)}to{opacity:.42;border-radius:45% 55% 54% 46%;transform:scale(.82)rotate(21deg)}}@keyframes sheetSlideOut{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(36%)scale(.99)}}@keyframes backdropFadeIn{0%{opacity:0}to{opacity:1}}@keyframes backdropFadeOut{0%{opacity:1}to{opacity:0}}@media (width>=48rem){.app-shell{padding:0}.reading-frame{border-inline:1px solid #b0c4a633;width:min(100vw,46.1538svh);min-width:20rem;height:100svh;box-shadow:0 0 0 1px #79b8a414,0 1.6rem 3.2rem #0000007a,0 3.4rem 8rem #00000085,-1.4rem 0 4rem #00000057,1.4rem 0 4rem #00000057,inset 0 0 0 1px #bee0cc0a,inset 0 0 5rem #79b8a409,inset 0 -8rem 8rem #00000038}.action-options{gap:var(--space-4)}.action-button{gap:var(--space-5);min-height:4.2rem;padding:var(--space-3) var(--space-5);grid-template-columns:2.75rem 1px 1fr;font-size:clamp(1rem,1.4vw,1.12rem)}.action-separator{height:1.9rem}.free-action{gap:var(--space-3);margin-top:var(--space-10);padding:var(--space-3);grid-template-columns:1fr 3.55rem}.free-action input{min-height:3.45rem;font-size:1rem}.free-action button{width:3.45rem;height:3.45rem}}@media (width>=48rem) and (height<=48rem){.reading-frame{width:min(100vw,46.1538svh)}.scene-atmosphere{min-height:14rem}.story-block{gap:var(--space-3);font-size:.96rem;line-height:1.72}}
