:root{--font-display:"Cinzel","Times New Roman",serif;--font-body:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;--font-reading:"Crimson Pro","Georgia",serif;--color-bg-0:#14100d;--color-bg-1:#1d1611;--color-bg-2:#2a1f18;--color-surface-0:#fff9f0;--color-surface-1:#fff3df;--color-surface-2:#f4e6cc;--color-surface-dark-0:#4a2319;--color-surface-dark-1:#3b1a14;--color-text-0:#2a1d17;--color-text-1:#5f4a3f;--color-text-inverse:#fff7ed;--color-primary:#9d2817;--color-primary-strong:#7f190f;--color-accent:#d78f31;--color-info:#2f77ca;--color-success:#2e7d32;--color-warning:#d97706;--color-danger:#c62828;--color-border-0:#e8d7bc;--color-border-1:#d8c19b;--color-border-dark:rgba(255,239,214,.2);--radius-xs:8px;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-pill:999px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:32px;--space-8:40px;--shadow-1:0 6px 16px rgba(39,22,14,.12);--shadow-2:0 12px 30px rgba(39,22,14,.18);--shadow-3:0 18px 48px rgba(20,10,6,.35);--shadow-glow-gold:0 0 20px hsla(36,83%,75%,.3),0 0 40px rgba(215,143,49,.15);--shadow-glow-red:0 0 20px rgba(157,40,23,.3),0 0 40px rgba(157,40,23,.15);--shadow-glow-blue:0 0 20px rgba(42,106,168,.3),0 0 40px rgba(42,106,168,.15);--container-max:1320px;--bp-sm:640px;--bp-md:900px;--bp-lg:1200px;--monster-primary:#ae3e3e;--adventurer-primary:#2a6aa8;--temp-hp:#1e88e5;--dnd-primary:#9d2817;--dnd-secondary:#7f190f;--dnd-tertiary:#4a2319;--dnd-dark:#261912;--dnd-gold:#f4c98a;--dnd-gold-bright:#ffd685;--dnd-parchment:#fff9f0;--dnd-parchment-dark:#f6e9cf;--dnd-accent:#d78f31;--ease-out-back:cubic-bezier(0.34,1.56,0.64,1);--ease-out-expo:cubic-bezier(0.16,1,0.3,1);--ease-spring:cubic-bezier(0.175,0.885,0.32,1.275);--duration-fast:0.2s;--duration-normal:0.35s;--duration-slow:0.5s;--duration-slower:0.7s;--monster-secondary:#ffd1d1;--monster-accent:#ff9898;--monster-border:#dc5050;--adventurer-secondary:#d1e5ff;--adventurer-accent:#98c2ff;--adventurer-border:#5080dc;--neutral-bg:#f9f9f9;--card-bg:#fff;--text-color:#2a1d17;--text-light:#5f4a3f;--border-color:#ddcdb1;--shadow-color:rgba(39,22,14,.14);--green:#2e7d32;--yellow:#d97706;--red:#c62828;--blue:#2f77ca;--purple:#7c3aed;--orange:#ea580c}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%}body{font-family:var(--font-body);color:var(--color-text-0);background:radial-gradient(120% 90% at 0 0,rgba(215,143,49,.08),transparent 50%),radial-gradient(90% 80% at 100% 100%,rgba(157,40,23,.1),transparent 45%),linear-gradient(180deg,#fdf9f2,#f7ecdb);line-height:1.5}a{color:inherit}.heading-font,h1,h2,h3,h4{font-family:var(--font-display);margin:0}.body-font{font-family:var(--font-reading)}p{margin:0}button,input,select,textarea{font:inherit}.container{padding:0 var(--space-5)}.container,.page-shell{width:100%;max-width:var(--container-max);margin:0 auto}.page-shell{padding:var(--space-6) var(--space-5)}.parchment-bg{background:url("data:image/svg+xml,%3Csvg width='100' height='100' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100' height='100' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E"),radial-gradient(100% 120% at 0 0,rgba(215,143,49,.1),transparent 55%),radial-gradient(120% 120% at 100% 100%,rgba(157,40,23,.08),transparent 60%),linear-gradient(180deg,#fffefb,#fff8ea)}.dnd-page-bg{background:radial-gradient(60% 50% at 15% 20%,rgba(215,143,49,.12),transparent 60%),radial-gradient(50% 60% at 85% 80%,rgba(157,40,23,.18),transparent 55%),radial-gradient(120% 100% at 0 0,rgba(215,143,49,.16),transparent 52%),radial-gradient(100% 100% at 100% 100%,rgba(157,40,23,.24),transparent 55%),linear-gradient(150deg,#20140f,#160f0b 45%,#2b1c15)}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-track{background:rgba(107,74,50,.1);border-radius:10px}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,rgba(215,143,49,.4),rgba(102,57,32,.5));border-radius:var(--radius-pill);border:1px solid hsla(36,83%,75%,.15)}::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,rgba(215,143,49,.6),rgba(102,57,32,.7))}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}@keyframes scaleInBounce{0%{opacity:0;transform:scale(.5)}60%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes slideInLeft{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideInRight{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes shimmer{0%{background-position:-200%}to{background-position:200%}}@keyframes goldShimmer{0%,to{opacity:.4}50%{opacity:1}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes glow{0%,to{box-shadow:0 0 8px hsla(36,83%,75%,.2)}50%{box-shadow:0 0 20px hsla(36,83%,75%,.5),0 0 40px rgba(215,143,49,.2)}}@keyframes glowPulse{0%,to{opacity:.6}50%{opacity:1}}@keyframes breathe{0%,to{transform:scale(1);opacity:.8}50%{transform:scale(1.05);opacity:1}}@keyframes fireFlicker{0%,to{opacity:1;transform:scaleY(1)}25%{opacity:.85;transform:scaleY(.97)}50%{opacity:.95;transform:scaleY(1.02)}75%{opacity:.9;transform:scaleY(.98)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spinSlow{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes borderGlow{0%,to{border-color:hsla(36,83%,75%,.2)}50%{border-color:hsla(36,83%,75%,.5)}}@keyframes particleFloat{0%{transform:translateY(0) translateX(0) scale(1);opacity:0}10%{opacity:1}90%{opacity:1}to{transform:translateY(-120px) translateX(20px) scale(0);opacity:0}}@keyframes particleFloat2{0%{transform:translateY(0) translateX(0) scale(1);opacity:0}10%{opacity:.8}90%{opacity:.6}to{transform:translateY(-100px) translateX(-30px) scale(.3);opacity:0}}@keyframes particleFloat3{0%{transform:translateY(0) translateX(0) scale(.5);opacity:0}15%{opacity:.7}85%{opacity:.5}to{transform:translateY(-140px) translateX(15px) scale(0);opacity:0}}@keyframes flashRed{0%{box-shadow:inset 0 0 0 rgba(198,40,40,0)}30%{box-shadow:inset 0 0 30px rgba(198,40,40,.3)}to{box-shadow:inset 0 0 0 rgba(198,40,40,0)}}@keyframes flashGreen{0%{box-shadow:inset 0 0 0 rgba(46,125,50,0)}30%{box-shadow:inset 0 0 30px rgba(46,125,50,.3)}to{box-shadow:inset 0 0 0 rgba(46,125,50,0)}}@keyframes critGlow{0%{text-shadow:0 0 10px #ffd685;transform:scale(1)}50%{text-shadow:0 0 30px #ffd685,0 0 50px rgba(215,143,49,.5);transform:scale(1.2)}to{text-shadow:0 0 10px #ffd685;transform:scale(1)}}@keyframes fumbleShake{0%,to{transform:translateX(0)}20%{transform:translateX(-4px)}40%{transform:translateX(4px)}60%{transform:translateX(-3px)}80%{transform:translateX(2px)}}@keyframes ripple{0%{transform:scale(0);opacity:.5}to{transform:scale(4);opacity:0}}@keyframes gradientShift{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes rotateGlow{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes diceRoll{0%{transform:rotate(0deg) scale(1)}25%{transform:rotate(90deg) scale(.9)}50%{transform:rotate(180deg) scale(1.1)}75%{transform:rotate(270deg) scale(.95)}to{transform:rotate(1turn) scale(1)}}@keyframes bounceIn{0%{transform:scale(.3);opacity:0}50%{transform:scale(1.08)}70%{transform:scale(.96)}to{transform:scale(1);opacity:1}}@keyframes slideReveal{0%{-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0)}to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}@keyframes typewriter{0%{width:0}to{width:100%}}.anim-fade-in{animation:fadeIn var(--duration-normal) var(--ease-out-expo) both}.anim-fade-up{animation:fadeInUp var(--duration-slow) var(--ease-out-expo) both}.anim-fade-down{animation:fadeInDown var(--duration-slow) var(--ease-out-expo) both}.anim-fade-left{animation:fadeInLeft var(--duration-slow) var(--ease-out-expo) both}.anim-fade-right{animation:fadeInRight var(--duration-slow) var(--ease-out-expo) both}.anim-scale-in{animation:scaleIn var(--duration-normal) var(--ease-out-back) both}.anim-bounce-in{animation:bounceIn var(--duration-slower) var(--ease-spring) both}.anim-float{animation:float 3s ease-in-out infinite}.anim-glow{animation:glow 2.5s ease-in-out infinite}.anim-breathe{animation:breathe 3s ease-in-out infinite}.anim-spin{animation:spin 1s linear infinite}.anim-spin-slow{animation:spinSlow 12s linear infinite}.anim-shimmer{background:linear-gradient(90deg,transparent,hsla(36,83%,75%,.15),transparent);background-size:200% 100%;animation:shimmer 3s ease infinite}.delay-1{animation-delay:.06s}.delay-2{animation-delay:.12s}.delay-3{animation-delay:.18s}.delay-4{animation-delay:.24s}.delay-5{animation-delay:.3s}.delay-6{animation-delay:.36s}.delay-7{animation-delay:.42s}.delay-8{animation-delay:.48s}.delay-9{animation-delay:.54s}.delay-10{animation-delay:.6s}.dnd-divider{display:flex;align-items:center;gap:12px;margin:var(--space-4) 0;color:var(--dnd-gold);opacity:.5}.dnd-divider:after,.dnd-divider:before{content:"";flex:1 1;height:1px;background:linear-gradient(90deg,transparent,var(--dnd-gold),transparent)}.dnd-divider-dark{color:hsla(36,83%,75%,.4)}.dnd-divider-dark:after,.dnd-divider-dark:before{background:linear-gradient(90deg,transparent,hsla(36,83%,75%,.3),transparent)}.gold-accent-top{position:relative}.gold-accent-top:before{content:"";position:absolute;top:0;left:20px;right:20px;height:2px;background:linear-gradient(90deg,transparent,var(--dnd-gold),transparent);opacity:0;transition:opacity var(--duration-normal) ease}.gold-accent-top:hover:before{opacity:.6}.magic-border{position:relative;z-index:0}.magic-border:before{content:"";position:absolute;inset:-2px;border-radius:inherit;background:conic-gradient(from 0deg,transparent,hsla(36,83%,75%,.5),transparent,rgba(215,143,49,.3),transparent);z-index:-1;animation:rotateGlow 4s linear infinite;opacity:0;transition:opacity var(--duration-normal) ease}.magic-border:hover:before{opacity:1}.magic-border:after{content:"";position:absolute;inset:0;border-radius:inherit;background:inherit;z-index:-1}.dnd-loader{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-8);color:var(--color-text-1)}.dnd-loader-icon{width:40px;height:40px;color:var(--dnd-gold);animation:spin 2s linear infinite;filter:drop-shadow(0 0 8px rgba(244,201,138,.4))}.dnd-loader-text{font-family:var(--font-display);font-size:14px;letter-spacing:1px;animation:glowPulse 2s ease-in-out infinite}.fire-particles{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}.fire-particle{position:absolute;width:4px;height:4px;border-radius:50%;background:radial-gradient(circle,var(--dnd-gold-bright),var(--dnd-accent));filter:blur(1px)}.fire-particle:first-child{left:10%;bottom:5%;animation:particleFloat 4s ease-in-out infinite}.fire-particle:nth-child(2){left:25%;bottom:10%;animation:particleFloat2 5s ease-in-out .8s infinite}.fire-particle:nth-child(3){left:45%;bottom:3%;animation:particleFloat3 6s ease-in-out 1.5s infinite}.fire-particle:nth-child(4){left:65%;bottom:8%;animation:particleFloat 4.5s ease-in-out 2s infinite}.fire-particle:nth-child(5){left:80%;bottom:5%;animation:particleFloat2 5.5s ease-in-out .5s infinite}.fire-particle:nth-child(6){left:55%;bottom:2%;animation:particleFloat3 7s ease-in-out 3s infinite}.fire-particle:nth-child(7){left:35%;bottom:7%;animation:particleFloat 5s ease-in-out 1.2s infinite;width:3px;height:3px}.fire-particle:nth-child(8){left:90%;bottom:4%;animation:particleFloat2 6s ease-in-out 2.5s infinite;width:3px;height:3px}@media (max-width:900px){.container,.page-shell{padding-left:var(--space-4);padding-right:var(--space-4)}}.dnd-card,.ui-card{background:linear-gradient(180deg,var(--color-surface-0),var(--color-surface-1));border:1px solid var(--color-border-0);border-radius:var(--radius-md);box-shadow:var(--shadow-1);transition:transform var(--duration-normal) var(--ease-out-expo),box-shadow var(--duration-normal) var(--ease-out-expo),border-color var(--duration-normal) ease;position:relative}.dnd-card-dark,.ui-card-dark{background:radial-gradient(140% 130% at 0 0,hsla(36,83%,75%,.16),transparent 48%),linear-gradient(180deg,#592b1d,#3b1a14 55%,#2a130f);color:var(--color-text-inverse);border:1px solid var(--color-border-dark);border-radius:var(--radius-md);box-shadow:var(--shadow-3);transition:transform var(--duration-normal) var(--ease-out-expo),box-shadow var(--duration-normal) var(--ease-out-expo),border-color var(--duration-normal) ease;position:relative;overflow:hidden}.dnd-card-dark:after,.ui-card-dark:after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse at 30% 0,hsla(36,83%,75%,.06),transparent 60%);pointer-events:none}.dnd-border-ornate{position:relative}.dnd-border-ornate:after,.dnd-border-ornate:before{content:"";position:absolute;width:22px;height:22px;border:2px solid hsla(36,83%,75%,.45);pointer-events:none;transition:border-color var(--duration-normal) ease,width var(--duration-normal) ease,height var(--duration-normal) ease;z-index:2}.dnd-border-ornate:before{top:10px;left:10px;border-right:0;border-bottom:0}.dnd-border-ornate:after{right:10px;bottom:10px;border-left:0;border-top:0}.dnd-border-ornate:hover:after,.dnd-border-ornate:hover:before{border-color:hsla(36,83%,75%,.75);width:28px;height:28px}.dnd-border-4corner{position:relative}.dnd-border-4corner:before{content:"";position:absolute;top:8px;left:8px;right:8px;bottom:8px;border:1px solid hsla(36,83%,75%,.15);border-radius:4px;pointer-events:none;z-index:2;transition:border-color var(--duration-normal) ease}.dnd-border-4corner:hover:before{border-color:hsla(36,83%,75%,.35)}.dnd-btn,.dnd-btn-primary,.ui-btn-primary{border:1px solid rgba(255,243,224,.34);background:linear-gradient(135deg,var(--color-primary-strong),var(--color-primary));color:var(--color-text-inverse);border-radius:var(--radius-sm);padding:10px 14px;font-weight:600;cursor:pointer;position:relative;overflow:hidden;transition:transform var(--duration-fast) var(--ease-out-expo),box-shadow var(--duration-fast) ease,filter var(--duration-fast) ease,border-color var(--duration-fast) ease;box-shadow:0 4px 14px rgba(157,40,23,.3),inset 0 1px 0 hsla(0,0%,100%,.1)}.dnd-btn-primary:hover,.dnd-btn:hover,.ui-btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(157,40,23,.4),0 0 15px hsla(36,83%,75%,.15),inset 0 1px 0 hsla(0,0%,100%,.15);border-color:rgba(255,243,224,.5)}.dnd-btn-primary:active,.dnd-btn:active,.ui-btn-primary:active{transform:translateY(0) scale(.98);transition-duration:.08s}.dnd-btn-primary:after,.dnd-btn:after,.ui-btn-primary:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--ripple-x,50%) var(--ripple-y,50%),hsla(36,83%,75%,.3) 0,transparent 60%);opacity:0;transition:opacity .4s ease;pointer-events:none}.dnd-btn-primary:active:after,.dnd-btn:active:after,.ui-btn-primary:active:after{opacity:1;transition-duration:0s}.dnd-btn-secondary,.ui-btn-secondary{border:1px solid rgba(255,245,230,.25);background:rgba(255,244,229,.08);color:var(--color-text-inverse);border-radius:var(--radius-sm);padding:10px 14px;font-weight:600;cursor:pointer;position:relative;overflow:hidden;transition:background var(--duration-fast) ease,border-color var(--duration-fast) ease,transform var(--duration-fast) ease,box-shadow var(--duration-fast) ease}.dnd-btn-secondary:hover,.ui-btn-secondary:hover{background:rgba(255,244,229,.16);border-color:rgba(255,245,230,.45);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.2)}.dnd-btn-secondary:active,.ui-btn-secondary:active{transform:translateY(0) scale(.98)}.dnd-btn-outline,.ui-btn-outline{border:1px solid var(--color-border-1);background:linear-gradient(180deg,#fffcf6,#fff3df);color:var(--color-text-0);border-radius:var(--radius-sm);padding:9px 13px;font-weight:600;cursor:pointer;position:relative;overflow:hidden;transition:transform var(--duration-fast) ease,box-shadow var(--duration-fast) ease,border-color var(--duration-fast) ease,background var(--duration-fast) ease}.dnd-btn-outline:hover,.ui-btn-outline:hover{background:linear-gradient(180deg,#fff9f0,#ffecd1);transform:translateY(-1px);box-shadow:0 4px 12px rgba(39,22,14,.12);border-color:var(--dnd-accent)}.dnd-btn-outline:active,.ui-btn-outline:active{transform:translateY(0) scale(.98)}.dnd-btn-outline:disabled,.dnd-btn-primary:disabled,.dnd-btn-secondary:disabled,button:disabled{opacity:.52;cursor:not-allowed;transform:none!important;box-shadow:none!important}.dnd-input,.ui-input,.ui-select,.ui-textarea,input[type=email],input[type=number],input[type=password],input[type=text],select,textarea{width:100%;border-radius:var(--radius-sm);border:1px solid var(--color-border-1);background:linear-gradient(180deg,#fffdf8,#fff6e8);color:var(--color-text-0);padding:10px 12px;min-height:42px;transition:border-color var(--duration-fast) ease,box-shadow var(--duration-fast) ease,background var(--duration-fast) ease}textarea{min-height:88px;resize:vertical}.dnd-input:focus,.ui-input:focus,.ui-select:focus,.ui-textarea:focus,input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px rgba(215,143,49,.2),0 0 12px rgba(215,143,49,.1);background:linear-gradient(180deg,#fffef9,#fff8ee)}a:focus-visible,button:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(215,143,49,.3)}.alert{border-radius:var(--radius-sm);padding:12px 14px;border:1px solid;font-size:14px;margin-bottom:var(--space-4);animation:fadeInDown var(--duration-normal) var(--ease-out-expo) both;position:relative;overflow:hidden}.alert:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px}.alert-error{color:#9f1717;background:rgba(198,40,40,.1);border-color:rgba(198,40,40,.25)}.alert-error:before{background:#c62828}.alert-success{color:#166534;background:rgba(46,125,50,.12);border-color:rgba(46,125,50,.3)}.alert-success:before{background:#2e7d32}.status-badge{display:inline-flex;align-items:center;gap:6px;border-radius:var(--radius-pill);padding:5px 10px;font-size:12px;font-weight:700;letter-spacing:.3px;border:1px solid;transition:all var(--duration-fast) ease}.status-badge:before{content:"";width:7px;height:7px;border-radius:50%;flex-shrink:0}.status-waiting{color:#17569f;background:rgba(47,119,202,.14);border-color:rgba(47,119,202,.28)}.status-waiting:before{background:#2f77ca;animation:glowPulse 2s ease-in-out infinite}.status-playing{color:#1f5c23;background:rgba(46,125,50,.14);border-color:rgba(46,125,50,.28)}.status-playing:before{background:#2e7d32;animation:glowPulse 1.5s ease-in-out infinite}.status-paused{color:#8a5307;background:rgba(217,119,6,.12);border-color:rgba(217,119,6,.3)}.status-paused:before{background:#d97706}.status-ended{color:#991b1b;background:rgba(198,40,40,.12);border-color:rgba(198,40,40,.28)}.status-ended:before{background:#c62828}.mask,.modal-overlay,.status-overlay,.wizard-mask{position:fixed;inset:0;background:rgba(10,5,3,.75);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-5);animation:fadeIn .25s ease both}.dlg,.modal-content,.status-panel,.wizard{width:min(860px,100%);max-height:calc(100vh - 60px);overflow:auto;padding:var(--space-6);border-radius:var(--radius-lg);border:1px solid hsla(36,83%,75%,.2);background:radial-gradient(120% 120% at 0 0,hsla(36,83%,75%,.16),transparent 55%),linear-gradient(180deg,#592b1d,#3b1a14 55%,#2a130f);color:var(--color-text-inverse);box-shadow:0 25px 60px rgba(10,5,3,.5),0 0 30px hsla(36,83%,75%,.08);animation:scaleIn var(--duration-normal) var(--ease-out-back) both;position:relative}.dlg:before,.modal-content:before,.wizard:before{content:"";position:absolute;top:0;left:24px;right:24px;height:2px;background:linear-gradient(90deg,transparent,hsla(36,83%,75%,.5),transparent);border-radius:1px}.modal-title,.panel-title{font-family:var(--font-display);font-size:30px;margin-bottom:var(--space-5);background:linear-gradient(135deg,#fff7ed,var(--dnd-gold));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.tabs{display:flex;flex-wrap:wrap;gap:8px}.tab{border:1px solid var(--color-border-1);background:linear-gradient(180deg,#fff8ea,#ffefd5);color:var(--color-text-0);border-radius:var(--radius-pill);padding:8px 14px;font-size:14px;font-weight:600;cursor:pointer;transition:all var(--duration-fast) ease;position:relative}.tab:hover{background:linear-gradient(180deg,#fff3df,#ffe8c5);border-color:var(--dnd-accent);transform:translateY(-1px)}.tab.active{border-color:rgba(255,239,214,.3);color:var(--color-text-inverse);background:linear-gradient(135deg,var(--color-primary-strong),var(--color-primary));box-shadow:0 4px 12px rgba(157,40,23,.3),inset 0 1px 0 hsla(0,0%,100%,.1)}.empty-state{border:1px dashed var(--color-border-1);border-radius:var(--radius-md);padding:var(--space-8) var(--space-6);text-align:center;color:var(--color-text-1);background:linear-gradient(180deg,#fffdf8,#fff2db);animation:fadeIn var(--duration-slow) ease both;position:relative;overflow:hidden}.empty-state:before{content:"";position:absolute;top:0;left:0;right:0;height:100%;background:linear-gradient(90deg,transparent,hsla(36,83%,75%,.06),transparent);background-size:200% 100%;animation:shimmer 4s ease infinite}.empty-title{font-size:26px;color:var(--color-text-0);margin-bottom:var(--space-2);position:relative}.empty-subtitle{font-size:15px;position:relative}.dnd-ornament{width:58px;height:58px;opacity:.2}.dnd-ornament svg{width:100%;height:100%;color:var(--dnd-gold)}.dnd-toggle{position:relative;width:44px;height:24px;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:rgba(107,74,50,.3);border-radius:var(--radius-pill);border:1px solid var(--color-border-1);cursor:pointer;transition:background var(--duration-fast) ease,border-color var(--duration-fast) ease;flex-shrink:0;min-height:auto;padding:0}.dnd-toggle:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:linear-gradient(135deg,#fff9f0,#e8d7bc);box-shadow:0 2px 4px rgba(0,0,0,.2);transition:transform var(--duration-fast) var(--ease-out-back)}.dnd-toggle:checked{background:linear-gradient(135deg,var(--color-primary),var(--dnd-accent));border-color:hsla(36,83%,75%,.4)}.dnd-toggle:checked:after{transform:translateX(20px);background:linear-gradient(135deg,#fff,#ffd685);box-shadow:0 2px 8px hsla(36,83%,75%,.4)}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:6px;border-radius:var(--radius-pill);background:linear-gradient(90deg,rgba(107,74,50,.2),rgba(107,74,50,.3));border:none;min-height:auto;padding:0;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:linear-gradient(135deg,var(--dnd-accent),var(--color-primary));border:2px solid hsla(36,83%,75%,.6);box-shadow:0 2px 8px rgba(157,40,23,.3),0 0 10px hsla(36,83%,75%,.2);cursor:pointer;-webkit-transition:transform var(--duration-fast) ease,box-shadow var(--duration-fast) ease;transition:transform var(--duration-fast) ease,box-shadow var(--duration-fast) ease}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15);box-shadow:0 2px 12px rgba(157,40,23,.4),0 0 16px hsla(36,83%,75%,.3)}input[type=range]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:linear-gradient(135deg,var(--dnd-accent),var(--color-primary));border:2px solid hsla(36,83%,75%,.6);box-shadow:0 2px 8px rgba(157,40,23,.3);cursor:pointer}input[type=range]:focus{box-shadow:none}.auth-container{min-height:100vh;display:grid;place-items:center;padding:var(--space-6);position:relative;overflow:hidden}.auth-shell{width:100%;max-width:1080px;display:grid;grid-template-columns:1.15fr 1fr;grid-gap:var(--space-5);gap:var(--space-5);position:relative;z-index:1}.brand-card,.form-card{padding:var(--space-7)}.brand-card{position:relative;overflow:hidden;animation:fadeInLeft var(--duration-slower) var(--ease-out-expo) both}.form-card{animation:fadeInRight var(--duration-slower) var(--ease-out-expo) .15s both}.brand-mark{display:flex;align-items:center;gap:var(--space-4)}.brand-logo{width:60px;height:60px;color:var(--dnd-gold);filter:drop-shadow(0 0 12px rgba(244,201,138,.4));animation:float 4s ease-in-out infinite}.brand-title{color:#fff;font-size:34px;line-height:1.15;background:linear-gradient(135deg,#fff,var(--dnd-gold));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.brand-sub{margin-top:6px;color:rgba(255,243,224,.9)}.brand-orn .dnd-ornament{position:absolute;animation:spinSlow 30s linear infinite}.brand-orn .top-left{top:16px;right:16px}.brand-orn .bottom-right{left:24px;bottom:20px}.auth-form{margin-top:var(--space-4)}.auth-form .form-group{margin-bottom:var(--space-4)}.auth-form label{display:block;color:var(--dnd-gold);margin-bottom:8px;font-size:13px;letter-spacing:.35px}.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.full-width{width:100%}.dashboard-shell{min-height:100vh;display:grid;grid-template-columns:320px minmax(0,1fr)}.dashboard-sidebar{background:radial-gradient(130% 120% at -10% -10%,hsla(36,83%,75%,.22),transparent 50%),linear-gradient(180deg,#6a2318,#3f1a13 58%,#2b130f);color:var(--color-text-inverse);border-right:1px solid rgba(255,237,205,.14);padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4);position:relative;overflow:hidden;animation:fadeIn var(--duration-slow) ease both}.dashboard-content{min-width:0;padding:var(--space-6);animation:fadeIn var(--duration-slow) ease .1s both}.content-inner{width:100%;max-width:var(--container-max);margin:0 auto}.brand{display:flex;align-items:center;gap:var(--space-3);padding:12px;border:1px solid rgba(255,244,229,.2);border-radius:var(--radius-sm);background:rgba(255,244,229,.08);transition:background var(--duration-fast) ease,border-color var(--duration-fast) ease}.brand:hover{background:rgba(255,244,229,.12);border-color:rgba(255,244,229,.3)}.brand-icon{width:40px;height:40px;border-radius:var(--radius-xs);display:grid;place-items:center;background:linear-gradient(145deg,rgba(255,243,224,.24),rgba(255,243,224,.04));color:var(--dnd-gold);flex-shrink:0}.brand-logo{width:28px;height:28px}.brand-meta .brand-title{font-size:18px}.brand-meta .brand-sub{font-size:12px}.user-chip{display:flex;align-items:center;gap:var(--space-3);border-radius:var(--radius-sm);padding:10px;border:1px solid rgba(255,244,229,.18);background:rgba(255,244,229,.06);transition:background var(--duration-fast) ease,border-color var(--duration-fast) ease}.user-chip:hover{background:rgba(255,244,229,.12);border-color:rgba(255,244,229,.3)}.avatar,.player-avatar,.user-avatar-large{background:linear-gradient(135deg,#ab3b1c,#7f190f);border:1px solid rgba(255,239,214,.28);color:#fffdf7;display:grid;place-items:center;font-weight:700;flex-shrink:0}.avatar{width:30px;height:30px;border-radius:9px;font-size:12px}.side-actions{display:grid;grid-gap:8px;gap:8px}.side-btn{border-radius:var(--radius-sm);padding:10px 12px;border:1px solid rgba(255,244,229,.24);background:rgba(255,244,229,.1);color:#fff;cursor:pointer;font-weight:600;transition:all var(--duration-fast) ease;position:relative;overflow:hidden}.side-btn:hover{background:rgba(255,244,229,.2);border-color:rgba(255,244,229,.4);transform:translateY(-1px)}.side-btn:active{transform:translateY(0) scale(.98)}.side-btn.ghost{background:rgba(0,0,0,.14)}.side-btn.ghost:hover{background:rgba(0,0,0,.25)}.content-header{margin-bottom:var(--space-5);padding-bottom:var(--space-3);position:relative}.content-header h2{font-size:34px;color:var(--color-text-0);background:linear-gradient(135deg,var(--color-text-0),var(--color-primary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.content-header-line{height:2px;margin-top:var(--space-3);background:linear-gradient(90deg,var(--dnd-accent),var(--color-border-0),transparent);border-radius:1px}.rooms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));grid-gap:var(--space-5);gap:var(--space-5)}.room-card{padding:var(--space-5);position:relative;display:flex;flex-direction:column;gap:var(--space-3);transition:transform var(--duration-normal) var(--ease-out-expo),box-shadow var(--duration-normal) ease;animation:fadeInUp var(--duration-slow) var(--ease-out-expo) both}.room-card:hover{transform:translateY(-4px);box-shadow:0 20px 50px rgba(10,5,3,.4),0 0 20px hsla(36,83%,75%,.1)}.room-status-indicator{position:absolute;right:16px;top:16px}.room-name{font-size:26px;color:#fff;padding-right:110px;background:linear-gradient(135deg,#fff,hsla(36,83%,75%,.9));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.room-id{color:rgba(255,230,189,.9);font-size:12px;font-family:var(--font-reading)}.room-info{display:flex;flex-direction:column;gap:6px}.info-row{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid rgba(255,235,199,.1);padding-bottom:6px;transition:border-color var(--duration-fast) ease}.info-row:hover{border-color:rgba(255,235,199,.25)}.info-label{color:rgba(255,235,199,.65);font-size:12px}.info-value{color:#fff5e1;font-size:13px}.room-description{color:rgba(255,235,199,.9);font-size:13px}.room-actions{display:flex;gap:8px;margin-top:auto}.room-btn{flex:1 1;min-height:38px}.room-shell{display:grid;min-height:100vh;grid-template-columns:290px minmax(0,1fr);background:radial-gradient(120% 110% at 0 0,hsla(36,83%,75%,.2),transparent 55%),linear-gradient(180deg,#241611,#190f0b 40%,#2c1a13)}.sidebar{background:radial-gradient(140% 130% at -10% -5%,hsla(36,83%,75%,.2),transparent 50%),linear-gradient(180deg,#6a2318,#3f1a13 58%,#2b130f);color:var(--color-text-inverse);border-right:1px solid rgba(255,237,205,.14);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3);position:relative;overflow:hidden}.mobile-menu-btn{display:none;position:fixed;top:14px;left:14px;z-index:1100;width:40px;height:40px;border:1px solid rgba(255,244,229,.25);border-radius:var(--radius-xs);background:linear-gradient(135deg,rgba(89,43,29,.95),rgba(59,26,20,.95));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;padding:10px 8px;flex-direction:column;justify-content:space-between;align-items:stretch;box-shadow:0 4px 16px rgba(0,0,0,.3);transition:background var(--duration-fast) ease}.hamburger-line{display:block;height:2px;border-radius:2px;background:var(--dnd-gold);transition:transform var(--duration-normal) var(--ease-out-back),opacity var(--duration-fast) ease}.mobile-menu-btn.open .hamburger-line:first-child{transform:translateY(7px) rotate(45deg)}.mobile-menu-btn.open .hamburger-line:nth-child(2){opacity:0}.mobile-menu-btn.open .hamburger-line:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.mobile-overlay{display:none;position:fixed;inset:0;background:rgba(10,5,3,.6);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:999;animation:fadeIn .25s ease both}.nav{display:flex;flex-direction:column;gap:5px;overflow:auto}.sidebar .nav-item{display:flex;align-items:center;gap:10px;border-radius:var(--radius-sm);border:1px solid rgba(255,244,229,.1);background:rgba(255,244,229,.04);color:#fff4de!important;text-decoration:none;padding:10px 12px;position:relative;overflow:hidden;transition:all var(--duration-fast) var(--ease-out-expo)}.sidebar .nav-item:hover{background:rgba(255,244,229,.14);border-color:rgba(255,244,229,.25);transform:translateX(3px)}.sidebar .nav-item.active{background:linear-gradient(135deg,var(--color-primary-strong),var(--color-primary));border-color:rgba(255,244,229,.3);box-shadow:0 4px 16px rgba(157,40,23,.35),inset 0 1px 0 hsla(0,0%,100%,.08)}.sidebar .nav-item .icon{color:var(--dnd-gold);transition:color var(--duration-fast) ease,transform var(--duration-fast) ease;flex-shrink:0}.sidebar .nav-item:hover .icon{transform:scale(1.12)}.sidebar .nav-item.active .icon{color:#fff}.sidebar .nav-item .label{font-size:14px}.nav-active-indicator{position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--dnd-gold);box-shadow:0 0 8px hsla(36,83%,75%,.5);animation:fadeIn var(--duration-fast) ease both}.sidebar-footer{margin-top:auto}.back-btn{width:100%;display:flex;align-items:center;justify-content:center}.content{min-width:0;background:transparent;padding:var(--space-6)}.content-body{max-width:var(--container-max);margin:0 auto}.home-container{display:flex;flex-direction:column;gap:var(--space-6)}.welcome-banner{padding:var(--space-7);position:relative;overflow:hidden;animation:fadeInUp var(--duration-slow) var(--ease-out-expo) both}.welcome-banner:after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,hsla(36,83%,75%,.08) 50%,transparent 60%);background-size:200% 100%;animation:shimmer 4s ease-in-out infinite;pointer-events:none}.banner-content{position:relative;z-index:1}.welcome-title{font-size:38px;color:var(--color-primary);margin-bottom:8px;background:linear-gradient(135deg,var(--color-primary),var(--dnd-accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.welcome-subtitle{color:var(--color-text-1);margin-bottom:14px}.banner-decoration{position:absolute;width:300px;height:300px;right:-40px;top:-30px;opacity:.1;animation:spinSlow 40s linear infinite}.decoration-icon{width:100%;height:100%;color:var(--color-primary)}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:var(--space-5);gap:var(--space-5)}.info-card{padding:var(--space-5);animation:fadeInUp var(--duration-slow) var(--ease-out-expo) both;transition:transform var(--duration-normal) var(--ease-out-expo),box-shadow var(--duration-normal) ease}.info-card:first-child{animation-delay:.1s}.info-card:nth-child(2){animation-delay:.2s}.info-card:nth-child(3){animation-delay:.3s}.info-card:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(39,22,14,.15)}.card-header{display:flex;align-items:center;gap:10px;margin-bottom:var(--space-4)}.card-icon{width:28px;height:28px;color:var(--color-primary);filter:drop-shadow(0 0 4px rgba(157,40,23,.2))}.user-profile{display:flex;align-items:center;gap:14px}.user-avatar-large{width:56px;height:56px;border-radius:14px;font-size:22px;box-shadow:0 4px 12px rgba(157,40,23,.2)}.player-item{display:flex;align-items:center;gap:10px;border:1px solid var(--color-border-0);background:rgba(255,243,224,.45);border-radius:var(--radius-sm);padding:8px;transition:background var(--duration-fast) ease,border-color var(--duration-fast) ease}.player-item:hover{background:rgba(255,243,224,.7);border-color:var(--dnd-accent)}.player-avatar{width:30px;height:30px;border-radius:8px;font-size:12px}.player-online-dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 6px rgba(46,125,50,.5);animation:glowPulse 2s ease-in-out infinite;margin-left:auto;flex-shrink:0}.dm-badge{border-radius:var(--radius-pill);padding:3px 8px;font-size:11px;color:#fff;background:linear-gradient(135deg,var(--color-primary-strong),var(--color-primary));box-shadow:0 2px 6px rgba(157,40,23,.25)}.toolbar{display:flex;gap:10px;margin-bottom:14px;animation:fadeInDown var(--duration-normal) var(--ease-out-expo) both}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));grid-gap:12px;gap:12px}.embed{width:100%;animation:fadeIn var(--duration-normal) ease both}.embed .dice-panel{width:100%;max-width:none;box-shadow:none}.settings-panel{max-width:620px;padding:var(--space-6);animation:fadeInUp var(--duration-slow) var(--ease-out-expo) both}.settings-panel h3{margin-bottom:12px;font-size:28px;background:linear-gradient(135deg,var(--color-text-0),var(--color-primary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.settings-row{display:grid;grid-gap:8px;gap:8px;margin:14px 0}.switch{display:flex;align-items:center;gap:8px}@media (max-width:1200px){.dashboard-shell,.room-shell{grid-template-columns:1fr}.sidebar{position:fixed;top:0;left:0;bottom:0;width:290px;z-index:1000;transform:translateX(-100%);transition:transform var(--duration-normal) var(--ease-out-expo)}.sidebar.sidebar-open{transform:translateX(0)}.mobile-menu-btn{display:flex}.mobile-overlay{display:block}.content{padding-top:60px}}@media (max-width:900px){.auth-shell{grid-template-columns:1fr;max-width:620px}.brand-card{display:none}.content,.dashboard-content{padding:var(--space-4);padding-top:60px}.form-row,.grid,.info-grid,.rooms-grid{grid-template-columns:1fr}.room-actions,.toolbar{flex-direction:column}.content-header h2{font-size:26px}}.dice-dialog,.items-dialog,.spells-dialog{position:fixed;inset:0;background:rgba(10,5,3,.72);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-5);animation:fadeIn .25s ease both}.dice-embed,.items-embed,.spells-embed{position:static;width:100%;display:block}.dice-panel,.items-panel,.spells-panel{padding:var(--space-5);width:min(980px,100%);max-height:calc(100vh - 60px);overflow:auto;animation:scaleIn var(--duration-normal) var(--ease-out-back) both}.dice-embed .dice-panel,.items-embed .items-panel,.spells-embed .spells-panel{width:100%;max-width:none;max-height:none;animation:fadeIn var(--duration-normal) ease both}.dice-header,.items-header,.spells-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:2px solid transparent;border-image:linear-gradient(90deg,var(--dnd-accent),var(--color-border-0),transparent) 1}.dice-header h3,.items-header h3,.spells-header h3{background:linear-gradient(135deg,var(--color-text-0),var(--color-primary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.close-dice,.close-items,.close-spells{border:1px solid var(--color-border-1);background:linear-gradient(180deg,#fffdf8,#fff2db);width:34px;height:34px;border-radius:var(--radius-pill);font-size:20px;cursor:pointer;transition:all var(--duration-fast) ease}.close-dice:hover,.close-items:hover,.close-spells:hover{background:linear-gradient(180deg,#fff3df,#ffe8c5);border-color:var(--dnd-accent);transform:rotate(90deg)}.collapse-button{width:100%;margin-bottom:var(--space-3);display:flex;justify-content:space-between;align-items:center}.arrow{transition:transform var(--duration-fast) var(--ease-out-back)}.arrow.collapsed{transform:rotate(-90deg)}.filters-container{max-height:320px;overflow:hidden;transition:max-height var(--duration-normal) var(--ease-out-expo);margin-bottom:var(--space-4)}.filters-container.collapsed{max-height:0;margin-bottom:0}.filters{padding:var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--color-border-0);background:rgba(255,249,240,.72)}.filter-group{display:grid;grid-template-columns:auto 1fr auto 1fr auto 1fr;grid-gap:10px;gap:10px;align-items:center;margin-bottom:var(--space-3)}.search-box{display:flex;gap:8px;margin-bottom:var(--space-3)}.buttons{display:flex;flex-wrap:wrap;gap:8px}.dice-result,.item-results,.spell-results{max-height:520px;overflow:auto}.items-list,.spells-list{display:flex;flex-direction:column;gap:12px}.item-card,.spell-card{padding:var(--space-4);animation:fadeInUp var(--duration-normal) var(--ease-out-expo) both;transition:transform var(--duration-fast) ease,box-shadow var(--duration-fast) ease,border-color var(--duration-fast) ease}.item-card:hover,.spell-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(39,22,14,.15)}.item-header,.spell-header{margin-bottom:var(--space-2)}.item-meta,.spell-meta{display:flex;flex-wrap:wrap;gap:8px}.item-attunement,.item-rarity,.item-type,.spell-level,.spell-school{border-radius:var(--radius-pill);padding:3px 8px;font-size:12px;border:1px solid rgba(0,0,0,.08);transition:transform var(--duration-fast) ease}.item-rarity:hover,.item-type:hover,.spell-level:hover,.spell-school:hover{transform:scale(1.05)}.item-type,.spell-school{background:rgba(255,236,204,.6);color:var(--color-text-0)}.item-description,.spell-description{color:var(--color-text-1);display:grid;grid-gap:6px;gap:6px}.spell-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:6px;gap:6px;font-size:13px;color:var(--color-text-1)}.level-戏法,.rarity-普通{background:#6b7280;color:#fff}.level-1,.rarity-非普通{background:#2e7d32;color:#fff}.level-2{background:#0f766e;color:#fff}.level-3,.rarity-珍稀{background:#2563eb;color:#fff}.level-4,.rarity-非常珍稀{background:#7c3aed;color:#fff}.level-5{background:#d97706;color:#fff}.level-6,.rarity-极珍稀{background:#c2410c;color:#fff}.level-7{background:#be185d;color:#fff}.level-8,.rarity-神器{background:#111827;color:#fff}.level-9,.rarity-传说{background:#b91c1c;color:#fff}.rarity-多种{background:#0369a1;color:#fff}.item-card:has(.rarity-传说){border-color:rgba(185,28,28,.4)}.item-card:has(.rarity-传说):hover{box-shadow:0 0 20px rgba(185,28,28,.15)}.item-card:has(.rarity-神器){border-color:rgba(17,24,39,.4)}.item-card:has(.rarity-神器):hover{box-shadow:0 0 20px hsla(36,83%,75%,.2)}.item-card:has(.rarity-极珍稀){border-color:rgba(194,65,12,.3)}.item-card:has(.rarity-极珍稀):hover{box-shadow:0 0 20px rgba(194,65,12,.12)}.spell-card:has(.level-7),.spell-card:has(.level-8),.spell-card:has(.level-9){border-color:rgba(157,40,23,.3)}.spell-card:has(.level-7):hover,.spell-card:has(.level-8):hover,.spell-card:has(.level-9):hover{box-shadow:0 0 20px rgba(157,40,23,.12)}.item-attunement.required{background:#fde68a;color:#78350f}.item-attunement.not-required{background:#86efac;color:#14532d}.dice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));grid-gap:10px;gap:10px;margin-bottom:var(--space-4)}.dice-card{border:1px solid var(--color-border-0);border-radius:var(--radius-sm);background:rgba(255,249,240,.72);padding:var(--space-3);text-align:center;transition:all var(--duration-fast) ease}.dice-card:hover{border-color:var(--dnd-accent);background:rgba(255,249,240,.9);transform:translateY(-2px);box-shadow:0 6px 16px rgba(39,22,14,.12)}.dice-image{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:8px;cursor:pointer;transition:transform var(--duration-fast) ease}.dice-image:hover{transform:scale(1.1)}.dice-image:active{animation:diceRoll .5s ease}.quantity-controls{display:flex;align-items:center;justify-content:center;gap:6px}.quantity-btn{border:1px solid var(--color-border-1);background:#fff;border-radius:6px;padding:2px 6px;cursor:pointer;transition:all var(--duration-fast) ease}.quantity-btn:hover{background:var(--color-surface-1);border-color:var(--dnd-accent)}.current-quantity{min-width:20px;font-weight:700}.global-options,.roll-controls{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:var(--space-4);flex-wrap:wrap}.progress-bar-container{margin-bottom:var(--space-3)}.progress-bar{height:4px;border-radius:var(--radius-pill);background:rgba(96,60,39,.15);overflow:hidden;position:relative}.progress-bar:after{content:"";display:block;width:30%;height:100%;background:linear-gradient(90deg,var(--dnd-accent),#ea580c,var(--dnd-gold));border-radius:var(--radius-pill);animation:progress 1.4s infinite}@keyframes progress{0%{transform:translateX(-100%)}to{transform:translateX(300%)}}.roll-container{border:1px solid var(--color-border-0);border-radius:var(--radius-sm);background:rgba(255,249,240,.72);padding:10px;margin-bottom:10px;animation:fadeInUp var(--duration-normal) var(--ease-out-expo) both;transition:border-color var(--duration-fast) ease}.roll-container:first-child{border-color:var(--dnd-accent)}.roll-content h4{margin:8px 0 4px}.roll-content ul{margin:4px 0;padding-left:18px}.roll-content li{margin-bottom:2px}.roll-content .total-sum{margin-top:8px;text-align:center;color:var(--color-primary);font-weight:700;font-size:18px;font-family:var(--font-display)}.roll-timestamp{color:var(--color-text-1);font-size:11px;text-align:right}.dice-result-empty{text-align:center;color:var(--color-text-1)}.roll-crit{border-color:var(--dnd-gold)!important;box-shadow:0 0 15px hsla(36,83%,75%,.25)}.roll-crit .total-sum{color:var(--dnd-accent);animation:critGlow 1.5s ease-in-out}.roll-fumble{border-color:var(--red)!important;animation:fumbleShake .4s ease}.monster-card{background:linear-gradient(180deg,#fffefb,#fff4e0);border:1px solid var(--color-border-0);border-left:4px solid var(--color-primary);border-radius:var(--radius-sm);padding:var(--space-4);box-shadow:var(--shadow-1);transition:transform var(--duration-normal) var(--ease-out-expo),box-shadow var(--duration-normal) ease,opacity var(--duration-slow) ease,filter var(--duration-slow) ease;animation:fadeInUp var(--duration-normal) var(--ease-out-expo) both}.monster-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(39,22,14,.18)}.monster-card.monster{border-left-color:var(--monster-primary)}.monster-card.monster:hover{box-shadow:0 8px 24px rgba(174,62,62,.15)}.monster-card.adventurer{border-left-color:var(--adventurer-primary)}.monster-card.adventurer:hover{box-shadow:0 8px 24px rgba(42,106,168,.15)}.monster-card.locked{opacity:.7;filter:saturate(.6)}.monster-card.flash-damage{animation:flashRed .6s ease}.monster-card.flash-heal{animation:flashGreen .6s ease}.monster-card.is-dead{opacity:.45;filter:grayscale(.6) brightness(.85)}.monster-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px;gap:8px}.monster-name{font-size:18px;cursor:pointer;transition:color var(--duration-fast) ease}.monster-name:hover{color:var(--color-primary)}.tags-container{display:flex;flex-wrap:wrap;gap:5px}.status-badge.alive{background:rgba(46,125,50,.14);color:#14532d;border-color:rgba(46,125,50,.35)}.status-badge.alive:before{background:#2e7d32;animation:glowPulse 2s ease-in-out infinite}.status-badge.injured{background:rgba(217,119,6,.14);color:#7c2d12;border-color:rgba(217,119,6,.35)}.status-badge.injured:before{background:#d97706}.status-badge.critical{background:rgba(198,40,40,.14);color:#991b1b;border-color:rgba(198,40,40,.35)}.status-badge.critical:before{background:#c62828;animation:glowPulse 1s ease-in-out infinite}.status-badge.dead{background:rgba(55,65,81,.14);color:#111827;border-color:rgba(55,65,81,.35)}.status-badge.dead:before{background:#6b7280}.condition-tag{border:1px solid var(--color-border-1);border-radius:var(--radius-pill);padding:2px 8px;font-size:12px;background:rgba(255,234,201,.8);transition:all var(--duration-fast) ease}.condition-tag:hover{background:#ffeac9;transform:scale(1.05)}.card-actions,.damage-controls,.hp-display,.hp-inputs,.sort-buttons,.temp-hp-display{display:flex;align-items:center;gap:6px}.sort-buttons{flex-direction:column}.card-action-btn,.sort-btn{border:1px solid var(--color-border-1);background:#fff;border-radius:6px;cursor:pointer;transition:all var(--duration-fast) ease}.card-action-btn:hover,.sort-btn:hover{background:var(--color-surface-1);border-color:var(--dnd-accent);transform:scale(1.1)}.sort-btn{width:22px;height:22px}.card-action-btn{width:26px;height:26px}.delete-button{color:#991b1b}.delete-button:hover{color:#c62828;background:rgba(198,40,40,.1);border-color:rgba(198,40,40,.3)}.damage-input,.hp-input,.name-edit-input,.temp-hp-input{border:1px solid var(--color-border-1);border-radius:7px;background:#fff;min-height:34px;padding:6px 8px}.hp-input,.temp-hp-input{width:64px;text-align:center}.damage-input{width:86px}.name-edit-input{width:100%}.hp-bar-container{position:relative;margin:8px 0}.hp-bar{height:10px;background:rgba(57,87,45,.15);overflow:hidden;box-shadow:inset 0 1px 3px rgba(0,0,0,.1)}.hp-bar,.hp-bar-fill{border-radius:var(--radius-pill)}.hp-bar-fill{height:100%;background:linear-gradient(90deg,#1f9d55,#16a34a);transition:width var(--duration-slow) var(--ease-out-expo);position:relative}.hp-bar-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,hsla(0,0%,100%,.2),transparent);border-radius:inherit}.temp-hp-bar{height:4px;border-radius:var(--radius-pill);background:#2f77ca;margin-top:3px;transition:width var(--duration-slow) var(--ease-out-expo);box-shadow:0 0 6px rgba(47,119,202,.3)}.hp-bar-text{position:absolute;top:-1px;left:50%;transform:translateX(-50%);font-size:11px;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.3)}.custom-condition button,.damage-btn,.heal-btn{border:none;border-radius:8px;padding:7px 10px;color:#fff;cursor:pointer;transition:all var(--duration-fast) ease;position:relative;overflow:hidden}.damage-btn{background:linear-gradient(135deg,#9d2817,#c93f25);box-shadow:0 3px 8px rgba(157,40,23,.25)}.damage-btn:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(157,40,23,.35)}.heal-btn{background:linear-gradient(135deg,#2e7d32,#16a34a);box-shadow:0 3px 8px rgba(46,125,50,.25)}.heal-btn:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(46,125,50,.35)}.status-panel{max-width:620px;background:linear-gradient(180deg,#fffefb,#fff4e0);color:var(--color-text-0);border:1px solid var(--color-border-1)}.status-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4);border-bottom:2px solid transparent;border-image:linear-gradient(90deg,var(--dnd-accent),var(--color-border-0),transparent) 1;padding-bottom:var(--space-2)}.status-header button{border:1px solid var(--color-border-1);border-radius:var(--radius-pill);background:#fff;width:30px;height:30px;cursor:pointer;transition:all var(--duration-fast) ease}.status-header button:hover{background:var(--color-surface-1);transform:rotate(90deg)}.conditions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:8px;gap:8px;margin-bottom:var(--space-4)}.condition-item{border:1px solid var(--color-border-1);border-radius:8px;text-align:center;padding:8px;cursor:pointer;background:#fff;transition:all var(--duration-fast) ease}.condition-item:hover{border-color:var(--dnd-accent);background:rgba(255,249,240,.9);transform:translateY(-1px)}.condition-item.active{background:rgba(47,119,202,.14);border-color:rgba(47,119,202,.4);color:#17569f;box-shadow:0 0 10px rgba(47,119,202,.1)}.custom-condition{display:flex;gap:8px;margin-bottom:var(--space-3)}.custom-condition input{flex:1 1}.custom-condition button{background:linear-gradient(135deg,#7f190f,#9d2817)}.custom-condition-tag{display:inline-flex;align-items:center;gap:4px;border-radius:var(--radius-pill);border:1px solid var(--color-border-1);background:rgba(255,234,201,.82);padding:2px 8px;margin-right:6px;margin-bottom:6px;transition:all var(--duration-fast) ease}.custom-condition-tag:hover{background:#ffeac9}.custom-condition-tag button{border:none;background:transparent;cursor:pointer}.mgr .sheet{padding:var(--space-4);animation:fadeInUp var(--duration-slow) var(--ease-out-expo) both}.mgr .header{display:flex;gap:12px;align-items:flex-start;border-bottom:2px solid transparent;border-image:linear-gradient(90deg,var(--dnd-accent),var(--color-border-0),transparent) 1;padding-bottom:10px;margin-bottom:10px}.mgr .title{flex:1 1}.mgr .h1{font-family:var(--font-display);font-size:24px;background:linear-gradient(135deg,var(--color-text-0),var(--color-primary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.mgr .name-row{display:flex;align-items:center;gap:8px}.mgr .meta{color:var(--color-text-1);font-size:13px;margin-top:4px}.mgr .vitals{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.mgr .vitals .stat{background:linear-gradient(180deg,rgba(255,249,240,.9),rgba(255,243,224,.7));border:1px solid var(--color-border-0);border-radius:10px;padding:7px 10px;min-width:74px;text-align:center;transition:all var(--duration-fast) ease}.mgr .vitals .stat:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(39,22,14,.1);border-color:var(--dnd-accent)}.mgr .vitals .stat strong{font-family:var(--font-display);font-size:18px;display:block;color:var(--color-primary)}.mgr .vitals .stat span{font-size:11px;color:var(--color-text-1)}.mgr .act{display:flex;gap:6px}.mgr .tabs{margin:10px 0}.mgr .tab-panel{margin-top:8px;animation:fadeIn var(--duration-normal) ease both}.mask .dlg{width:min(900px,100%);background:linear-gradient(180deg,#fffefb,#fff4e0);color:var(--color-text-0);border:1px solid var(--color-border-1);padding:var(--space-5)}.mask .dlg:before{background:linear-gradient(90deg,transparent,var(--dnd-accent),transparent);opacity:.5}.mask .head{display:flex;align-items:center;gap:10px;margin-bottom:var(--space-3);border-bottom:2px solid transparent;border-image:linear-gradient(90deg,var(--dnd-accent),var(--color-border-0),transparent) 1;padding-bottom:8px}.mask .ops{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.mask .list{list-style:none;padding:0;margin:0;display:grid;grid-gap:8px;gap:8px;max-height:65vh;overflow:auto}.mask .item{border:1px solid var(--color-border-0);border-radius:10px;background:rgba(255,249,240,.8);padding:10px;display:flex;gap:8px;align-items:center;position:relative;transition:all var(--duration-fast) ease;cursor:pointer}.mask .item:hover{background:#fff9f0;border-color:var(--dnd-accent);transform:translateX(3px)}.mask .n{font-weight:700}.mask .c{font-size:12px;color:var(--color-text-1)}.mask .tag{margin-left:auto;background:rgba(46,125,50,.17);border:1px solid rgba(46,125,50,.4);color:#14532d;border-radius:var(--radius-pill);padding:2px 8px;font-size:11px}.mask .delete-btn{position:absolute;top:50%;right:8px;transform:translateY(-50%);border:none;background:#c62828;color:#fff;width:22px;height:22px;border-radius:var(--radius-pill);cursor:pointer;transition:all var(--duration-fast) ease}.mask .delete-btn:hover{background:#991b1b;transform:translateY(-50%) scale(1.15)}.mask li.active .item{border-color:var(--dnd-accent);box-shadow:0 0 10px rgba(215,143,49,.15)}@media (max-width:900px){.filter-group{grid-template-columns:1fr}.search-box{flex-direction:column}.spell-details{grid-template-columns:1fr}.mgr .header{flex-direction:column}.mgr .act{width:100%}.mgr .act .btn{flex:1 1}}.modal-content .form-group{margin-bottom:12px}.modal-content .form-group label{display:block;margin-bottom:6px;color:rgba(255,236,205,.95)}.checkbox-label{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.user-details .user-name{margin-bottom:2px}.action-hint,.user-role{color:var(--color-text-1);font-size:13px}.dice-embed .close-dice,.items-embed .close-items,.spells-embed .close-spells{display:none}.progress-bar-text{margin-top:6px;color:var(--color-text-1);font-size:13px;text-align:center}.form-card .tab{border-color:rgba(255,236,205,.18);background:rgba(255,236,205,.08);color:#fff6e8}.form-card .tab:hover{background:rgba(255,236,205,.15);border-color:rgba(255,236,205,.3)}.form-card .tab.active{border-color:rgba(255,236,205,.35);background:linear-gradient(135deg,var(--color-primary-strong),var(--color-primary));color:#fff}.form-card .dnd-input{background:rgba(0,0,0,.24);border-color:rgba(255,236,205,.2);color:#fff7ed}.form-card .dnd-input::placeholder{color:rgba(255,243,224,.58)}.form-card .dnd-input:focus{border-color:var(--dnd-gold);box-shadow:0 0 0 3px hsla(36,83%,75%,.15),0 0 12px hsla(36,83%,75%,.08)}.info-content{display:flex;flex-direction:column;gap:6px}.sync-btn{width:100%;margin-top:8px}.quick-actions{margin-top:12px;padding-top:12px;border-top:1px solid var(--color-border-0)}.players-list{display:flex;flex-direction:column;gap:8px;max-height:220px;overflow:auto}.user-meta .hello{font-size:12px;color:rgba(255,231,196,.84)}.user-meta .name{font-size:15px;color:#fff}.room-status{display:inline-flex}.char-content{min-width:0}.room-title{font-family:var(--font-display);font-size:16px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wizard-mask{z-index:1200}.wizard{width:min(980px,100%);max-height:calc(100vh - 60px);overflow:auto;padding:var(--space-5)}.wizard .header{display:flex;align-items:center;gap:10px}.wizard .header h3{margin:0;font-family:var(--font-display);font-size:28px;background:linear-gradient(135deg,#fff7ed,var(--dnd-gold));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.wizard .header .close{margin-left:auto;border:none;background:transparent;color:#fff5df;font-size:24px;line-height:1;cursor:pointer;transition:transform var(--duration-fast) ease}.wizard .header .close:hover{transform:rotate(90deg)}.wizard .steps{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-gap:6px;gap:6px;margin:12px 0;position:relative}.wizard .step{border-radius:8px;border:1px solid rgba(255,235,199,.2);background:rgba(255,235,199,.08);color:#f8e6c8;text-align:center;font-size:12px;padding:6px;transition:all var(--duration-fast) ease;position:relative}.wizard .step.active{border-color:rgba(255,235,199,.4);background:linear-gradient(135deg,var(--color-primary-strong),var(--color-primary));color:#fff;box-shadow:0 4px 12px rgba(157,40,23,.3)}.wizard .step.completed{background:rgba(46,125,50,.2);border-color:rgba(46,125,50,.4);color:#86efac}.wizard .body{animation:fadeIn var(--duration-normal) ease both}.wizard .body,.wizard .sec{display:flex;flex-direction:column;gap:10px}.wizard .grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-gap:8px;gap:8px}.wizard .grid2{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px}.wizard .box{border:1px solid rgba(255,235,199,.2);background:rgba(255,235,199,.06);border-radius:8px;padding:8px;display:flex;flex-direction:column;align-items:center;transition:all var(--duration-fast) ease}.wizard .box:hover{border-color:rgba(255,235,199,.4);background:rgba(255,235,199,.1);transform:translateY(-1px)}.wizard .box input{width:80px;text-align:center}.wizard .box .mod{font-weight:700;color:var(--dnd-gold)}.wizard .row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.wizard .rolls{display:flex;flex-wrap:wrap;gap:6px;font-size:12px;color:rgba(255,235,199,.86)}.wizard .classes{display:grid;grid-gap:8px;gap:8px}.wizard .cls{border:1px solid rgba(255,235,199,.2);border-radius:8px;padding:8px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:8px;gap:8px;align-items:center;transition:border-color var(--duration-fast) ease}.wizard .cls:hover{border-color:rgba(255,235,199,.35)}.wizard .skills{grid-template-columns:repeat(3,minmax(0,1fr))}.wizard .inv ul,.wizard .skills{display:grid;grid-gap:6px;gap:6px}.wizard .inv ul{list-style:none;margin:8px 0 0;padding:0}.wizard .btn{border:1px solid rgba(255,235,199,.25);background:rgba(255,235,199,.1);color:#fff;border-radius:8px;padding:8px 12px;cursor:pointer;transition:all var(--duration-fast) ease}.wizard .btn:hover{background:rgba(255,235,199,.2);border-color:rgba(255,235,199,.4);transform:translateY(-1px)}.wizard .btn.primary{background:linear-gradient(135deg,var(--color-primary-strong),var(--color-primary));border-color:rgba(255,235,199,.38);box-shadow:0 4px 12px rgba(157,40,23,.25)}.wizard .btn.primary:hover{box-shadow:0 6px 18px rgba(157,40,23,.35)}.wizard .link{border:none;background:transparent;color:#f4c98a;cursor:pointer;transition:color var(--duration-fast) ease}.wizard .link:hover{color:var(--dnd-gold-bright)}.wizard .footer{margin-top:12px;display:flex;justify-content:flex-end;gap:8px}.wizard .error{color:#fecaca;animation:fadeIn var(--duration-fast) ease both}@media (max-width:960px){.wizard .steps{grid-template-columns:repeat(4,minmax(0,1fr))}.wizard .grid{grid-template-columns:repeat(3,minmax(0,1fr))}.wizard .cls,.wizard .grid2,.wizard .skills{grid-template-columns:repeat(2,minmax(0,1fr))}}