*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.right-0{right:0}.right-2{right:.5rem}.top-0{top:0}.top-2{top:.5rem}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.ml-2{margin-left:.5rem}.mt-1{margin-top:.25rem}.block{display:block}.inline-block{display:inline-block}.grid{display:grid}.hidden{display:none}.h-16{height:4rem}.h-20{height:5rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-8{height:2rem}.h-auto{height:auto}.h-full{height:100%}.max-h-\[400px\]{max-height:400px}.max-h-\[90vh\]{max-height:90vh}.w-16{width:4rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-8{width:2rem}.w-full{width:100%}.max-w-2xl{max-width:42rem}.flex-1{flex:1 1 0%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.justify-end{justify-content:flex-end}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-blue-500\/30{border-color:#3b82f64d}.border-green-500\/30{border-color:#22c55e4d}.border-primary-500{--tw-border-opacity: 1;border-color:rgb(14 165 233 / var(--tw-border-opacity, 1))}.border-white\/10{border-color:#ffffff1a}.border-white\/20{border-color:#fff3}.border-yellow-500\/30{border-color:#eab3084d}.border-t-transparent{border-top-color:transparent}.bg-\[var\(--bg-card\)\]{background-color:var(--bg-card)}.bg-black\/20{background-color:#0003}.bg-black\/60{background-color:#0009}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-500\/10{background-color:#3b82f61a}.bg-green-500\/10{background-color:#22c55e1a}.bg-primary-500{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity, 1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/5{background-color:#ffffff0d}.bg-yellow-500\/10{background-color:#eab3081a}.bg-yellow-500\/80{background-color:#eab308cc}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pt-0{padding-top:0}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.uppercase{text-transform:uppercase}.italic{font-style:italic}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-primary-400{--tw-text-opacity: 1;color:rgb(56 189 248 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-blue-500\/50{--tw-ring-color: rgb(59 130 246 / .5)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--primary: #5c6ac4;--primary-hover: #4959bd;--primary-soft: rgba(92, 106, 196, .08);--primary-border: rgba(92, 106, 196, .2);--success: #008060;--warning: #b98900;--danger: #d72c0d;--bg-app: #f6f6f7;--bg-card: #ffffff;--bg-subtle: #fafbfb;--bg-muted: #f1f2f3;--bg-hover: #f4f5f6;--bg-secondary: #f1f2f3;--bg-elevated: #ffffff;--text-default: #202223;--text-subdued: #6d7175;--text-disabled: #8c9196;--text-muted: #8c9196;--text-secondary: #6d7175;--text-primary: #202223;--text-on-primary: #ffffff;--text-content: #000000;--border-subdued: #e1e3e5;--border-default: #c9cccf;--border-hover: #babfc4;--border: #e1e3e5;--shadow-card: 0 0 0 1px rgba(63, 63, 68, .05), 0 1px 3px 0 rgba(63, 63, 68, .15);--shadow-popover: 0 0 0 1px rgba(63, 63, 68, .05), 0 5px 15px 0 rgba(0, 0, 0, .15);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--font-family: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 14.5px;--fs-md: 15.5px;--fs-lg: 17px;--fs-xl: 21px;--fs-2xl: 26px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--motion: .15s ease;--motion-slow: .3s cubic-bezier(.4, 0, .2, 1);--motion-spring: .4s cubic-bezier(.34, 1.56, .64, 1)}[data-theme=dark],:root:not([data-theme=light]):is(.prefers-dark){--bg-app: #1a1a1a;--bg-card: #232323;--bg-subtle: #282828;--bg-muted: #363636;--bg-hover: #303030;--bg-secondary: #2a2a2a;--bg-elevated: #2e2e2e;--text-default: #e3e3e3;--text-subdued: #a0a0a0;--text-disabled: #7a7a7a;--text-muted: #7a7a7a;--text-secondary: #a0a0a0;--text-primary: #e3e3e3;--text-content: #ffffff;--text-on-primary: #ffffff;--border-subdued: #333333;--border-default: #444444;--border-hover: #555555;--border: #333333;--primary-soft: rgba(92, 106, 196, .15);--shadow-card: 0 0 0 1px rgba(255, 255, 255, .05), 0 1px 3px 0 rgba(0, 0, 0, .4);--shadow-popover: 0 0 0 1px rgba(255, 255, 255, .05), 0 5px 15px 0 rgba(0, 0, 0, .5)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]){--bg-app: #1a1a1a;--bg-card: #232323;--bg-subtle: #282828;--bg-muted: #363636;--bg-hover: #303030;--bg-secondary: #2a2a2a;--bg-elevated: #2e2e2e;--text-default: #e3e3e3;--text-subdued: #a0a0a0;--text-disabled: #7a7a7a;--text-muted: #7a7a7a;--text-secondary: #a0a0a0;--text-primary: #e3e3e3;--text-content: #ffffff;--text-on-primary: #ffffff;--border-subdued: #333333;--border-default: #444444;--border-hover: #555555;--border: #333333;--primary-soft: rgba(92, 106, 196, .15);--shadow-card: 0 0 0 1px rgba(255, 255, 255, .05), 0 1px 3px 0 rgba(0, 0, 0, .4);--shadow-popover: 0 0 0 1px rgba(255, 255, 255, .05), 0 5px 15px 0 rgba(0, 0, 0, .5)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);font-size:var(--fs-base);line-height:1.6;color:var(--text-default);background:var(--bg-app);min-height:100vh;transition:background var(--motion),color var(--motion)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:920px;margin:0 auto;padding:var(--sp-6)}.theme-toggle{position:fixed;top:var(--sp-4);right:var(--sp-4);z-index:1000;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--bg-card);border:1px solid var(--border-subdued);border-radius:var(--radius-md);cursor:pointer;font-size:14px;box-shadow:var(--shadow-card);transition:background var(--motion),border-color var(--motion),box-shadow var(--motion)}.theme-toggle:hover{background:var(--bg-hover)}@media (max-width: 640px){.container{padding:var(--sp-4)}.post-title-bar{flex-direction:column;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-3)}.title-right{width:100%;flex-wrap:wrap}.post-lead,.reply-body{flex-direction:column;padding:var(--sp-4);gap:var(--sp-3)}.post-lead .post-icon img,.reply-body .post-icon img{width:72px;height:72px}.charlist-grid{grid-template-columns:1fr}.charlist-header{flex-direction:column;align-items:flex-start;gap:var(--sp-2)}.login-card{padding:var(--sp-4)}.wf{padding:var(--sp-3)}.wf-avatar{width:56px;height:56px}.wf-select,.wf-input{height:32px;font-size:13px;padding:0 8px}.wf-select-loc{max-width:110px}.wf-extra{flex-direction:column;align-items:stretch}.wf-textarea{min-height:120px;font-size:16px;padding:var(--sp-2)}.wf-statusbar{font-size:11px;padding:3px 8px}.wf-statusbar-hint{font-size:10px}.wf-preview{padding:var(--sp-2);font-size:13px;margin-bottom:var(--sp-2)}.wf-actions{gap:var(--sp-2)}}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary);outline-offset:2px;box-shadow:0 0 0 4px var(--primary-soft)}.skip-link{position:absolute;top:-100%;left:50%;transform:translate(-50%);background:var(--primary);color:#fff;padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-md);z-index:9999;text-decoration:none;font-weight:600;transition:top .2s}.skip-link:focus{top:var(--sp-2)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.text-center{text-align:center}.mt-1{margin-top:var(--sp-1)}.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.mt-5{margin-top:var(--sp-5)}.mb-1{margin-bottom:var(--sp-1)}.mb-2{margin-bottom:var(--sp-2)}.mb-3{margin-bottom:var(--sp-3)}.mb-4{margin-bottom:var(--sp-4)}.mb-5{margin-bottom:var(--sp-5)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.skeleton{background:var(--bg-muted);border-radius:var(--radius-sm);position:relative;overflow:hidden}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.4) 50%,transparent 100%);animation:skeleton-shimmer 1.8s infinite}[data-theme=dark] .skeleton:after{background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.08) 50%,transparent 100%)}@keyframes skeleton-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes slide-in-right{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slide-out-right{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.page-enter{animation:page-fade-in .3s cubic-bezier(.4,0,.2,1) both}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.header{background:#ffffffd9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border-subdued);position:sticky;top:0;z-index:100;transition:background var(--motion-slow),box-shadow var(--motion-slow)}[data-theme=dark] .header{background:#1a1a1ad9}.header-inner{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-2) var(--sp-4);max-width:920px;margin:0 auto;gap:var(--sp-3);overflow:hidden}.header-left{display:flex;align-items:center;gap:var(--sp-3);min-width:0}.header-logo{font-size:var(--fs-xl);font-weight:700;color:var(--text-default);text-decoration:none;letter-spacing:-.03em}.header-logo:hover{text-decoration:none;opacity:.8}.header-nav{display:flex;gap:var(--sp-1);align-items:center}.header-nav a{color:var(--text-subdued);font-size:var(--fs-base);padding:6px 10px;border-radius:var(--radius-sm);text-decoration:none;white-space:nowrap;transition:color var(--motion),background var(--motion)}.header-nav a:hover{color:var(--text-default);background:var(--bg-hover);text-decoration:none}.header-right{display:flex;align-items:center;gap:var(--sp-2)}.header-utils{display:flex;align-items:center;gap:2px}.header-divider{width:1px;height:16px;background:var(--border-subdued);flex-shrink:0}.header-icon-btn{display:flex;align-items:center;gap:4px;background:none;border:none;padding:6px 10px;min-height:36px;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-sm);color:var(--text-subdued);white-space:nowrap;transition:color var(--motion),background var(--motion)}.header-icon-btn:hover{color:var(--text-default);background:var(--bg-hover)}.header-icon-btn:active{transform:scale(.95)}.header-user{display:flex;align-items:center;gap:2px}.btn-logout,.btn-login{background:var(--bg-card);border:1px solid var(--border-subdued);padding:6px 12px;min-height:36px;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-sm);color:var(--text-subdued);white-space:nowrap;transition:background var(--motion),color var(--motion),border-color var(--motion)}.btn-logout:hover,.btn-login:hover{background:var(--bg-hover);color:var(--text-default)}.header-mobile-actions{display:none;align-items:center;gap:4px;margin-left:auto}.header-hamburger{display:flex;align-items:center;justify-content:center;background:none;border:1px solid var(--border-subdued);border-radius:var(--radius-sm);width:36px;height:36px;font-size:18px;color:var(--text-subdued);cursor:pointer;transition:background var(--motion),color var(--motion)}.header-hamburger:hover{background:var(--bg-hover);color:var(--text-default)}.header-mobile-menu{border-top:1px solid var(--border-subdued);padding:var(--sp-3) var(--sp-4);background:var(--bg-card)}.header-mobile-nav{display:flex;flex-direction:column;gap:2px;padding-bottom:var(--sp-3);border-bottom:1px solid var(--border-subdued);margin-bottom:var(--sp-3)}.header-mobile-nav a{display:block;padding:var(--sp-3) var(--sp-3);color:var(--text-subdued);font-size:var(--fs-md);text-decoration:none;border-radius:var(--radius-sm);transition:background var(--motion),color var(--motion)}.header-mobile-nav a:hover{background:var(--bg-hover);color:var(--text-default)}.header-mobile-user{display:flex;flex-direction:column;gap:2px}.header-mobile-link{display:block;width:100%;text-align:left;padding:var(--sp-2) var(--sp-3);background:none;border:none;color:var(--text-subdued);font-size:var(--fs-base);cursor:pointer;border-radius:var(--radius-sm);transition:background var(--motion),color var(--motion)}.header-mobile-link:hover{background:var(--bg-hover);color:var(--text-default)}.header-mobile-logout{color:#e74c3c}.notice-box{background:var(--primary-soft);border-radius:var(--radius-md);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-4);font-size:var(--fs-sm);color:var(--text-default);border-left:3px solid var(--primary)}.weather-box{background:var(--bg-card);border:1px solid var(--border-subdued);border-radius:var(--radius-md);padding:var(--sp-2) var(--sp-4);margin-bottom:var(--sp-4);font-size:var(--fs-sm);color:var(--text-subdued);text-align:center}@media (max-width: 768px){.header-inner{padding:var(--sp-2) var(--sp-3)}.header-nav-desktop,.header-right-desktop{display:none!important}.header-mobile-actions{display:flex!important}}.post-container{background:var(--bg-card);border-radius:var(--radius-lg);margin-bottom:24px;box-shadow:var(--shadow-card);overflow:hidden;transition:box-shadow var(--motion-slow),transform var(--motion-slow);animation:card-enter .4s cubic-bezier(.4,0,.2,1) both}.post-container:hover{box-shadow:0 0 0 1px #3f3f440d,0 4px 16px #3f3f442e}[data-theme=dark] .post-container:hover{box-shadow:0 0 0 1px #ffffff14,0 4px 16px #00000080}@keyframes card-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.page-enter,.container{animation:page-fade-in .25s ease both}@keyframes page-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.empty-state{text-align:center;padding:var(--sp-10);color:var(--text-disabled)}.empty-state-icon{font-size:48px;margin-bottom:var(--sp-3)}.empty-state-text{font-size:var(--fs-base);color:var(--text-subdued)}.empty-state-hint{margin-top:var(--sp-2);font-size:var(--fs-sm);color:var(--text-disabled)}.export-menu-item{width:100%;padding:10px 16px;border:none;background:none;text-align:left;cursor:pointer;color:var(--text-default);font-size:var(--fs-sm);font-family:var(--font-family);transition:background var(--motion)}.export-menu-item:hover{background:var(--bg-hover)}.post-icon-link{display:block;text-decoration:none;transition:transform var(--motion),box-shadow var(--motion);border-radius:var(--radius-md)}.post-icon-link:hover{transform:scale(1.05);box-shadow:0 0 0 2px var(--primary-soft)}@keyframes toast-progress{0%{width:100%}to{width:0%}}@keyframes spin{to{transform:rotate(360deg)}}.post-container:nth-child(1){animation-delay:0ms}.post-container:nth-child(2){animation-delay:60ms}.post-container:nth-child(3){animation-delay:.12s}.post-container:nth-child(4){animation-delay:.18s}.post-container:nth-child(5){animation-delay:.24s}.post-container:nth-child(6){animation-delay:.3s}.post-container:nth-child(7){animation-delay:.36s}.post-container:nth-child(8){animation-delay:.42s}.post-container:nth-child(9){animation-delay:.48s}.post-container:nth-child(10){animation-delay:.54s}.post-title-bar{padding:var(--sp-3) var(--sp-5);display:flex;justify-content:space-between;align-items:center;background:var(--primary);border-radius:var(--radius-md) var(--radius-md) 0 0}.title-left{display:flex;align-items:center;gap:var(--sp-3)}.post-number{font-weight:700;font-size:var(--fs-base);color:#fff}.post-meta{color:#fffc;font-size:var(--fs-sm)}.title-right{display:flex;gap:var(--sp-1);align-items:center}.action-link,.action-button{color:#ffffffe6;font-size:var(--fs-sm);padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-sm);background:none;border:none;cursor:pointer;transition:color var(--motion),background var(--motion)}.action-button:disabled{opacity:.5;cursor:not-allowed}.action-link:hover,.action-button:hover{color:#fff;background:#fff3;text-decoration:none}.post-lead{display:flex;padding:var(--sp-5);gap:var(--sp-5)}.post-icon{flex-shrink:0}.post-icon img{width:120px;height:120px;-o-object-fit:cover;object-fit:cover;border-radius:var(--radius-md);cursor:zoom-in;transition:transform var(--motion-slow),box-shadow var(--motion-slow);box-shadow:0 2px 8px #0000001a}.post-icon img:hover{transform:scale(1.05);box-shadow:0 4px 16px #0000002e}.post-text{flex:1;min-width:0}.char-name,.char-name-dark{font-weight:700;font-size:var(--fs-xl);color:var(--text-default);margin-bottom:var(--sp-2);display:block;letter-spacing:-.01em}.post-content{font-size:var(--fs-md);line-height:1.85;color:var(--text-content);word-break:break-word;white-space:pre-wrap;min-height:4em}.post-content img{cursor:zoom-in;max-width:100%;border-radius:var(--radius-sm)}.post-content strong{color:inherit;font-weight:600}.post-content em{color:inherit;font-style:italic}.post-date{font-size:var(--fs-xs);color:var(--text-disabled);margin-top:var(--sp-2)}.post-reply{border-top:2px solid var(--border-default);border-left:3px solid var(--primary-border);background:var(--bg-subtle);margin-top:0;animation:reply-enter .3s cubic-bezier(.4,0,.2,1) both}.post-reply+.post-reply{border-top:1px solid var(--border-subdued)}@keyframes reply-enter{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.reply-header{padding:var(--sp-3) var(--sp-5);display:flex;justify-content:space-between;align-items:center;background:var(--bg-subtle);border-bottom:1px solid var(--border-subdued)}.reply-header .action-link,.reply-header .action-button{color:var(--text-subdued);background:var(--bg-muted);border:1px solid var(--border-subdued);padding:4px 10px;border-radius:var(--radius-sm)}.reply-header .action-link:hover,.reply-header .action-button:hover{color:var(--primary);background:var(--bg-hover);border-color:var(--primary-border)}.reply-header .action-button[style*="color: #ef4444"],.reply-header .action-button[style*="color:#ef4444"]{color:#ef4444!important;border-color:#ef44444d}.reply-header .action-button[style*="color: #ef4444"]:hover,.reply-header .action-button[style*="color:#ef4444"]:hover{background:#ef44441a;border-color:#ef444480}.reply-meta{font-size:var(--fs-sm);color:var(--primary);font-weight:500}.reply-body{display:flex;padding:var(--sp-4) var(--sp-5);gap:var(--sp-4)}.reply-body .post-icon img{width:88px;height:88px}.post-lead{display:flex;padding:var(--sp-5);gap:var(--sp-5);background:var(--bg-card)}.post-lead .post-icon img{width:120px;height:120px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.8}}.post-highlighted{animation:highlight-fade 3s ease-out}@keyframes highlight-fade{0%{box-shadow:0 0 0 3px var(--primary),var(--shadow-card);background:var(--primary-soft)}to{box-shadow:var(--shadow-card);background:var(--bg-card)}}@keyframes highlight-pulse{0%{background-color:#5c6ac44d;box-shadow:0 0 0 4px #5c6ac433}to{background-color:transparent;box-shadow:none}}.highlight-reply{animation:highlight-pulse 2s ease-out}.dark .highlight-reply{animation:highlight-pulse-dark 2s ease-out}@keyframes highlight-pulse-dark{0%{background-color:#5c6ac466;box-shadow:0 0 0 4px #5c6ac44d}to{background-color:transparent;box-shadow:none}}.new-reply-highlight{animation:new-reply-glow 5s ease-out forwards;border-left:3px solid var(--primary)}@keyframes new-reply-glow{0%{background-color:#5c6ac426}70%{background-color:#5c6ac414}to{background-color:transparent;border-left-color:transparent}}.new-reply-badge{display:inline-block;background:var(--primary);color:#fff;font-size:10px;font-weight:700;padding:1px 5px;border-radius:3px;margin-right:6px;letter-spacing:.5px;animation:badge-pop .3s ease-out}@keyframes badge-pop{0%{transform:scale(0);opacity:0}60%{transform:scale(1.2)}to{transform:scale(1);opacity:1}}.commonDice{display:inline;padding:2px 6px;border-radius:4px;background-color:#64646433;color:var(--text-default);font-family:monospace;font-size:.9em}.over7Dice{display:inline;padding:2px 6px;border-radius:4px;background-color:#3b82f640;color:#3b82f6;font-family:monospace;font-size:.9em;font-weight:600}.over9Dice{display:inline;padding:2px 6px;border-radius:4px;background-color:#22c55e40;color:#22c55e;font-family:monospace;font-size:.9em;font-weight:600}.criticalFail{display:inline;padding:2px 6px;border-radius:4px;background-color:#ef444440;color:#ef4444;font-family:monospace;font-size:.9em;font-weight:600}[data-theme=dark] .commonDice{background-color:#96969633}[data-theme=dark] .over7Dice{background-color:#3b82f64d;color:#60a5fa}[data-theme=dark] .over9Dice{background-color:#22c55e4d;color:#4ade80}[data-theme=dark] .criticalFail{background-color:#ef44444d;color:#f87171}.new-post-banner{padding:12px 20px;background:linear-gradient(135deg,var(--primary),#7c3aed);color:#fff;border-radius:var(--radius-md);margin-bottom:var(--sp-4);text-align:center;cursor:pointer;font-weight:600;animation:banner-pulse 2s ease-in-out infinite;transition:transform var(--motion),box-shadow var(--motion);box-shadow:0 4px 15px #5c6ac44d}.new-post-banner:hover{transform:translateY(-2px);box-shadow:0 6px 20px #5c6ac466}@keyframes banner-pulse{0%,to{opacity:1;box-shadow:0 4px 15px #5c6ac44d}50%{opacity:.92;box-shadow:0 4px 20px #5c6ac480}}.notice-box{animation:card-enter .4s cubic-bezier(.4,0,.2,1) both}.weather-box{animation:card-enter .4s cubic-bezier(.4,0,.2,1) .1s both}.reply-count-badge{display:inline-flex;align-items:center;gap:4px;background:#fff3;padding:2px 8px;border-radius:10px;font-size:12px;font-weight:600;color:#fff}.density-toggle{display:flex;gap:2px;background:var(--bg-subtle);border-radius:var(--radius-sm);padding:2px}.density-btn{width:28px;height:28px;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;color:var(--text-muted);transition:all var(--motion);display:flex;align-items:center;justify-content:center}.density-btn.active{background:var(--primary);color:#fff}.density-compact .post-container{margin-bottom:4px}.density-compact .post-lead{padding:8px 12px;gap:10px}.density-compact .post-icon{width:48px;height:48px;min-width:48px}.density-compact .post-icon img{width:48px;height:48px}.density-compact .post-content{max-height:3.6em;overflow:hidden;text-overflow:ellipsis;line-height:1.2em}.density-compact .post-text{gap:2px}.density-compact .post-date{font-size:11px}.density-compact .post-reply{padding:6px 12px 6px 70px}.density-compact .reply-body{gap:8px}.density-compact .reply-body .post-icon{width:36px;height:36px;min-width:36px}.density-compact .reply-body .post-icon img{width:36px;height:36px}.density-comfortable .post-container{margin-bottom:20px}.density-comfortable .post-lead{padding:20px 24px;gap:20px}.density-comfortable .post-icon{width:140px;height:140px;min-width:140px}.density-comfortable .post-icon img{width:140px;height:140px}.density-comfortable .post-text{gap:10px}.density-comfortable .post-content{font-size:calc(var(--fs-base) * 1.05);line-height:1.8}.density-comfortable .post-reply{padding:16px 24px 16px 80px}.swipe-container{position:relative;overflow:hidden}.swipe-actions{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;gap:0;transform:translate(100%);transition:transform .2s ease}.swipe-action-btn{height:100%;padding:0 20px;border:none;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;display:flex;align-items:center;gap:4px}.swipe-action-reply{background:var(--primary);color:#fff}.swipe-action-link{background:var(--success, #22c55e);color:#fff}.wf{background:var(--bg-card);border-radius:var(--radius-lg);padding:var(--sp-5);margin-bottom:var(--sp-5);box-shadow:var(--shadow-card);transition:box-shadow var(--motion-slow);animation:card-enter .4s cubic-bezier(.4,0,.2,1) both}.wf:focus-within{box-shadow:0 0 0 2px var(--primary-border),0 4px 16px #5c6ac41f}.wf-login-msg{text-align:center;color:var(--text-subdued);padding:var(--sp-4) 0}.wf-login-msg a{color:var(--primary);font-weight:600}.wf-select,.wf-input{height:36px;padding:0 var(--sp-3);border-radius:var(--radius-sm);border:1px solid var(--border-subdued);background:var(--bg-subtle);color:var(--text-default);font-size:var(--fs-sm);font-family:var(--font-family);transition:border var(--motion),box-shadow var(--motion);box-sizing:border-box;min-width:0}.wf-select:focus,.wf-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.wf-header{display:flex;gap:var(--sp-3);align-items:center;margin-bottom:var(--sp-3)}.wf-avatar{position:relative;flex-shrink:0;width:72px;height:72px;border-radius:var(--radius-md);border:2px solid var(--border-subdued);background:var(--bg-subtle);cursor:pointer;overflow:hidden;transition:border-color var(--motion);padding:0}.wf-avatar:hover{border-color:var(--primary)}.wf-avatar-img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.wf-avatar-badge{position:absolute;bottom:2px;right:2px;background:#0009;color:#fff;font-size:10px;font-weight:700;padding:1px 4px;border-radius:4px;line-height:1}.wf-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.wf-meta-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.wf-meta-row .wf-select,.wf-meta-row .wf-input{flex:1}.wf-select-loc{max-width:140px}.wf-extra-toggle{flex-shrink:0;height:36px;padding:0 12px;border-radius:var(--radius-sm);border:1px dashed var(--border-subdued);background:transparent;color:var(--text-subdued);font-size:var(--fs-xs);cursor:pointer;transition:border-color var(--motion),color var(--motion);white-space:nowrap}.wf-extra-toggle:hover{border-color:var(--primary);color:var(--primary)}.wf-extra{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);background:var(--bg-subtle);border:1px solid var(--border-subdued)}.wf-extra-field{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.wf-extra-icon{color:var(--text-subdued);font-size:14px;flex-shrink:0}.wf-input-full{flex:1;width:100%}.wf-ai-toggle{display:flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;white-space:nowrap}.wf-ai-toggle input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary);cursor:pointer}.wf-ai-label{font-size:var(--fs-xs);font-weight:600;color:var(--text-subdued)}.wf-ai-assist-toggle{border-color:var(--primary-light, #7c8adb)!important;color:var(--primary)!important}.wf-ai-assist{padding:var(--sp-3);margin-bottom:var(--sp-3);border-radius:var(--radius-sm);background:var(--bg-subtle);border:1px solid var(--primary-light, #7c8adb40)}.wf-ai-assist-title{font-size:var(--fs-sm);font-weight:600;color:var(--primary);margin-bottom:6px}.wf-ai-assist-note{width:100%;min-height:72px;padding:10px;border-radius:var(--radius-sm);border:1px solid var(--border-subdued);background:var(--bg-card);color:var(--text-default);font-size:var(--fs-sm);resize:vertical;font-family:inherit;line-height:1.6}.wf-ai-assist-btn{width:100%;margin-top:6px;padding:6px 12px;border-radius:var(--radius-sm);border:none;background:var(--primary);color:#fff;font-size:var(--fs-sm);font-weight:600;cursor:pointer;transition:opacity var(--motion)}.wf-ai-assist-btn:hover{opacity:.85}.wf-ai-assist-btn:disabled{opacity:.5;cursor:not-allowed}.wf-ai-assist-result{margin-top:8px;padding:10px;background:var(--bg-card);border-radius:var(--radius-sm);border:1px solid var(--border-subdued)}.wf-ai-assist-result-text{font-size:var(--fs-sm);line-height:1.6;color:var(--text-default);white-space:pre-wrap;margin-bottom:8px}.wf-ai-assist-result-actions{display:flex;gap:6px;justify-content:flex-end}.wf-ai-assist-insert,.wf-ai-assist-copy,.wf-ai-assist-image{padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--border-default);background:transparent;color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all var(--motion)}.wf-ai-assist-insert:hover{background:var(--primary);color:#fff;border-color:var(--primary)}.wf-ai-assist-copy:hover{border-color:var(--primary);color:var(--primary)}.wf-ai-assist-image{background:linear-gradient(135deg,#a855f71a,#3b82f61a);border-color:#a855f74d}.wf-ai-assist-image:hover{background:linear-gradient(135deg,#a855f733,#3b82f633);border-color:#a855f780;color:#a855f7}.wf-ai-toggle input:checked+.wf-ai-label{color:var(--primary)}.wf-ai-npc-select{font-size:12px;padding:2px 6px;border-radius:4px;max-width:140px}.wf-ai-hint{font-size:11px;color:var(--text-muted);white-space:nowrap}.wf-prompt-banner{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-3);border-radius:var(--radius-sm);background:var(--primary-soft);border:1px solid var(--primary-border)}.wf-prompt-text{flex:1;font-size:var(--fs-sm);font-style:italic;color:var(--text-subdued)}.wf-prompt-close{background:none;border:none;cursor:pointer;color:var(--text-disabled);font-size:14px;padding:2px;line-height:1}.wf-prompt-close:hover{color:var(--text-default)}.wf-editor{border:1px solid var(--border-subdued);border-radius:var(--radius-md);overflow:hidden;margin-bottom:var(--sp-3);transition:border-color var(--motion)}.wf-editor:focus-within{border-color:var(--primary)}.wf-toolbar{display:flex;align-items:center;gap:2px;padding:4px 8px;background:var(--bg-subtle);border-bottom:1px solid var(--border-subdued);flex-wrap:wrap}.wf-toolbar-group{display:flex;align-items:center;gap:1px}.wf-toolbar-sep{width:1px;height:16px;background:var(--border-subdued);margin:0 4px;flex-shrink:0}.wf-tb{display:flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:600;color:var(--text-subdued);transition:all var(--motion)}.wf-tb:hover{background:var(--bg-hover);color:var(--text-default)}.wf-tb:active{transform:scale(.9)}.wf-tb-blue{color:#5865f2}.wf-tb-green{color:#22741c}.wf-tb-red{color:#ed4245}.wf-tb-blue:hover{background:#5865f21a}.wf-tb-green:hover{background:#22741c1a}.wf-tb-red:hover{background:#ed42451a}.wf-emoji-wrap{position:relative}.wf-emoji-picker{position:absolute;top:100%;right:0;margin-top:4px;background:var(--bg-card);border:1px solid var(--border-subdued);border-radius:var(--radius-md);padding:6px;box-shadow:var(--shadow-popover);z-index:100;display:grid;grid-template-columns:repeat(10,1fr);gap:2px;width:260px}.wf-emoji-btn{background:none;border:none;font-size:18px;cursor:pointer;padding:3px;border-radius:var(--radius-sm);transition:background var(--motion)}.wf-emoji-btn:hover{background:var(--bg-hover)}.wf-textarea-wrap{position:relative}.wf-textarea{width:100%;min-height:160px;resize:vertical;line-height:1.75;padding:var(--sp-3) var(--sp-4);border:none;background:var(--bg-card);color:var(--text-default);font-size:var(--fs-base);font-family:var(--font-family);box-sizing:border-box}.wf-textarea::-moz-placeholder{color:var(--text-disabled)}.wf-textarea::placeholder{color:var(--text-disabled)}.wf-textarea:focus{outline:none}.wf-drag-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--primary-soft);border:2px dashed var(--primary);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;z-index:10;pointer-events:none;color:var(--primary);font-weight:600;font-size:15px}.wf-mention-list{position:absolute;bottom:100%;left:0;background:var(--bg-card);border:1px solid var(--border-subdued);border-radius:var(--radius-md);box-shadow:var(--shadow-popover);z-index:100;width:240px;max-height:200px;overflow:auto}.wf-mention-item{padding:8px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;transition:background var(--motion)}.wf-mention-item:hover,.wf-mention-item.active{background:var(--bg-hover)}.wf-mention-name{font-weight:600;color:var(--text-default)}.wf-mention-code{font-size:12px;color:var(--text-subdued)}.wf-statusbar{display:flex;justify-content:space-between;align-items:center;padding:5px 12px;font-size:12px;color:var(--text-subdued);background:var(--bg-subtle);border-top:1px solid var(--border-subdued)}.wf-status-hint{opacity:.7}.wf-status-saved{color:var(--success)}.wf-status-upload{color:var(--primary)}.wf-status-count{font-variant-numeric:tabular-nums}.wf-preview-section{margin-bottom:var(--sp-3)}.wf-preview-toggle{background:none;border:none;cursor:pointer;color:var(--text-subdued);font-size:var(--fs-xs);font-weight:500;padding:4px 0;margin-bottom:var(--sp-2);transition:color var(--motion)}.wf-preview-toggle:hover{color:var(--primary)}.wf-preview{background:var(--bg-subtle);border:1px solid var(--border-subdued);border-radius:var(--radius-md);padding:var(--sp-3)}.wf-footer{display:flex;align-items:center;gap:var(--sp-2)}.wf-footer-spacer{flex:1}.wf-btn-submit{padding:10px var(--sp-6);border-radius:var(--radius-md);border:none;background:var(--primary);color:var(--text-on-primary);font-size:var(--fs-base);font-weight:600;cursor:pointer;transition:all var(--motion);white-space:nowrap}.wf-btn-submit:hover:not(:disabled){background:var(--primary-hover)}.wf-btn-submit:disabled{opacity:.5;cursor:not-allowed}.wf-btn-secondary{padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-md);border:1px solid var(--border-subdued);background:transparent;color:var(--text-subdued);font-size:var(--fs-sm);cursor:pointer;transition:all var(--motion)}.wf-btn-secondary:hover{border-color:var(--primary);color:var(--primary)}.btn-primary{background:var(--primary);color:var(--text-on-primary);border:none;padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-sm);font-size:var(--fs-sm);font-weight:500;cursor:pointer;transition:all var(--motion);position:relative;overflow:hidden}.btn-primary:hover{background:var(--primary-hover);transform:translateY(-1px);box-shadow:0 2px 8px #5c6ac459}.btn-primary:active{transform:translateY(0) scale(.97);box-shadow:none}.btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.btn-secondary{background:var(--bg-card);color:var(--text-subdued);border:1px solid var(--border-subdued);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);font-size:var(--fs-sm);cursor:pointer;transition:all var(--motion)}.btn-secondary:hover{background:var(--bg-hover);color:var(--text-default);border-color:var(--border-hover);transform:translateY(-1px)}.btn-secondary:active{transform:translateY(0) scale(.97)}.format-btn{padding:6px 10px;background:var(--bg-muted);border:1px solid var(--border-subdued);border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:600;color:var(--text-default);transition:all var(--motion);min-width:32px}.format-btn:hover{background:var(--bg-hover);border-color:var(--primary)}.format-btn:active{transform:scale(.95)}.preview-panel{animation:preview-slide-in .3s cubic-bezier(.4,0,.2,1) both;overflow:hidden}@keyframes preview-slide-in{0%{opacity:0;max-height:0;margin-top:0}to{opacity:1;max-height:500px;margin-top:var(--sp-3)}}.wf-tb[title]{position:relative}.wf-tb[title]:hover:after{content:attr(title);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--text-default);color:var(--bg-card);padding:4px 8px;border-radius:4px;font-size:11px;font-weight:400;white-space:nowrap;z-index:1000;pointer-events:none;animation:tooltip-appear .15s ease both}@keyframes tooltip-appear{0%{opacity:0;transform:translate(-50%) translateY(4px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.wf select,.wf input[type=text],.wf input[type=url],.wf textarea{transition:border var(--motion),box-shadow var(--motion)}.wf select:focus,.wf input[type=text]:focus,.wf input[type=url]:focus,.wf textarea:focus{box-shadow:0 0 0 3px var(--primary-soft)}.pagination span{background:var(--primary-soft);padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-sm);color:var(--primary);font-weight:600}.login-container{max-width:360px;margin:var(--sp-10) auto;padding:0 var(--sp-4)}.login-card{background:var(--bg-card);border-radius:var(--radius-lg);padding:var(--sp-6);box-shadow:var(--shadow-card);animation:login-appear .5s cubic-bezier(.4,0,.2,1) both}@keyframes login-appear{0%{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.login-title{font-size:var(--fs-xl);font-weight:600;color:var(--text-default);text-align:center;margin-bottom:var(--sp-5)}.login-title:before{content:none}.login-field{margin-bottom:var(--sp-3)}.login-field label{display:block;margin-bottom:var(--sp-1);font-size:var(--fs-xs);font-weight:500;color:var(--text-disabled)}.login-field input{width:100%;padding:var(--sp-3) var(--sp-3);border-radius:var(--radius-md);border:1px solid var(--border-subdued);background:var(--bg-card);color:var(--text-default);font-size:var(--fs-base);transition:border var(--motion),box-shadow var(--motion)}.login-field input:focus{box-shadow:0 0 0 3px var(--primary-soft);outline:none;border-color:var(--primary)}.login-btn{width:100%;padding:var(--sp-3) var(--sp-4);background:var(--primary);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--fs-base);font-weight:600;cursor:pointer;margin-top:var(--sp-3);transition:background var(--motion),transform var(--motion),box-shadow var(--motion)}.login-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #5c6ac44d;background:var(--primary-hover)}.page-title{font-size:var(--fs-xl);font-weight:600;color:var(--text-default);margin-bottom:var(--sp-4)}.card{background:var(--bg-card);border-radius:var(--radius-lg);padding:var(--sp-4);box-shadow:var(--shadow-card)}.charlist-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-4)}.charlist-title{font-size:var(--fs-xl);font-weight:700;color:var(--text-default);margin:0}.charlist-count{font-size:var(--fs-sm);color:var(--text-disabled);margin:var(--sp-1) 0 0}.charlist-view-toggle{display:flex;background:var(--bg-elevated);border-radius:var(--radius-md);padding:2px;gap:2px}.charlist-toggle-btn{padding:var(--sp-1) var(--sp-3);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-disabled);font-size:var(--fs-sm);cursor:pointer;transition:all var(--motion-fast)}.charlist-toggle-btn.active{background:var(--primary);color:#fff}.charlist-owner-section{margin-bottom:var(--sp-4)}.charlist-owner-header{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);padding-bottom:var(--sp-1);border-bottom:1px solid var(--border-subdued)}.charlist-owner-name{font-size:var(--fs-base);font-weight:600;color:var(--text-default)}.charlist-owner-stats{font-size:var(--fs-xs);color:var(--text-disabled)}.charlist-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-2)}.charlist-card{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);background:var(--bg-card);border:1px solid var(--border-subdued);border-radius:var(--radius-md);text-decoration:none;transition:all var(--motion-fast)}.charlist-card:hover{border-color:var(--primary);box-shadow:0 2px 12px #5c6ac426;transform:translateY(-2px);text-decoration:none}.charlist-card-icon{width:56px;height:56px;border-radius:var(--radius-md);-o-object-fit:cover;object-fit:cover;flex-shrink:0}.charlist-card-body{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.charlist-card-name{font-size:var(--fs-md);font-weight:600;color:var(--text-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.charlist-card-meta{font-size:var(--fs-sm);color:var(--text-subdued);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.charlist-card-owner{font-size:var(--fs-xs);color:var(--text-disabled);font-style:italic}.charlist-card-logs{font-size:var(--fs-sm);font-weight:700;color:var(--primary);flex-shrink:0;min-width:24px;text-align:right}.icon-selector-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;padding:var(--sp-4)}.icon-selector-modal{background:var(--bg-card);border-radius:var(--radius-lg);max-width:480px;width:100%;max-height:80vh;overflow-y:auto;display:flex;flex-direction:column;box-shadow:var(--shadow-popover);padding:var(--sp-4)}.icon-selector-header{padding-bottom:var(--sp-3);margin-bottom:var(--sp-3);border-bottom:1px solid var(--border-subdued);display:flex;justify-content:space-between;align-items:center}.icon-selector-header h3{font-size:var(--fs-md);font-weight:600;color:var(--text-default)}.icon-selector-header h3:before{content:none}.icon-selector-close{background:none;border:none;font-size:18px;color:var(--text-disabled);cursor:pointer;padding:var(--sp-1);line-height:1}.icon-selector-close:hover{color:var(--text-default)}.icon-selector-body{padding:var(--sp-3);overflow-y:auto;flex:1}.icon-selector-footer{padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border-subdued);display:flex;justify-content:flex-end;gap:var(--sp-2)}.icon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:var(--sp-2)}.icon-item{position:relative;aspect-ratio:1;cursor:pointer;border-radius:var(--radius-sm);overflow:hidden;border:2px solid transparent;transition:border var(--motion);background:var(--bg-muted)}.icon-item:hover{border-color:var(--border-hover)}.icon-item.selected{border-color:var(--primary)}.icon-item.dragging{opacity:.5}.icon-item.drag-over{border-color:var(--warning)}.icon-item img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.icon-badge{position:absolute;bottom:2px;left:2px;background:#0009;color:#fff;padding:1px 4px;border-radius:2px;font-size:9px;font-weight:600}.icon-delete-btn{position:absolute;top:2px;right:2px;background:var(--danger);color:#fff;border:none;border-radius:50%;width:16px;height:16px;font-size:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--motion)}.icon-item:hover .icon-delete-btn{opacity:1}.upload-dropzone{border:1px dashed var(--border-default);border-radius:var(--radius-md);padding:var(--sp-5);text-align:center;cursor:pointer;transition:all var(--motion);background:var(--bg-subtle);margin-bottom:var(--sp-3)}.upload-dropzone:hover,.upload-dropzone.dragging{border-color:var(--primary);background:var(--primary-soft)}.upload-dropzone .dropzone-icon{font-size:28px;display:block;margin-bottom:var(--sp-2)}.upload-dropzone .dropzone-text{color:var(--text-subdued);font-size:var(--fs-sm)}.upload-dropzone .dropzone-hint{color:var(--text-disabled);font-size:var(--fs-xs);margin-top:var(--sp-1)}.upload-preview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(48px,1fr));gap:var(--sp-2);margin-top:var(--sp-3)}.upload-preview-item{position:relative;aspect-ratio:1;border-radius:var(--radius-sm);overflow:hidden;background:var(--bg-muted)}.upload-preview-item img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.upload-preview-name{position:absolute;bottom:0;left:0;right:0;background:#0009;color:#fff;padding:2px;font-size:8px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon-selector-btn{padding:var(--sp-2) var(--sp-3);border:none;border-radius:var(--radius-sm);font-size:var(--fs-sm);font-weight:500;cursor:pointer;transition:all var(--motion)}.icon-selector-btn.primary{background:var(--primary);color:#fff}.icon-selector-btn.primary:hover{background:var(--primary-hover)}.icon-selector-btn.secondary{background:var(--bg-card);color:var(--text-subdued);border:1px solid var(--border-subdued)}.icon-selector-btn.secondary:hover{background:var(--bg-hover)}.icon-selector-btn.success{background:var(--success);color:#fff}.icon-selector-btn.warning{background:var(--warning);color:#fff}.icon-selector-btn:disabled{opacity:.5;cursor:not-allowed}.search-container{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-4)}.search-input{flex:1;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);border:1px solid var(--border-subdued);background:var(--bg-card);color:var(--text-default);font-size:var(--fs-sm)}.search-btn{padding:var(--sp-2) var(--sp-4);background:var(--primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:var(--fs-sm);font-weight:500;cursor:pointer}.search-btn:hover{background:var(--primary-hover)}.pagination{display:flex;justify-content:center;align-items:center;gap:var(--sp-2);margin-top:var(--sp-5)}.pagination button{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-subdued);background:var(--bg-card);color:var(--text-subdued);border-radius:var(--radius-sm);font-size:var(--fs-sm);cursor:pointer;transition:all var(--motion)}.pagination button:hover:not(:disabled){background:var(--bg-hover);color:var(--text-default)}.pagination button:disabled{opacity:.4;cursor:not-allowed}.pagination span{padding:var(--sp-2);color:var(--text-disabled);font-size:var(--fs-sm)}.edit-page-card{background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--radius-lg, 12px);padding:32px;max-width:700px;margin:40px auto}.edit-page-header{margin-bottom:24px}.edit-page-title{font-size:22px;font-weight:700;color:var(--text-default)}.edit-page-sub{font-size:13px;color:var(--text-subdued);margin-top:4px}.edit-page-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px}.edit-page-field{display:flex;flex-direction:column;gap:6px}.edit-page-label{font-size:12px;font-weight:600;color:var(--text-subdued)}.edit-page-input{padding:10px 12px;border:1px solid var(--border-default);border-radius:var(--radius-md, 8px);background:var(--bg-card);color:var(--text-default);font-size:14px;transition:border-color var(--motion, .15s)}.edit-page-input:focus{outline:none;border-color:var(--primary)}.edit-page-textarea{width:100%;min-height:200px;padding:12px;border:1px solid var(--border-default);border-radius:var(--radius-md, 8px);background:var(--bg-card);color:var(--text-default);font-size:14px;resize:vertical;line-height:1.7;transition:border-color var(--motion, .15s)}.edit-page-textarea:focus{outline:none;border-color:var(--primary)}.edit-page-icon-btn{display:flex;align-items:center;gap:10px;padding:8px 14px;border:1px solid var(--border-default);border-radius:var(--radius-md, 8px);background:var(--bg-card);cursor:pointer;color:var(--text-default);transition:border-color var(--motion, .15s)}.edit-page-icon-btn:hover{border-color:var(--primary)}.edit-page-icon-label{font-size:13px;color:var(--text-subdued)}.edit-page-actions{display:flex;justify-content:flex-end;gap:10px}.edit-page-btn-cancel{padding:10px 24px;border:1px solid var(--border-default);border-radius:var(--radius-md, 8px);background:var(--bg-card);color:var(--text-default);cursor:pointer;font-weight:600;transition:background var(--motion, .15s)}.edit-page-btn-cancel:hover{background:var(--bg-hover, var(--bg-secondary))}.edit-page-btn-submit{padding:10px 24px;border:none;border-radius:var(--radius-md, 8px);background:var(--primary);color:#fff;cursor:pointer;font-weight:600;transition:opacity var(--motion, .15s)}.edit-page-btn-submit:hover{opacity:.9}.edit-page-btn-submit:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 640px){.edit-page-card{padding:20px;margin:20px auto}.edit-page-grid{grid-template-columns:1fr}}.scroll-btn-wrap{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:8px;z-index:1000}.scroll-btn{width:44px;height:44px;border-radius:50%;border:2px solid var(--primary);background:var(--bg-card);color:var(--primary);font-size:18px;cursor:pointer;box-shadow:0 4px 6px #0000001a;transition:all .2s;display:flex;align-items:center;justify-content:center}.scroll-btn:hover{background:var(--primary);color:#fff}.error-boundary-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-default, #f5f5f5);padding:20px}.error-boundary-box{background:var(--bg-card);border-radius:12px;padding:40px;max-width:500px;text-align:center;box-shadow:var(--shadow-card, 0 4px 20px rgba(0,0,0,.1))}.error-boundary-box h1{font-size:24px;color:var(--text-default);margin-bottom:12px}.error-boundary-box p{color:var(--text-subdued);margin-bottom:24px;line-height:1.6}.error-boundary-reload{padding:12px 24px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer}.error-boundary-home{padding:12px 24px;background:var(--bg-secondary, #e9ecef);color:var(--text-default);border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer}.error-boundary-dev{margin-top:24px;text-align:left;background:var(--bg-secondary, #f8f9fa);padding:12px;border-radius:8px;font-size:12px}.search-input{padding:12px;border-radius:8px;border:2px solid var(--border-default);background:var(--bg-card);color:var(--text-default);font-size:15px}.search-input:focus{outline:none;border-color:var(--primary)}.reply-form-wrap{padding:16px;background:var(--bg-secondary, #f9fafb);border-radius:8px;display:flex;flex-direction:column;gap:12px}.reply-form-select,.reply-form-textarea{padding:8px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-card);color:var(--text-default)}.reply-form-textarea{padding:12px;resize:vertical;min-height:80px}.reply-form-btn-cancel{padding:8px 16px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-card);color:var(--text-default);cursor:pointer}.reply-form-btn-submit{padding:8px 16px;border-radius:4px;border:none;background:var(--primary);color:#fff;cursor:pointer}.reply-form-btn-submit:disabled{opacity:.5;cursor:not-allowed}.scroll-buttons{position:fixed;bottom:var(--sp-4);right:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2);z-index:100}.scroll-buttons button{width:40px;height:40px;border-radius:50%;border:1px solid var(--border-subdued);color:var(--text-disabled);font-size:14px;cursor:pointer;box-shadow:0 2px 8px #0000001f;transition:background var(--motion-slow),color var(--motion-slow),border-color var(--motion-slow),transform var(--motion),box-shadow var(--motion-slow);display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffd9}[data-theme=dark] .scroll-buttons button{background:#232323d9}.scroll-buttons button:hover{background:var(--primary);color:#fff;border-color:var(--primary);transform:scale(1.1);box-shadow:0 4px 12px #5c6ac459}.scroll-buttons button:active{transform:scale(.95)}.alert-error{background:#fdf2f2;border:1px solid #f5c6cb;color:var(--danger);padding:var(--sp-3);border-radius:var(--radius-sm);font-size:var(--fs-sm);margin-bottom:var(--sp-3)}[data-theme=dark] .alert-error{background:#3d1a1a;border-color:#5c2828}.alert-info{background:var(--primary-soft);border:1px solid var(--primary-border);color:var(--primary);padding:var(--sp-3);border-radius:var(--radius-sm);font-size:var(--fs-sm);margin-bottom:var(--sp-3);text-align:center}.loading{display:flex;align-items:center;justify-content:center;padding:var(--sp-8);color:var(--text-disabled);font-size:var(--fs-sm)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .15s ease-out}.modal-content{background:var(--bg-card);border-radius:var(--radius-lg);padding:var(--sp-6);max-width:400px;width:90%;box-shadow:var(--shadow-popover);animation:scaleIn .15s ease-out}.modal-title{font-size:var(--fs-lg);font-weight:600;color:var(--text-default);margin-bottom:var(--sp-3)}.modal-message{color:var(--text-subdued);margin-bottom:var(--sp-5);line-height:1.6;white-space:pre-line}.modal-buttons{display:flex;gap:var(--sp-2);justify-content:flex-end}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes sceneFade{0%{opacity:0}40%{opacity:1}60%{opacity:1}to{opacity:0}}.handout-reveal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:#000000d9;display:flex;align-items:center;justify-content:center;cursor:pointer;animation:handoutFadeIn .6s ease-out}.handout-reveal-card{max-width:520px;width:90%;text-align:center;animation:handoutSlideUp .7s cubic-bezier(.16,1,.3,1)}.handout-reveal-img{max-width:100%;max-height:50vh;border-radius:8px;box-shadow:0 0 40px #ffd7004d;margin-bottom:16px}.handout-reveal-title{color:#fff;font-size:1.6rem;font-weight:700;margin:0 0 8px;text-shadow:0 0 20px rgba(255,215,0,.5)}.handout-reveal-content{color:#ccc;font-size:.95rem;line-height:1.5;margin:0 0 16px;white-space:pre-wrap}.handout-reveal-hint{color:#666;font-size:.8rem}@keyframes handoutFadeIn{0%{opacity:0}to{opacity:1}}.vn-video-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;pointer-events:none}@keyframes handoutSlideUp{0%{opacity:0;transform:translateY(40px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.spoiler{background:var(--bg-muted);color:transparent;padding:1px 6px;border-radius:4px;cursor:pointer;transition:color .3s ease,background .3s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.spoiler:hover,.spoiler:focus{outline:none;box-shadow:0 0 0 2px var(--primary-soft);background:var(--border-default)}.spoiler.revealed{color:var(--text-default);background:var(--primary-soft)}[data-theme=dark] .spoiler{background:var(--bg-muted)}[data-theme=dark] .spoiler:hover{background:var(--border-default)}[data-theme=dark] .spoiler.revealed{color:var(--text-default);background:var(--primary-soft)}.scroll-progress{position:fixed;top:0;left:0;height:3px;background:linear-gradient(90deg,var(--primary),#7c3aed);z-index:9999;transition:width 50ms linear;border-radius:0 2px 2px 0}.modal-overlay{backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}@media (max-width: 640px){.scroll-buttons{bottom:var(--sp-3);right:var(--sp-3)}.scroll-buttons button{width:44px;height:44px;font-size:16px}.post-container{animation-duration:.25s}.post-container:nth-child(n){animation-delay:0ms}.header{box-shadow:0 1px 4px #0000000f}}.bottom-nav{display:none}@media (max-width: 768px){.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;height:56px;background:var(--bg-card);border-top:1px solid var(--border-subdued);z-index:1000;justify-content:space-around;align-items:center;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 0;border:none;background:none;cursor:pointer;text-decoration:none;color:var(--text-muted);font-size:11px;min-width:48px;min-height:44px;transition:color var(--motion);-webkit-tap-highlight-color:transparent;position:relative}.bottom-nav-item.active{color:var(--primary)}.bottom-nav-item:active{transform:scale(.92)}.bottom-nav-icon{font-size:20px;line-height:1}.bottom-nav-label{font-weight:500}.bottom-nav-badge{position:absolute;top:-2px;right:-6px;background:#ef4444;color:#fff;font-size:9px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px}.has-bottom-nav{padding-bottom:64px}.session-layout~.bottom-nav,.bottom-nav.hidden{display:none}}.online-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#22c55e;margin-left:4px;vertical-align:middle;animation:online-pulse 2s ease-in-out infinite}@keyframes online-pulse{0%,to{opacity:1}50%{opacity:.5}}.online-count{font-size:12px;color:#22c55e;font-weight:600;display:flex;align-items:center;gap:4px}.typing-indicator{display:flex;align-items:center;gap:8px;padding:8px 16px;font-size:14px;color:var(--text-subdued);font-style:italic}.typing-dots{display:flex;gap:3px}.typing-dots span{width:5px;height:5px;border-radius:50%;background:var(--text-muted);animation:typing-bounce 1.4s infinite ease-in-out}.typing-dots span:nth-child(2){animation-delay:.16s}.typing-dots span:nth-child(3){animation-delay:.32s}@keyframes typing-bounce{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-6px);opacity:1}}.session-lobby{max-width:800px;margin:0 auto;padding:24px 16px}.session-lobby h2{font-size:22px;font-weight:700;margin-bottom:20px;color:var(--text-primary)}.session-create-form{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.session-create-form input{padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-elevated);color:var(--text-primary);font-size:14px;outline:none;transition:border-color .15s}.session-create-form input:focus{border-color:var(--primary)}.session-room-list{display:flex;flex-direction:column;gap:10px}.session-room-card{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;cursor:pointer;transition:all var(--motion-fast);animation:card-enter var(--motion-slow) ease both}.session-room-card:hover{border-color:var(--primary-border);box-shadow:0 2px 8px #0000000f;transform:translateY(-1px)}.session-room-title{font-weight:600;font-size:15px;color:var(--text-primary)}.session-room-meta{display:flex;gap:12px;font-size:13px;color:var(--text-subdued)}.session-layout{display:flex;height:calc(100vh - 60px);overflow:hidden}.session-stage{flex:1;display:flex;flex-direction:column;position:relative;background:#111;min-width:0}.session-bg{flex:1;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.session-bg-placeholder{font-size:48px;color:#ffffff26;-webkit-user-select:none;-moz-user-select:none;user-select:none}.session-standing{position:absolute;bottom:0;max-height:80%;max-width:40%;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 4px 12px rgba(0,0,0,.4));transition:transform .3s ease}.session-standing-left{left:5%}.session-standing-right{right:5%}.session-dialogue{background:#000000bf;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:14px 20px;border-top:1px solid rgba(255,255,255,.1)}.session-dialogue-speaker{font-weight:700;font-size:14px;color:#7dd3fc;margin-bottom:4px}.session-dialogue-text{font-size:15px;color:#f0f0f0;line-height:1.6}.session-players{display:flex;align-items:center;gap:6px;padding:8px 14px;background:#00000080;flex-wrap:wrap}.session-player-tag{font-size:12px;padding:3px 10px;border-radius:10px;background:#ffffff1f;color:#ffffffb3}.gm-drawer-toggle{position:absolute;bottom:12px;left:12px;z-index:25;width:44px;height:44px;border-radius:50%;border:2px solid rgba(125,211,252,.4);background:#000c;color:#7dd3fc;font-size:13px;font-weight:700;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all .2s;display:flex;align-items:center;justify-content:center}.gm-drawer-toggle:hover{border-color:#7dd3fc;background:#7dd3fc26;transform:scale(1.08)}.gm-drawer-toggle-active{background:#7dd3fc33;border-color:#7dd3fc}.gm-drawer{position:absolute;top:0;left:0;bottom:0;width:360px;z-index:22;transform:translate(-100%);transition:transform .25s ease;pointer-events:none}.gm-drawer-open{transform:translate(0);pointer-events:auto}.gm-drawer-inner{height:100%;display:flex;flex-direction:column;background:#0a0a12f2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-right:1px solid rgba(255,255,255,.1)}.gm-drawer-tabs{display:flex;border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0}.gm-drawer-tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;border:none;background:none;color:#fff6;cursor:pointer;transition:all .15s}.gm-drawer-tab:hover{color:#ffffffb3;background:#ffffff0a}.gm-drawer-tab-active{color:#7dd3fc;background:#7dd3fc14;border-bottom:2px solid #7dd3fc}.gm-drawer-tab-icon{font-size:18px;line-height:1}.gm-drawer-tab-label{font-size:12px;font-weight:600}.gm-drawer-content{flex:1;overflow-y:auto;overflow-x:hidden}.gm-section-wrap{padding:12px;display:flex;flex-direction:column;gap:4px}.gm-section{padding:10px;background:#ffffff08;border-radius:8px;border:1px solid rgba(255,255,255,.06);display:flex;flex-direction:column;gap:8px}.gm-section-collapse{opacity:.6}.gm-section-collapse:hover{opacity:1}.gm-section-title{font-size:11px;font-weight:700;color:#ffffff80;text-transform:uppercase;letter-spacing:.8px}.gm-field{flex:1;padding:8px 12px;border:1px solid rgba(255,255,255,.12);border-radius:6px;background:#ffffff0f;color:#eee;font-size:13px;outline:none;transition:border-color .15s;min-width:0}.gm-field:focus{border-color:var(--primary);background:#ffffff14}select.gm-field option{background:#1e1e2e;color:#eee}.gm-textarea{resize:vertical;min-height:48px}.gm-field-row{display:flex;gap:6px;align-items:center}.gm-add-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding-top:8px;border-top:1px solid rgba(255,255,255,.06)}.gm-action-btn{padding:7px 14px;border:1px solid rgba(125,211,252,.3);border-radius:6px;background:#7dd3fc1a;color:#7dd3fc;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .15s}.gm-action-btn:hover{background:#7dd3fc33;border-color:#7dd3fc}.gm-action-btn-secondary{background:#ffffff0f;border-color:#ffffff26;color:#fff9}.gm-action-btn-secondary:hover{background:#ffffff1f;color:#fff}.gm-action-btn-small{padding:4px 10px;font-size:12px}.gm-action-icon{padding:7px 10px}.gm-icon-btn{width:34px;height:34px;border:1px solid rgba(255,255,255,.1);border-radius:6px;background:#ffffff0d;color:#fff9;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}.gm-icon-btn:hover{background:#ffffff1f;color:#fff}.gm-icon-btn-danger{color:#f8717199}.gm-icon-btn-danger:hover{background:#f8717126;color:#f87171;border-color:#f871714d}.gm-icon-btn-off{opacity:.4}.gm-text-btn{background:none;border:none;color:#fff6;font-size:12px;cursor:pointer;padding:4px 0;transition:color .15s}.gm-text-btn:hover{color:#ffffffb3}.gm-text-btn-danger{color:#f8717180}.gm-text-btn-danger:hover{color:#f87171}.gm-add-btn{width:100%;padding:8px;border:1px dashed rgba(255,255,255,.15);border-radius:6px;background:none;color:#fff6;font-size:13px;cursor:pointer;transition:all .15s}.gm-add-btn:hover{border-color:#7dd3fc;color:#7dd3fc;background:#7dd3fc0d}.gm-mini-select{padding:4px 6px;border:1px solid rgba(255,255,255,.12);border-radius:4px;background:#ffffff0f;color:#ddd;font-size:12px;cursor:pointer}.gm-color-picker{width:36px;height:36px;border:1px solid rgba(255,255,255,.12);border-radius:6px;cursor:pointer;background:none;padding:2px;flex-shrink:0}.gm-toggle-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.gm-toggle-label{display:flex;align-items:center;gap:6px;font-size:13px;color:#ffffffb3;cursor:pointer}.gm-toggle-compact{font-size:12px;gap:4px}.gm-slider-row{display:flex;align-items:center;gap:8px}.gm-slider-label{font-size:12px;color:#ffffff80;white-space:nowrap;min-width:30px}.gm-slider{flex:1;accent-color:#7dd3fc}.gm-slider-value{font-size:12px;color:#fff9;min-width:36px;text-align:right}.gm-standing-item{display:flex;align-items:center;gap:6px;padding:4px 0}.gm-standing-name{flex:1;font-size:13px;font-weight:600;color:#7dd3fc;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gm-standing-hidden{color:#ffffff40}.gm-token-item{display:flex;align-items:center;gap:8px;padding:6px 0}.gm-token-color{width:12px;height:12px;border-radius:50%;flex-shrink:0}.gm-token-name{flex:1;font-size:13px;font-weight:600;color:#eee}.gm-token-hp{font-size:12px;color:#fff6}.gm-token-add-form{display:flex;flex-direction:column;gap:6px;padding:8px;background:#ffffff08;border-radius:6px;border:1px solid rgba(255,255,255,.08)}.gm-list-item{display:flex;align-items:center;gap:8px;padding:6px 0}.gm-list-item-name{flex:1;font-size:13px;color:#eee;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gm-list-item-badge{font-size:10px;padding:2px 6px;border-radius:4px;background:#ffffff14;color:#ffffff80}.gm-handout-item{display:flex;flex-direction:column;gap:4px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.05)}.gm-handout-header{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:#eee}.gm-handout-img{max-width:100%;max-height:80px;border-radius:4px;-o-object-fit:cover;object-fit:cover}.gm-handout-desc{font-size:12px;color:#fff6;margin:0}.gm-handout-form{display:flex;flex-direction:column;gap:6px;padding-top:8px;border-top:1px solid rgba(255,255,255,.06)}.gm-sub-tabs{display:flex;gap:4px;margin-bottom:8px}.gm-sub-tab{flex:1;padding:6px 8px;border:1px solid rgba(255,255,255,.08);border-radius:6px;background:none;color:#fff6;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s}.gm-sub-tab:hover{color:#ffffffb3;border-color:#ffffff26}.gm-sub-tab-active{background:#7dd3fc1a;border-color:#7dd3fc4d;color:#7dd3fc}.gm-upload-btn{display:block;width:100%;padding:10px;border:2px dashed rgba(255,255,255,.15);border-radius:8px;background:#ffffff08;color:#ffffff80;font-size:13px;font-weight:600;text-align:center;cursor:pointer;transition:all .15s}.gm-upload-btn:hover{border-color:#7dd3fc66;color:#7dd3fc;background:#7dd3fc0d}.gm-archive-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;max-height:400px;overflow-y:auto}.gm-archive-item{border:1px solid rgba(255,255,255,.08);border-radius:8px;overflow:hidden;background:#ffffff08;transition:border-color .15s}.gm-archive-item:hover{border-color:#fff3}.gm-archive-thumb{width:100%;height:80px;-o-object-fit:cover;object-fit:cover;display:block}.gm-archive-audio-icon{width:100%;height:80px;display:flex;align-items:center;justify-content:center;font-size:28px;background:#8b5cf61a;color:#a78bfa}.gm-archive-info{padding:6px 8px}.gm-archive-name{font-size:11px;color:#ffffff80;display:block;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gm-archive-actions{display:flex;gap:4px;align-items:center}.gm-input{flex:1;padding:8px 12px;border:1px solid rgba(255,255,255,.12);border-radius:6px;background:#ffffff0f;color:#eee;font-size:13px;outline:none;transition:border-color .15s;min-width:0}.gm-input:focus{border-color:var(--primary)}.gm-btn{font-size:12px!important;padding:6px 12px!important;white-space:nowrap}.session-bgm-indicator{display:flex;align-items:center;padding:4px 14px;background:#0009;font-size:11px;color:#fff9}.session-bgm-control{position:absolute;bottom:8px;left:8px;z-index:20;display:flex;align-items:center;gap:6px;padding:4px 10px;background:#000000a6;border-radius:var(--radius-md);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.session-bgm-label{font-size:11px;color:#ffffffb3;white-space:nowrap}.session-bgm-slider{width:80px;height:4px;cursor:pointer;accent-color:var(--primary)}.session-bgm-unblock{background:var(--primary);color:#fff;border:none;padding:4px 12px;font-size:11px;border-radius:4px;cursor:pointer;font-weight:600;animation:bgm-pulse 1.5s infinite}@keyframes bgm-pulse{0%,to{opacity:1}50%{opacity:.7}}.session-init-panel{position:absolute;top:8px;left:8px;z-index:15;background:#000000d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:8px;border:1px solid rgba(255,255,255,.1);padding:8px;min-width:240px;max-height:50vh;overflow-y:auto}.session-init-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;color:#7dd3fc;font-size:13px}.session-init-entry{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:4px;font-size:12px;color:#ddd;border:1px solid transparent}.session-init-active{background:#7dd3fc26;border-color:#7dd3fc4d}.session-init-order{font-weight:700;color:#7dd3fc;min-width:24px;text-align:center}.session-init-name{flex:1;font-weight:500}.session-init-hp{font-size:11px;color:#f87171;font-weight:600}.session-init-hp-input{width:36px;background:#ffffff1a;border:1px solid rgba(255,255,255,.15);border-radius:3px;color:#f87171;font-size:11px;text-align:center;padding:1px;outline:none}.session-init-status{font-size:10px;color:#fbbf24}.session-init-remove{opacity:.4;font-size:10px!important;padding:0 4px!important}.session-init-remove:hover{opacity:1}.session-init-add{display:flex;gap:4px;margin-top:6px;padding-top:6px;border-top:1px solid rgba(255,255,255,.1)}.session-tab-bar{display:flex;align-items:center;gap:2px;padding:4px 14px;border-bottom:1px solid var(--border);background:var(--bg-secondary)}.session-tab{padding:6px 12px;border:none;background:none;color:var(--text-disabled);font-size:13px;font-weight:500;cursor:pointer;border-radius:4px;transition:all .15s}.session-tab:hover{color:var(--text-primary);background:var(--bg-elevated)}.session-tab-active{color:var(--primary);background:var(--bg-elevated);font-weight:600}.session-whisper-target{font-size:11px;color:#a78bfa;margin-left:auto;display:flex;align-items:center}.session-msg-whisper{background:#a78bfa14;border-color:#a78bfa33}.session-msg-whisper-badge{font-size:10px;color:#a78bfa;font-weight:500}.session-msg-narration{background:transparent;border:none;text-align:center;padding:8px 16px}.session-msg-narration .session-msg-content{font-style:italic;color:var(--text-default);font-size:14px;line-height:1.7}.session-macro-panel{padding:6px 14px;border-bottom:1px solid var(--border);background:var(--bg-secondary)}.session-macro-list{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:4px}.session-macro-item{display:flex;align-items:center}.session-macro-btn{padding:5px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg-elevated);color:var(--primary);font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;min-height:28px}.session-macro-btn:hover{background:var(--primary);color:#fff}.session-macro-edit,.session-macro-remove{background:none;border:none;color:var(--text-disabled);cursor:pointer;font-size:10px;padding:0 3px}.session-macro-edit:hover{color:var(--primary)}.session-macro-remove:hover{color:var(--danger)}.session-macro-item[draggable]{cursor:grab}.session-macro-item[draggable]:active{cursor:grabbing}.session-macro-add{display:flex;gap:4px;align-items:center}.session-typing{padding:4px 14px;font-size:12px;color:var(--text-subdued);font-style:italic;border-top:1px solid var(--border);background:var(--bg-secondary)}.btn-sm{padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:var(--bg-elevated);color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .15s}.btn-sm:hover,.btn-sm-active{background:var(--primary);color:#fff;border-color:var(--primary)}.session-left-panel{flex:1;display:flex;flex-direction:column;min-width:0;position:relative}.session-stage-controls{display:flex;align-items:center;gap:6px;padding:4px 10px;background:#000000b3;border-top:1px solid rgba(255,255,255,.08)}.session-toolbar{position:absolute;top:8px;left:50%;transform:translate(-50%);z-index:18;display:flex;gap:2px;background:#000c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:8px;border:1px solid rgba(255,255,255,.1);padding:4px}.stool{width:32px;height:32px;border:1px solid transparent;border-radius:6px;background:none;color:#fff9;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.stool:hover{color:#fff;background:#ffffff1a}.stool-active{color:#7dd3fc;background:#7dd3fc26;border-color:#7dd3fc4d}.stool-color{width:20px;height:20px;border:2px solid rgba(255,255,255,.4);border-radius:50%;padding:0;cursor:pointer}.stool-select{width:auto;padding:0 8px;font-size:11px;background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:4px;color:#ddd;height:28px;cursor:pointer}.session-grid-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none}.session-draw-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3}.session-draw-layer.drawing-active{cursor:crosshair}.session-fog-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;pointer-events:none}.session-token-hpbar{width:100%;height:4px;background:#fff3;border-radius:2px;margin-top:2px;overflow:hidden}.session-token-hpbar-fill{height:100%;border-radius:2px;transition:width .3s ease}.session-map-pin{position:absolute;transform:translate(-50%,-100%);z-index:6;cursor:pointer;transition:transform .15s}.session-map-pin:hover{transform:translate(-50%,-100%) scale(1.2)}.session-pin-icon{font-size:24px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.session-pin-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#000000e6;color:#eee;padding:6px 10px;border-radius:6px;font-size:12px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s;margin-bottom:4px}.session-map-pin:hover .session-pin-tooltip{opacity:1}.session-map-pin-gm{opacity:.6;border:1px dashed rgba(255,255,255,.3);border-radius:4px;padding:2px}.session-pointer{position:absolute;transform:translate(-50%,-50%);z-index:19;pointer-events:none;transition:left .1s,top .1s}.session-pointer-dot{width:12px;height:12px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 6px #00000080}.session-pointer-name{font-size:10px;color:#fff;background:#000000b3;padding:1px 5px;border-radius:3px;margin-top:2px;white-space:nowrap}.session-handout-notif{position:fixed;top:80px;right:20px;z-index:1000;background:var(--bg-elevated);border:1px solid var(--primary-border);border-radius:10px;padding:14px 18px;box-shadow:0 4px 16px #00000026;animation:card-enter .3s ease both;max-width:300px}.session-handout-notif strong{color:var(--primary);display:block;margin-bottom:4px;font-size:13px}.session-handout-notif p{font-size:12px;color:var(--text-secondary);margin:0}.session-load-more{text-align:center;padding:6px}.session-load-more button{background:none;border:1px solid var(--border);border-radius:6px;color:var(--text-secondary);font-size:12px;padding:6px 14px;cursor:pointer;transition:all .15s}.session-load-more button:hover{border-color:var(--primary);color:var(--primary)}.session-init-round{font-size:11px;color:#ffffff80;margin-bottom:6px;text-align:center;padding:2px 0;border-bottom:1px solid rgba(255,255,255,.08)}.session-init-info{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.session-init-hp-bar-wrap{display:flex;align-items:center;gap:4px;font-size:11px}.session-init-hp-bar{flex:1;height:6px;background:#ffffff1a;border-radius:3px;overflow:hidden;min-width:40px}.session-init-hp-bar-fill{height:100%;border-radius:3px;transition:width .3s ease,background .3s ease}.session-init-hp-text{font-size:11px;color:#f87171;font-weight:600;white-space:nowrap}.session-init-ac{font-size:10px;color:#60a5fa;font-weight:600;margin-left:4px}.gm-control-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.gm-control-row label{font-size:12px;color:#ffffffb3;min-width:50px}.gm-control-row input[type=range]{flex:1;accent-color:var(--primary)}.gm-control-row input[type=color]{width:28px;height:28px;border:1px solid rgba(255,255,255,.2);border-radius:4px;padding:0;cursor:pointer;background:none}.gm-checkbox{display:flex;align-items:center;gap:6px;font-size:12px;color:#ffffffb3;cursor:pointer}.gm-checkbox input[type=checkbox]{accent-color:var(--primary)}.gm-handout-item{display:flex;align-items:center;justify-content:space-between;padding:4px 6px;border-radius:4px;font-size:12px;color:#ddd;background:#ffffff0d;margin-bottom:4px}.gm-handout-item:hover{background:#ffffff1a}.gm-pin-item{display:flex;align-items:center;justify-content:space-between;padding:4px 6px;border-radius:4px;font-size:12px;color:#ddd;background:#ffffff0d;margin-bottom:4px}.session-msg-emote{background:transparent;border-color:transparent;font-style:italic;color:var(--text-secondary)}@media (max-width: 768px){.session-layout{flex-direction:column;position:fixed;top:0;left:0;right:0;bottom:0;height:auto;overflow:hidden}.session-left-panel{height:auto;aspect-ratio:16 / 9;max-height:28vh;flex-shrink:0}.session-stage{height:100%}.session-chat{width:100%;flex:1;min-height:0;border-left:none;border-top:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.session-messages{flex:1;min-height:0;overflow-y:auto}.session-input-form{flex-shrink:0;padding:6px 8px;gap:6px}.session-input-form .btn-primary{white-space:nowrap;flex-shrink:0;padding:6px 10px;font-size:13px}.session-input{min-width:0}.session-chat-header{padding:4px 8px}.session-char-bar{padding:4px 8px;flex-shrink:0}.session-players{display:none}.vn-dialogue-content{height:40px!important;padding:6px 12px!important;border-radius:0!important}.vn-dialogue-content:before,.vn-dialogue-content:after{display:none}.vn-dialogue-text{font-size:12px;line-height:1.4}.vn-dialogue-speaker{font-size:10px;padding:2px 8px;margin-left:6px;gap:0;border:none;background:#0009}.vn-dialogue-speaker-icon{display:none}.vn-dialogue-box{padding:0 1%}.vn-ctc,.vn-standing-name-tag{display:none}.vn-standing{height:50%}.session-init-panel{min-width:180px;font-size:11px}.gm-drawer{width:310px}.gm-drawer-toggle{width:36px;height:36px;font-size:10px;bottom:auto;top:8px;right:8px;left:auto}.session-toolbar{top:auto;bottom:8px}.session-handout-notif{right:10px;left:10px;max-width:none}}.vn-mode{display:flex;flex-direction:column;overflow:hidden}.vn-stage{flex:1;position:relative;background-color:#0a0a0f;background-repeat:no-repeat;overflow:hidden;display:flex;align-items:flex-end;justify-content:center}.vn-stage-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vn-stage-placeholder-icon{font-size:64px;opacity:.2}.vn-stage-placeholder-text{font-size:18px;color:#ffffff26;font-weight:600;letter-spacing:2px;text-transform:uppercase}.vn-stage-placeholder-hint{font-size:12px;color:#ffffff1a}.vn-bg-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,transparent 60%,rgba(0,0,0,.6) 100%);pointer-events:none;z-index:1}.vn-standings-area{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2}.vn-standing{position:absolute;bottom:0;height:70%;pointer-events:none;transition:left .5s ease,filter .3s ease,opacity .3s ease;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}.vn-standing-img{height:100%;width:auto;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 4px 12px rgba(0,0,0,.5));-webkit-user-select:none;-moz-user-select:none;user-select:none}.vn-standing-active{filter:none;opacity:1}.vn-standing-active .vn-standing-img{filter:drop-shadow(0 0 16px rgba(255,200,100,.4))}.vn-standing-inactive{filter:brightness(.6);opacity:.85}.vn-standing-name-tag{position:absolute;bottom:4px;background:#000000a6;color:#fff;font-size:11px;padding:2px 10px;border-radius:8px;white-space:nowrap;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.vn-standing-compat-left{left:15%}.vn-standing-compat-right{right:15%;left:auto;transform:translate(50%)}.vn-dialogue-box{position:absolute;bottom:0;left:0;right:0;z-index:10;padding:0 3% 16px;pointer-events:none}.vn-dialogue-speaker{display:inline-flex;align-items:center;gap:10px;background:linear-gradient(135deg,#1a1a2e,#0f1b3d);border:1px solid rgba(200,169,110,.4);border-bottom:none;color:#e0c97f;font-size:13px;font-weight:700;padding:6px 18px 6px 10px;border-radius:4px 4px 0 0;letter-spacing:.08em;text-shadow:0 1px 3px rgba(0,0,0,.6);margin-left:24px;margin-bottom:-1px;position:relative;z-index:2;pointer-events:auto}.vn-dialogue-speaker-icon{width:28px;height:28px;border-radius:50%;border:1.5px solid rgba(224,201,127,.5);-o-object-fit:cover;object-fit:cover;box-shadow:0 2px 6px #0006}.vn-dialogue-speaker-name{font-size:13px;font-weight:700}.vn-dialogue-content{position:relative;background:linear-gradient(180deg,#080818c7,#080818f0);border:1px solid rgba(200,169,110,.3);border-radius:0 4px 4px;padding:20px 32px 28px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);height:200px;overflow-y:auto;box-shadow:0 -4px 30px #0006,inset 0 1px #ffffff0d;pointer-events:auto}.vn-dialogue-content:before,.vn-dialogue-content:after{content:"";position:absolute;width:16px;height:16px;border-color:#c8a96e80;border-style:solid;pointer-events:none}.vn-dialogue-content:before{top:8px;left:8px;border-width:1.5px 0 0 1.5px}.vn-dialogue-content:after{bottom:8px;right:8px;border-width:0 1.5px 1.5px 0}.vn-dialogue-text{font-size:16px;color:#f0ebe0;line-height:1.75;letter-spacing:.03em;white-space:pre-wrap;word-break:break-word;font-family:Noto Sans KR,sans-serif;text-shadow:0 1px 3px rgba(0,0,0,.6)}.vn-dialogue-content .vn-ctc{position:absolute;bottom:12px;right:16px;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid rgba(224,201,127,.6);animation:vn-ctc-bounce 1.2s ease-in-out infinite}@keyframes vn-ctc-bounce{0%,to{transform:translateY(0);opacity:.6}50%{transform:translateY(3px);opacity:1}}.vn-tactical-toggle{position:absolute;top:8px;left:8px;z-index:20;width:36px;height:36px;border-radius:50%;border:1px solid rgba(255,255,255,.15);background:#00000080;color:#fff;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:background .2s}.vn-tactical-toggle:hover{background:#ffffff26}.vn-tactical-active{background:#643c1499;border-color:#ffc86466}.vn-bgm-indicator{position:absolute;top:8px;right:8px;z-index:20;font-size:14px;color:#fff6;background:#0006;padding:4px 10px;border-radius:12px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none}.gm-standings-list{display:flex;flex-direction:column;gap:6px}.gm-standing-entry{display:flex;align-items:center;gap:6px;padding:6px 8px;background:#ffffff08;border-radius:6px;border:1px solid rgba(255,255,255,.06)}.gm-standing-thumb{width:36px;height:36px;border-radius:4px;-o-object-fit:cover;object-fit:cover;background:#ffffff0d}.gm-standing-info{flex:1;min-width:0;font-size:12px;color:#ffffffb3}.gm-standing-info strong{display:block;color:#ffffffe6;font-size:13px}.gm-standing-actions{display:flex;gap:4px}.gm-standing-actions button{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);color:#fff9;font-size:14px;width:28px;height:28px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center}.gm-standing-actions button:hover{background:#ffffff1a;color:#fff}.gm-standing-add{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.06)}.gm-standing-add-row{display:flex;gap:6px}.gm-standing-add-row input,.gm-standing-add-row select{flex:1;min-width:0}.session-chat{width:380px;display:flex;flex-direction:column;background:var(--bg-primary);border-left:1px solid var(--border);flex-shrink:0;min-height:0}.session-chat-header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-bottom:1px solid var(--border);background:var(--bg-elevated);gap:6px;flex-shrink:0}.session-header-players{display:flex;align-items:center;gap:4px;flex:1;min-width:0;overflow:hidden}.session-header-count{font-size:12px;color:var(--text-subdued);flex-shrink:0;font-weight:700}.session-header-name{font-size:12px;color:var(--text-subdued);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-header-name:before{content:"·";margin-right:4px;color:var(--text-disabled)}.session-header-name:first-of-type:before{content:none}.session-header-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.session-header-divider{color:var(--border);font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.session-header-btn{background:none;border:none;padding:4px 8px;font-size:12px;font-weight:600;color:var(--text-subdued);cursor:pointer;border-radius:var(--radius-sm);transition:color var(--motion),background var(--motion);white-space:nowrap}.session-header-btn:hover{color:var(--text-default);background:var(--bg-hover)}.session-header-btn-active{color:var(--primary);background:var(--primary-soft)}.session-header-btn-exit{color:#e74c3c}.session-header-btn-exit:hover{background:#e74c3c1a}.session-char-bar{display:flex;gap:6px;padding:8px 14px;border-bottom:1px solid var(--border);background:var(--bg-secondary)}.session-char-input{padding:5px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg-elevated);color:var(--text-primary);font-size:12px;outline:none}.session-char-input:focus{border-color:var(--primary)}.session-char-picker{position:absolute;top:100%;left:0;right:0;min-width:220px;max-height:280px;overflow-y:auto;background:#1a1a2e;border:1px solid #333;border-radius:8px;box-shadow:0 8px 24px #00000080;z-index:1000}[data-theme=light] .session-char-picker{background:#fff;border-color:#d0d0d0;box-shadow:0 8px 24px #00000026}.session-char-picker-item{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:14px}.session-char-picker-item:hover{background:var(--bg-hover)}.session-messages{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px 14px;display:flex;flex-direction:column;gap:0;min-height:0}.session-msg{padding:10px 14px;border-radius:0;background:transparent;border:none;border-bottom:1px solid #c0c0c0;font-size:14px;animation:card-enter .2s ease both}[data-theme=dark] .session-msg,.dark .session-msg{border-bottom-color:#444}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .session-msg{border-bottom-color:#444}}.session-msg-system{background:var(--primary-soft);border-bottom-color:var(--border-subdued);text-align:center;font-size:12px;color:var(--text-subdued);border-radius:6px;margin:2px 0}.session-msg-mine{border-bottom-color:var(--border-subdued)}.session-msg-edited{font-size:11px;color:var(--text-disabled);font-style:italic}.session-msg-edit-btn{opacity:0;background:none;border:none;color:var(--text-disabled);font-size:12px;cursor:pointer;padding:0 4px;transition:opacity .15s,color .15s;flex-shrink:0}.session-msg:hover .session-msg-edit-btn{opacity:1}.session-msg-edit-btn:hover{color:var(--primary)}.session-msg-delete-btn{opacity:0;background:none;border:none;color:var(--text-disabled);font-size:11px;cursor:pointer;padding:0 4px;transition:opacity .15s,color .15s;flex-shrink:0}.session-msg:hover .session-msg-delete-btn{opacity:1}.session-msg-delete-btn:hover{color:#ed4245}.session-msg-edit-form{display:flex;gap:4px;align-items:center;margin-top:4px}.session-msg-edit-input{flex:1;padding:5px 8px;border:1px solid var(--primary);border-radius:4px;background:var(--bg-card);color:var(--text-default);font-size:13px;outline:none;min-width:0}.session-msg-edit-save{padding:4px 10px;border:none;border-radius:4px;background:var(--primary);color:#fff;font-size:12px;cursor:pointer;white-space:nowrap}.session-msg-edit-cancel{padding:4px 8px;border:1px solid var(--border-subdued);border-radius:4px;background:none;color:var(--text-disabled);font-size:12px;cursor:pointer;white-space:nowrap}.session-msg-header{display:flex;align-items:center;gap:6px;margin-bottom:4px}.session-msg-icon{width:24px;height:24px;border-radius:50%;-o-object-fit:cover;object-fit:cover}.session-msg-name{font-weight:700;font-size:13px;color:var(--primary)}.session-msg-time{font-size:11px;color:var(--text-disabled);margin-left:auto;display:none}.session-msg-content{line-height:1.6;color:var(--text-primary);word-break:break-word}.session-msg-dice{margin-top:4px;display:flex;flex-wrap:wrap;gap:6px}.session-dice-result{font-size:12px;padding:2px 8px;border-radius:6px;background:#f59e0b26;color:#d97706;font-weight:600}.session-dice-bar{display:flex;gap:4px;padding:6px 14px;border-top:1px solid var(--border);background:var(--bg-card);overflow-x:auto;-webkit-overflow-scrolling:touch;flex-shrink:0}.session-dice-btn{padding:6px 12px;border:1px solid var(--border-default);border-radius:14px;background:var(--bg-muted);color:var(--text-default);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .15s;flex-shrink:0;min-height:32px}.session-dice-btn:hover{background:var(--primary);color:var(--text-on-primary);border-color:var(--primary)}.session-dice-btn:active{transform:scale(.95)}.session-input-form{display:flex;gap:8px;padding:10px 14px;border-top:1px solid var(--border);background:var(--bg-elevated)}.session-input{flex:1;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);font-size:16px;outline:none;transition:border-color .15s}.session-input:focus{border-color:var(--primary)}.session-password-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000}.session-password-modal>div{background:var(--bg-elevated);padding:24px;border-radius:12px;border:1px solid var(--border);min-width:300px;display:flex;flex-direction:column;gap:12px}.session-token{position:absolute;transform:translate(-50%,-50%);z-index:5;display:flex;flex-direction:column;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:transform .05s}.session-token-dragging{z-index:20;transform:translate(-50%,-50%) scale(1.2);filter:drop-shadow(0 4px 8px rgba(0,0,0,.5))}.session-token-img{width:100%;height:100%;border-radius:50%;-o-object-fit:cover;object-fit:cover;border:2px solid rgba(255,255,255,.6);box-shadow:0 2px 6px #0006}.session-token-circle{width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;color:#fff;border:2px solid rgba(255,255,255,.6);box-shadow:0 2px 6px #0006;text-transform:uppercase}.session-token-name{font-size:9px;color:#fff;background:#0009;padding:1px 4px;border-radius:3px;margin-top:2px;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis}.roll-template{display:flex;flex-direction:column;gap:6px;margin-top:6px}.roll-card{position:relative;background:#141423eb;border:1px solid rgba(100,120,200,.2);border-radius:10px;font-size:13px;overflow:hidden}.roll-card.roll-crit-success{border-color:#facc1580;box-shadow:0 0 16px #facc1526}.roll-card.roll-crit-fail{border-color:#ef444466;box-shadow:0 0 12px #ef44441f}.roll-crit-glow{position:absolute;top:-20px;right:-20px;bottom:-20px;left:-20px;background:radial-gradient(ellipse at center,rgba(250,204,21,.12) 0%,transparent 70%);pointer-events:none;z-index:0}.roll-card-header{display:flex;align-items:center;justify-content:space-between;padding:5px 12px;background:linear-gradient(135deg,#5865f259,#5865f226);border-bottom:1px solid rgba(88,101,242,.2);position:relative;z-index:1}.roll-header-crit{background:linear-gradient(135deg,#facc154d,#c8a01426);border-bottom-color:#facc1540}.roll-header-fail{background:linear-gradient(135deg,#ef44444d,#c8323226);border-bottom-color:#ef444440}.roll-card-notation{font-family:JetBrains Mono,Fira Code,monospace;color:#ffffffb3;font-size:12px;font-weight:600;display:flex;align-items:center;gap:5px}.roll-card-dice-icon{font-size:14px;opacity:.6}.roll-card-crit-label{font-size:11px;font-weight:800;letter-spacing:1px;color:#fbbf24;text-shadow:0 0 8px rgba(251,191,36,.5);text-transform:uppercase}.roll-crit-label-fail{color:#f87171;text-shadow:0 0 8px rgba(248,113,113,.5)}.roll-card-body{position:relative;z-index:1;display:flex;align-items:center;gap:8px;padding:8px 12px;flex-wrap:nowrap}.roll-card-dice{display:flex;flex-wrap:wrap;gap:4px;align-items:center;flex:1;min-width:0}.roll-dice-group{display:inline-flex;gap:3px;align-items:center}.roll-die{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 5px;border-radius:6px;background:#ffffff14;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid rgba(255,255,255,.12);color:#ffffffe6;font-size:15px;font-weight:700;font-family:JetBrains Mono,Fira Code,monospace;transition:transform .15s ease,background .15s ease}.roll-die:hover{transform:scale(1.08);background:#ffffff24}.roll-die-max{color:#fbbf24;background:#fbbf2433;border-color:#fbbf2480;font-weight:800;text-shadow:0 0 8px rgba(251,191,36,.5)}.roll-die-min{color:#f87171;background:#f8717124;border-color:#f8717166;font-weight:800}.roll-die-dropped{opacity:.25;text-decoration:line-through}.roll-card-modifier{color:#ffffff73;font-family:JetBrains Mono,Fira Code,monospace;font-size:15px;font-weight:600;flex-shrink:0}.roll-card-total-wrap{display:flex;align-items:center;gap:6px;margin-left:auto;flex-shrink:0;padding-left:10px;border-left:1px solid rgba(255,255,255,.08)}.roll-card-total-eq{color:#fff3;font-size:18px;font-weight:300}.roll-card-total{font-weight:800;font-size:28px;color:#e2e8f0;font-family:JetBrains Mono,Fira Code,monospace;letter-spacing:-.5px}.roll-total-crit{color:#fbbf24;text-shadow:0 0 10px rgba(251,191,36,.5),0 0 20px rgba(251,191,36,.25)}.roll-total-fail{color:#f87171;text-shadow:0 0 8px rgba(248,113,113,.4)}[data-theme=light] .roll-card{background:linear-gradient(135deg,#eef0f8,#e8eaf4);border-color:#5865f233;box-shadow:0 2px 8px #00000014}[data-theme=light] .roll-card.roll-crit-success{background:linear-gradient(135deg,#fefce8,#fef3c7);border-color:#d9a70473;box-shadow:0 2px 12px #fbbf2426}[data-theme=light] .roll-card.roll-crit-fail{background:linear-gradient(135deg,#fef2f2,#fee2e2);border-color:#dc262659;box-shadow:0 2px 12px #ef44441a}[data-theme=light] .roll-card-header{background:linear-gradient(135deg,#5865f22e,#5865f214);border-bottom-color:#5865f226}[data-theme=light] .roll-header-crit{background:linear-gradient(135deg,#eab30833,#eab30814);border-bottom-color:#d9a70440}[data-theme=light] .roll-header-fail{background:linear-gradient(135deg,#dc262626,#dc26260f);border-bottom-color:#dc262633}[data-theme=light] .roll-card-notation{color:#1e293b99}[data-theme=light] .roll-card-dice-icon{opacity:.5}[data-theme=light] .roll-card-crit-label{color:#b45309;text-shadow:none}[data-theme=light] .roll-crit-label-fail{color:#dc2626;text-shadow:none}[data-theme=light] .roll-die{background:#fff;border-color:#5865f233;color:#1e293b;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:0 1px 3px #00000014;font-weight:800}[data-theme=light] .roll-die:hover{background:#f8f9ff;border-color:#5865f259}[data-theme=light] .roll-die-max{color:#92400e;background:#fef3c7;border-color:#d9a70473;box-shadow:0 1px 4px #fbbf2433;text-shadow:none}[data-theme=light] .roll-die-min{color:#991b1b;background:#fee2e2;border-color:#dc262659;box-shadow:0 1px 4px #ef44441f}[data-theme=light] .roll-card-modifier{color:#1e293b80}[data-theme=light] .roll-card-total-wrap{border-left-color:#5865f21f}[data-theme=light] .roll-card-total{color:#0f172a}[data-theme=light] .roll-card-total-eq{color:#1e293b40}[data-theme=light] .roll-total-crit{color:#92400e;text-shadow:none}[data-theme=light] .roll-total-fail{color:#991b1b;text-shadow:none}[data-theme=light] .roll-crit-glow{background:radial-gradient(ellipse at center,rgba(250,204,21,.1) 0%,transparent 70%)}@keyframes roll-enter-anim{0%{transform:translateY(8px) scale(.95);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes roll-flash-anim{0%{box-shadow:0 0 20px #facc1533}30%{box-shadow:0 0 40px #facc1599,0 0 80px #facc154d,inset 0 0 20px #facc151a}60%{box-shadow:0 0 25px #facc154d,0 0 50px #facc1526}to{box-shadow:0 0 20px #facc1533,0 0 40px #facc1514}}@keyframes roll-shake-anim{0%,to{transform:translate(0)}15%{transform:translate(-4px)}30%{transform:translate(4px)}45%{transform:translate(-3px)}60%{transform:translate(3px)}75%{transform:translate(-1px)}90%{transform:translate(1px)}}.roll-enter{animation:roll-enter-anim .3s ease both}.roll-flash{animation:roll-flash-anim 1.2s ease both,roll-enter-anim .3s ease both}.roll-shake{animation:roll-shake-anim .5s ease both,roll-enter-anim .3s ease both}[data-chat-style=bubble] .session-msg{background:var(--bg-subtle);border:none;border-radius:var(--radius-md);margin:4px 8px;padding:8px 12px;box-shadow:0 1px 2px #0000000f}[data-chat-style=bubble] .session-msg-mine{background:var(--primary-soft);margin-left:32px}[data-chat-style=bubble] .session-msg:not(.session-msg-mine):not(.session-msg-system){margin-right:32px}[data-chat-style=bubble] .session-msg-system{margin:4px 48px}[data-chat-style=compact] .session-msg{padding:3px 10px;font-size:12px;border-bottom:none}[data-chat-style=compact] .session-msg-header{display:inline;margin-right:6px}[data-chat-style=compact] .session-msg-content{display:inline}[data-chat-style=compact] .session-msg-icon{width:16px;height:16px}[data-chat-style=compact] .session-msg-name{font-size:12px}[data-chat-style=compact] .session-msg-time{font-size:10px}.cs-page{font-family:Hahmlet,Pretendard,sans-serif;color:#e0e0e0;padding:16px 20px;max-width:960px;margin:0 auto;min-height:100vh;background:#0d0d14}.cs-loading{color:#888;text-align:center;padding:48px;font-family:Hahmlet,serif}.cs-topbar{display:flex;align-items:center;gap:10px;margin-bottom:12px}.cs-back-btn{background:none;border:none;color:#8dbfd4;cursor:pointer;font-size:13px;font-family:Hahmlet,serif;padding:4px 0}.cs-back-btn:hover{color:#aee0f5}.cs-session-badge{font-size:11px;color:#57aed1;background:#57aed115;padding:2px 10px;border-radius:4px}.cs-topbar-right{margin-left:auto}.cs-save-main{padding:6px 20px;font-size:13px;font-weight:600;border-radius:4px;border:none;background:#57aed1;color:#000;cursor:pointer;font-family:Hahmlet,serif}.cs-save-main:hover{background:#6cc0e0}.cs-save-main:disabled{opacity:.4;cursor:default}.cs-title-area{display:flex;gap:20px;margin-bottom:16px;padding:12px 16px;background:#111118;border:1px solid #ffffff10;border-radius:6px}.cs-title-left{flex:2;min-width:200px}.cs-title-right{flex:1;min-width:140px}.cs-title-main{display:block;width:100%;background:none!important;border:none!important;border-bottom:1px solid #555!important;border-radius:0!important;font-size:28px!important;font-family:Hahmlet,serif;color:#fff!important;padding:0 0 4px!important;margin-bottom:4px}.cs-title-sub{display:block;width:100%;background:none!important;border:none!important;border-bottom:1px solid #333!important;border-radius:0!important;font-size:12px!important;color:#888!important;padding:2px 0!important}.cs-title-right input{display:block;width:100%;background:#1a1a22;border:1px solid #ffffff15;color:#ddd;padding:4px 6px;font-size:12px;border-radius:3px;font-family:inherit;box-sizing:border-box;margin-bottom:4px}.cs-title-right input:focus{outline:none;border-color:#57aed160}.cs-field-label{font-size:11px;color:#999;display:block;margin-bottom:2px;margin-top:4px}.cs-tabs{display:flex;gap:2px;margin-bottom:12px;border-bottom:1px solid #ffffff12}.cs-tab{padding:8px 20px;font-size:13px;font-weight:600;background:none;border:none;border-bottom:2px solid transparent;color:#888;cursor:pointer;font-family:Hahmlet,serif;transition:color .15s,border-color .15s}.cs-tab:hover{color:#ccc}.cs-tab-active{color:#57aed1;border-bottom-color:#57aed1}.cs-panel{background:#111118;border:1px solid #ffffff0a;border-radius:6px;padding:14px}.cs-profile-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.cs-field input{display:block;width:100%;background:#1a1a22;border:1px solid #ffffff15;color:#ddd;padding:6px 8px;font-size:13px;border-radius:4px;font-family:inherit;box-sizing:border-box}.cs-field input:focus{outline:none;border-color:#57aed160}.cs-hp-row{display:flex;align-items:center;gap:4px}.cs-hp-row input{width:70px;text-align:center;background:#1a1a22;border:1px solid #ffffff15;color:#ddd;padding:6px;font-size:13px;border-radius:4px;font-family:inherit}.cs-hp-row span{color:#666}.cs-stat-header{display:flex;gap:4px;padding:0 0 6px;margin-bottom:6px;border-bottom:1px solid #ffffff10;font-size:11px;color:#999}.cs-stat-h-name{flex:1}.cs-stat-h-val{width:46px;text-align:center}.cs-stat-h-dice{width:80px;text-align:center}.cs-stat-h-actions{width:120px}.cs-stat-columns{display:flex;gap:16px}.cs-stat-col{flex:1;min-width:0}.cs-stat-row{display:flex;align-items:center;gap:4px;margin-bottom:3px}.cs-stat-name{flex:1;min-width:0;background:#1a1a22;border:1px solid #ffffff12;color:#ddd;padding:5px 8px;font-size:13px;border-radius:3px;font-family:inherit;box-sizing:border-box}.cs-stat-val{width:46px;text-align:center;font-weight:700;color:#57aed1;background:#1a1a22;border:1px solid #ffffff12;padding:5px;font-size:13px;border-radius:3px;font-family:inherit;box-sizing:border-box;flex-shrink:0}.cs-dice-group{display:flex;align-items:center;gap:2px;flex-shrink:0}.cs-dice-group input{width:28px;text-align:center;background:#1a1a22;border:1px solid #ffffff12;color:#ddd;padding:4px 2px;font-size:11px;border-radius:3px;font-family:inherit;box-sizing:border-box}.cs-dice-group span{color:#666;font-size:11px}.cs-dice-mod{width:32px!important}.cs-actions{display:flex;gap:3px;flex-shrink:0}.cs-btn{padding:5px 10px;font-size:12px;border-radius:4px;border:none;cursor:pointer;font-weight:600;font-family:Hahmlet,serif;white-space:nowrap;flex-shrink:0;transition:filter .15s}.cs-btn:hover{filter:brightness(1.2)}.cs-btn-ally{background:#57aed1;color:#000}.cs-btn-enemy{background:#e05555;color:#fff}.cs-btn-del{background:#333;color:#999;font-size:11px;padding:3px 6px}.cs-add-btn{display:block;width:100%;padding:6px;font-size:11px;background:#ffffff06;border:1px dashed #ffffff18;color:#666;border-radius:4px;cursor:pointer;margin-top:6px;font-family:Hahmlet,serif}.cs-add-btn:hover{background:#ffffff12;color:#aaa}.cs-skill-card{background:#ffffff06;border:1px solid #ffffff0d;border-radius:6px;padding:10px;margin-bottom:8px}.cs-skill-fields{margin-bottom:8px}.cs-skill-top,.cs-skill-mid{display:flex;gap:6px;margin-bottom:4px}.cs-skill-top input,.cs-skill-mid input{flex:1;min-width:0;background:#1a1a22;border:1px solid #ffffff12;color:#ddd;padding:4px 6px;font-size:12px;border-radius:3px;font-family:inherit;box-sizing:border-box}.cs-skill-top input:focus,.cs-skill-mid input:focus{outline:none;border-color:#57aed160}.cs-skill-name{flex:2!important}.cs-skill-ruby{flex:1!important}.cs-skill-img-input{width:100%;background:#1a1a22;border:1px solid #ffffff12;color:#ddd;padding:4px 6px;font-size:12px;border-radius:3px;font-family:inherit;box-sizing:border-box}.cs-skill-img-input:focus{outline:none;border-color:#57aed160}.cs-skill-bottom{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:6px;border-top:1px solid #ffffff0a}@media (max-width: 768px){.cs-page{padding:10px}.cs-title-area{flex-direction:column;gap:8px}.cs-stat-columns{flex-direction:column}.cs-profile-grid{grid-template-columns:1fr}.cs-skill-bottom{flex-direction:column;align-items:flex-start}}.ffl-inline-roll{display:inline-block;padding:2px 10px;border-radius:3px;font-size:13px;font-family:Hahmlet,serif;cursor:default}.ffl-inline-roll strong{font-weight:700}.ffl-inline-ally{background:#57aed118;color:#8dbfd4}.ffl-inline-ally strong{color:#3ae7ff}.ffl-inline-enemy{background:#d13f4218;color:#d48d8e}.ffl-inline-enemy strong{color:#ff3a3d}.ffl-rt{font-family:Hahmlet,serif;max-width:260px;width:100%;word-break:break-word;box-sizing:border-box;background:#111118;border:1px solid #57aed130;border-left:3px solid #57aed1;border-radius:4px;overflow:hidden;margin:2px 0}.ffl-rt.ffl-rt-enemy{border-color:#d13f4230;border-left-color:#d13f42}.ffl-rt-head{position:relative;overflow:hidden;min-height:36px}.ffl-rt-img{position:absolute;top:0;right:0;width:100%;height:100%;z-index:0}.ffl-rt-img img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.ffl-rt-title{position:relative;z-index:1;padding:8px 10px;background:linear-gradient(90deg,#111118 20%,transparent 100%)}.ffl-rt-ruby{font-size:9px;color:#8dbfd4;display:block;line-height:1;margin-bottom:0;padding-left:15px;letter-spacing:.5px}.ffl-rt-enemy .ffl-rt-ruby{color:#d48d8e}.ffl-rt-name{font-size:15px;color:#fff;display:block;line-height:1.3}.ffl-rt-info{padding:6px 10px;border-top:1px solid #ffffff0a;font-size:11px;color:#bbb;line-height:1.5;word-break:break-word}.ffl-rt-info strong{color:#e0d8c8;font-weight:700}.ffl-rt-info em{color:#aaa;font-style:italic}.ffl-rt-info a{color:inherit;text-decoration:none}.ffl-rt-sub{padding:6px 10px;border-top:1px solid #57aed140;font-size:11px;color:#8dbfd4;line-height:1.5;word-break:break-word}.ffl-rt-sub strong{color:#e0d8c8;font-weight:700}.ffl-rt-sub em{font-style:italic}.ffl-rt-sub a{color:inherit;text-decoration:none}.ffl-rt-enemy .ffl-rt-sub{color:#d48d8e}.ffl-rt-desc{padding:6px 10px;border-top:1px solid #57aed140;font-size:11px;color:#999;line-height:1.6;word-break:break-word}.ffl-rt-desc strong{color:#e0d8c8;font-weight:700}.ffl-rt-desc em{font-style:italic}.ffl-rt-desc a{color:inherit;text-decoration:none}.ffl-rt-result{padding:5px 10px;border-top:1px solid #ffffff0a;font-size:13px;color:#ccc}.ffl-rt-result strong{color:#3ae7ff;font-weight:700}.ffl-rt-enemy .ffl-rt-result strong{color:#ff3a3d}.ffl-rt-detail{font-size:10px;color:#666;margin-left:6px}.sheet-drawer{position:fixed;top:0;right:0;width:380px;max-width:92vw;height:100%;background:#12121a;border-left:1px solid #ffffff12;z-index:100;transform:translate(100%);transition:transform .25s ease;display:flex;flex-direction:column;overflow:hidden;font-family:Hahmlet,Pretendard,sans-serif;font-size:12px;color:#ddd}.sheet-drawer-open{transform:translate(0)}.sd-header{display:flex;gap:6px;align-items:center;padding:10px 12px;background:#0e0e14;border-bottom:1px solid #ffffff12;flex-shrink:0}.sd-select{flex:1;min-width:0;padding:6px 8px;font-size:13px;border-radius:4px;border:1px solid #ffffff20;background:#1a1a22;color:#ddd}.sd-select option{background:#1a1a22;color:#ddd}.sd-save-btn{padding:5px 12px;font-size:12px;font-weight:600;border-radius:4px;border:none;background:#57aed1;color:#000;cursor:pointer;flex-shrink:0;white-space:nowrap}.sd-save-btn:disabled{opacity:.5;cursor:default}.sd-popup-btn{background:none;border:1px solid #ffffff20;color:#888;font-size:13px;cursor:pointer;padding:2px 6px;border-radius:3px;flex-shrink:0;transition:color .15s,border-color .15s}.sd-popup-btn:hover{color:#57aed1;border-color:#57aed160}.sd-close-btn{background:none;border:none;color:#888;font-size:16px;cursor:pointer;padding:2px 6px;flex-shrink:0}.sd-close-btn:hover{color:#fff}.sd-tabs{display:flex;background:#0e0e14;border-bottom:1px solid #ffffff12;flex-shrink:0}.sd-tab{flex:1;padding:8px 0;font-size:12px;font-weight:600;background:none;border:none;border-bottom:2px solid transparent;color:#888;cursor:pointer;font-family:inherit;transition:color .15s,border-color .15s}.sd-tab:hover{color:#ccc}.sd-tab-active{color:#57aed1;border-bottom-color:#57aed1}.sd-body{flex:1;overflow-y:auto;padding:10px 12px 20px}.sd-empty{color:#666;text-align:center;padding:48px 0;font-size:13px}.sd-section{margin-bottom:14px;background:#ffffff05;border:1px solid #ffffff0a;border-radius:6px;padding:10px}.sd-body input[type=text]{background:#1a1a22;border:1px solid #ffffff15;color:#ddd;padding:4px 6px;font-size:12px;border-radius:3px;width:100%;font-family:inherit;box-sizing:border-box}.sd-body input[type=text]:focus{outline:none;border-color:#57aed160}.sd-label{font-size:11px;color:#999;display:block;margin-bottom:2px}.sd-profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:6px}.sd-field{min-width:0}.sd-sp-row{display:flex;align-items:center;gap:4px;margin-top:4px}.sd-sp-input{width:56px!important;text-align:center}.sd-sp-slash{color:#666}.sd-row{display:flex;align-items:center;gap:4px;margin-bottom:3px}.sd-row-name{flex:1;min-width:0;font-size:12px!important}.sd-row-val{width:36px!important;text-align:center;font-weight:700;font-size:12px!important;color:#57aed1!important;flex-shrink:0}.sd-row-dice{display:flex;align-items:center;gap:1px;color:#666;font-size:10px;flex-shrink:0}.sd-row-dice input{width:20px!important;text-align:center;padding:2px!important;font-size:10px!important;background:#1a1a22!important}.sd-row-dice span{color:#555;font-size:10px}.sd-row-btns{display:flex;gap:2px;flex-shrink:0}.sd-btn{padding:4px 8px;font-size:11px;border-radius:3px;border:none;cursor:pointer;font-weight:600;flex-shrink:0;white-space:nowrap;transition:filter .15s}.sd-btn:hover{filter:brightness(1.2)}.sd-btn-ally{background:#57aed1;color:#000}.sd-btn-enemy{background:#e05555;color:#fff}.sd-btn-del{background:#333;color:#999;font-size:10px;padding:2px 4px}.sd-stat-divider{height:1px;background:#ffffff10;margin:8px 0}.sd-add-btn{display:block;width:100%;padding:6px;font-size:11px;background:#ffffff06;border:1px dashed #ffffff18;color:#666;border-radius:4px;cursor:pointer;margin-top:4px}.sd-add-btn:hover{background:#ffffff12;color:#aaa}.sd-skill-card{background:#ffffff06;border:1px solid #ffffff0d;border-radius:4px;padding:6px;margin-bottom:5px}.sd-skill-row2{display:flex;gap:4px;margin-bottom:3px}.sd-skill-row2 input{flex:1;min-width:0}.sd-skill-actions{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:2px}@media (max-width: 768px){.sheet-drawer{width:100%;max-width:100%}}.hover\:border-white\/40:hover{border-color:#fff6}.hover\:bg-primary-600:hover{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity, 1))}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/20:hover{background-color:#fff3}.hover\:text-primary-300:hover{--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-primary-500\/50:focus{--tw-ring-color: rgb(14 165 233 / .5)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-600:disabled{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}
