@import"https://fonts.googleapis.com/css2?family=Cinzel:wght@500;700&family=Source+Sans+3:wght@400;600;700&display=swap";:root{--bg-deep: #111a21;--bg-mid: #1b2831;--bg-surface: rgba(12, 22, 28, .72);--line: rgba(224, 196, 147, .4);--gold: #e0c493;--gold-strong: #f3d7a7;--text: #f3efe6;--muted: #b8bdc6;--ally: #3f8f7b;--enemy: #b84f44;--neutral: #6f7f96;--down: #b3772a;--dead: #6a2f2f;--shadow: 0 12px 34px rgba(0, 0, 0, .34)}*{box-sizing:border-box}body{margin:0;min-height:100vh;font-family:"Source Sans 3",system-ui,sans-serif;color:var(--text);background:radial-gradient(circle at 12% 8%,rgba(87,117,138,.24) 0,transparent 40%),radial-gradient(circle at 80% 12%,rgba(181,119,53,.2) 0,transparent 45%),linear-gradient(150deg,var(--bg-deep),#0f161c 60%,#1c2730)}h1,h2,h3,p{margin:0}button,input,select{font:inherit}input,select{width:100%;border:1px solid rgba(245,224,183,.35);border-radius:10px;background:#0a1014cc;color:var(--text);padding:.55rem .75rem}input:focus,select:focus{outline:2px solid rgba(224,196,147,.45);outline-offset:0}button{border:1px solid var(--gold);background:linear-gradient(180deg,#d6b06f,#ad7f45);color:#1e1a14;border-radius:10px;padding:.52rem .8rem;font-weight:700;cursor:pointer}button:hover{filter:brightness(1.06)}button.ghost{background:#0d181ebf;color:var(--text);border-color:#e0c49373}button.danger{border-color:#d47667cc}.page-shell,.viewer-shell{padding:clamp(.7rem,2vw,1.2rem);max-width:min(96vw,1860px);margin:0 auto}.top-banner,.viewer-header{display:flex;justify-content:space-between;gap:1rem;align-items:end;padding:1.2rem;border:1px solid var(--line);border-radius:18px;background:linear-gradient(130deg,#111e26e6,#0d1519c7);box-shadow:var(--shadow)}.viewer-header{align-items:center}.eyebrow{color:var(--gold);text-transform:uppercase;letter-spacing:.12em;font-size:.72rem}h1,h2,h3{font-family:Cinzel,serif}h1{font-size:clamp(1.6rem,3vw,2.3rem)}h2{font-size:1.25rem}.inline-field{min-width:230px;display:grid;gap:.3rem}.master-auth-summary{min-width:min(100%,360px);display:grid;gap:.6rem;justify-items:start}.master-auth-panel{margin-top:1rem;max-width:560px}.master-user-chip{display:flex;align-items:center;gap:.75rem}.master-user-chip p{color:var(--muted)}.master-user-avatar,.master-user-fallback{width:48px;height:48px;border-radius:999px;border:1px solid rgba(224,196,147,.45);background:#0a1014cc}.master-user-avatar{object-fit:cover}.master-user-fallback{display:inline-flex;align-items:center;justify-content:center;color:var(--gold-strong);font-weight:700}.google-login-slot{min-height:44px}.google-login-slot>div{max-width:100%}.auth-helper-text{color:var(--muted)}.table-controls{align-items:stretch}.table-controls>*{flex:1 1 220px}.initiative-controls{align-items:stretch}.initiative-controls>*{flex:1 1 190px}.row.wrap>label{flex:1 1 140px;min-width:120px}.grid-layout{display:grid;grid-template-columns:1fr;gap:1rem;margin-top:1rem}.panel,.viewer-panel{border:1px solid var(--line);border-radius:18px;padding:1rem;background:var(--bg-surface);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:var(--shadow);display:grid;gap:.8rem;min-width:0}.viewer-panel{background:linear-gradient(170deg,#0d161ce6,#132028d1);align-content:start}.target-picker-panel{position:relative;overflow:hidden}.target-picker-panel:after{content:"";position:absolute;inset:3.35rem .8rem .8rem;border-radius:14px;pointer-events:none;background:radial-gradient(circle at 18% 24%,rgba(113,181,255,.09),transparent 36%),radial-gradient(circle at 84% 76%,rgba(236,197,122,.1),transparent 38%),repeating-linear-gradient(135deg,#92a5be0e 0 10px,#667b9509 10px 20px);opacity:.9}.target-picker-panel>*{position:relative;z-index:1}.row{display:flex;align-items:center}.wrap{flex-wrap:wrap}.gap{gap:.6rem}.tight{gap:.3rem}.stack{display:grid}.top-space{margin-top:.5rem}.bottom-grid{margin-top:1rem;align-items:start}.error-box{margin-top:1rem;border:1px solid rgba(201,81,81,.7);background:#571d1d80;color:#f8d7d7;border-radius:12px;padding:.75rem}.dice-overlay{position:fixed;inset:0;z-index:80;background:radial-gradient(circle at 50% 45%,#f2d28e24,#070c10d9 60%),#05090cd1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;animation:overlay-fade-in .22s ease}.dice-overlay.subtle{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.dice-overlay.subtle .dice-rune-ring{opacity:.45}.dice-overlay.subtle .dice-overlay-face.rolling{animation:dice-spin .8s linear infinite,dice-glow 1.1s ease-in-out infinite alternate}.dice-overlay.insane{background:radial-gradient(circle at 50% 45%,#fad68d33,#070c10db 60%),#05090cdb}.dice-overlay.insane .dice-overlay-card{box-shadow:0 30px 56px #00000094,0 0 42px #efcb8947}.dice-overlay.insane .dice-overlay-face.rolling{animation:dice-spin .28s linear infinite,dice-glow .35s ease-in-out infinite alternate}.dice-overlay-card{width:min(94vw,380px);border:1px solid rgba(243,215,167,.52);border-radius:22px;background:radial-gradient(circle at 50% -20%,rgba(243,215,167,.22),transparent 55%),linear-gradient(155deg,#141f26f5,#0a1217f5);box-shadow:0 24px 45px #00000080,0 0 32px #efcb892e;padding:1.05rem;display:grid;gap:.78rem;text-align:center;overflow:hidden;position:relative}.dice-overlay-card:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(130deg,rgba(245,219,173,.09),transparent 36%,rgba(245,219,173,.06))}.attack-result-overlay{position:fixed;inset:0;z-index:85;display:grid;place-items:center;background:#070c1094;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:overlay-fade-in .18s ease}.attack-result-card{width:min(92vw,420px);border-radius:20px;padding:1rem;display:grid;gap:.65rem;text-align:center;border:1px solid rgba(223,194,145,.55);background:linear-gradient(145deg,#152027f2,#0d151af2);box-shadow:0 26px 46px #00000085}.attack-result-card strong{font-family:Cinzel,serif;font-size:clamp(1.5rem,4.8vw,2.3rem);letter-spacing:.06em}.attack-result-card.hit{border-color:#5fca9d9e}.attack-result-card.hit strong{color:#87debe}.attack-result-card.miss{border-color:#d5675f9e}.attack-result-card.miss strong{color:#e9a39f}.dice-overlay-card.ally{border-color:#78d1b499}.dice-overlay-card.enemy{border-color:#dc6e6e9e}.dice-overlay-card.neutral{border-color:#91a5cd99}.dice-overlay-header{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.dice-sequence-pill{border:1px solid rgba(243,215,167,.45);border-radius:999px;padding:.15rem .55rem;font-size:.72rem;color:var(--gold-strong);letter-spacing:.04em}.dice-rune-ring{display:flex;justify-content:center;gap:.65rem;color:#f3d7a7b8;letter-spacing:.12em}.dice-rune-ring>span{animation:rune-float 1.3s ease-in-out infinite}.dice-rune-ring>span:nth-child(2){animation-delay:.12s}.dice-rune-ring>span:nth-child(3){animation-delay:.24s}.dice-overlay-face{width:100px;height:100px;margin:0 auto;border:2px solid rgba(243,215,167,.8);border-radius:20px;display:grid;place-items:center;font-family:Cinzel,serif;font-size:2.2rem;font-weight:700;color:var(--gold-strong);background:radial-gradient(circle at 30% 24%,#fadba080,#2d3d4be6);box-shadow:inset 0 0 20px #0d161e73}.dice-overlay-face.rolling{animation:dice-spin .45s linear infinite,dice-glow .65s ease-in-out infinite alternate}.dice-overlay-card.invoking .dice-overlay-face{animation:summon-pop .3s ease}.dice-skip{justify-self:center;min-width:140px;font-size:.88rem}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rune-float{0%,to{transform:translateY(0);opacity:.75}50%{transform:translateY(-3px);opacity:1}}@keyframes summon-pop{0%{transform:scale(.82) rotate(-8deg);opacity:.55}to{transform:scale(1) rotate(0);opacity:1}}.viewer-link-box{border:1px solid rgba(180,152,98,.6);padding:.7rem;border-radius:12px;display:grid;gap:.6rem}code{color:var(--gold-strong);word-break:break-all}.initiative-header{display:flex;align-items:center;justify-content:space-between;gap:.8rem}.initiative-list{margin:0;padding-left:1.2rem;display:grid;gap:.45rem}.initiative-roll-history{border:1px solid rgba(215,196,152,.34);border-radius:12px;background:radial-gradient(circle at top right,rgba(235,194,125,.1),transparent 55%),#0d141ab8;box-shadow:inset 0 1px #f1dfb60f;padding:.65rem .72rem;display:grid;gap:.5rem}.roll-history-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.roll-history-title{font-size:.8rem;color:var(--gold-strong);letter-spacing:.06em;text-transform:uppercase}.roll-history-cap{border:1px solid rgba(230,197,138,.45);border-radius:999px;padding:.12rem .5rem;font-size:.68rem;letter-spacing:.03em;color:#f7e7c7eb;background:#2d221480;white-space:nowrap}.roll-history-empty{color:var(--muted);font-size:.9rem}.roll-history-list{margin:0;padding:0;list-style:none;display:grid;gap:.34rem;max-height:16.8rem;overflow-y:auto;padding-right:.15rem}.roll-history-item{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.28rem .42rem;border-radius:8px;border:1px solid rgba(120,141,160,.14);background:#1a252dbd;font-size:.87rem;transition:border-color .16s ease,background-color .16s ease}.roll-history-item:hover{border-color:#dfbe8452;background:#1e2b34db}.roll-history-name{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roll-history-result{display:inline-flex;align-items:baseline;gap:.42rem;white-space:nowrap}.roll-history-result strong{color:var(--gold-strong);font-size:.82rem}.roll-history-result em{font-style:normal;color:var(--muted);font-size:.8rem}.roll-history-item.ally{border-left:3px solid rgba(95,202,157,.78)}.roll-history-item.enemy{border-left:3px solid rgba(213,103,95,.78)}.roll-history-item.neutral{border-left:3px solid rgba(130,152,206,.75)}.initiative-item{list-style:decimal;border:1px solid rgba(183,181,160,.34);border-radius:10px;background:#0c1216cc;padding:.45rem .65rem;display:flex;justify-content:space-between;align-items:center;gap:.45rem}.initiative-item small{display:block;color:var(--muted)}.initiative-main{display:flex;align-items:center;gap:.65rem;min-width:0}.initiative-main>div{min-width:0}.initiative-main strong,.initiative-main small{overflow-wrap:anywhere}.dice-badge{border:1px solid rgba(224,196,147,.45);border-radius:999px;padding:.15rem .55rem;min-width:4.6rem;text-align:center;font-size:.77rem;font-weight:700;color:var(--gold-strong);background:#1b2730bf;transform-origin:center}.dice-badge.empty{opacity:.68;border-style:dashed}.dice-badge.rolling{animation:dice-spin .6s linear infinite,dice-glow .8s ease-in-out infinite alternate}.dice-badge.rolling.subtle{animation:dice-spin .9s linear infinite,dice-glow 1.2s ease-in-out infinite alternate}.dice-badge.rolling.insane{animation:dice-spin .34s linear infinite,dice-glow .5s ease-in-out infinite alternate}.initiative-intensity{min-width:180px;display:grid;gap:.25rem}.initiative-actions{align-items:flex-end}.initiative-actions>.initiative-intensity{flex:1 1 230px}.initiative-actions>button{flex:1 1 170px;min-height:2.35rem;align-self:flex-end}.card-toggle-button{min-width:190px}.initiative-intensity select{min-width:150px}@keyframes dice-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes dice-glow{0%{box-shadow:0 0 #f3d7a700}to{box-shadow:0 0 12px #f3d7a773}}.initiative-item.current{border-color:#f3d7a7e6;box-shadow:0 0 0 1px #f3d7a759;background:linear-gradient(130deg,#3c2d18b3,#132028d1)}.initiative-item.rolling-focus{border-color:#f4cd7ec7;box-shadow:0 0 0 1px #f4cd7e3d,0 0 16px #f4cd7e33;transform:translate(2px);transition:transform .14s ease}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:.75rem;align-items:start}.cards-grid>*{min-width:0;align-self:start}.viewer-cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr))}.target-card{border:1px solid rgba(182,176,165,.34);border-left:5px solid var(--neutral);border-radius:14px;padding:.75rem;background:#0c1318d1;color:var(--text);display:grid;justify-items:start;gap:.35rem}.target-card .hp-line,.target-card .hp-bar,.target-card .mp-bar{width:100%}.target-card strong{font-family:Cinzel,serif}.target-card small{color:var(--muted)}.target-card.ally{border-left-color:var(--ally)}.target-card.enemy{border-left-color:var(--enemy)}.target-card.neutral{border-left-color:var(--neutral)}.target-card.selected{border-color:#f3d7a7d9;box-shadow:0 0 0 1px #f3d7a747}.character-card{border:1px solid rgba(182,176,165,.34);border-left:5px solid var(--neutral);border-radius:14px;padding:.75rem;background:#0c1318d1;display:grid;gap:.7rem;align-content:start}.character-card.ally{border-left-color:var(--ally)}.character-card.enemy{border-left-color:var(--enemy)}.character-card.neutral{border-left-color:var(--neutral)}.character-card.down{box-shadow:inset 0 0 0 1px #b3772a61}.character-card.dead{box-shadow:inset 0 0 0 1px #8e464673;opacity:.9}.character-card header{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.character-title{display:flex;align-items:baseline;gap:.45rem;flex-wrap:wrap}.character-title h3{margin:0}.level-pill{border:1px solid rgba(117,188,255,.42);border-radius:999px;padding:.1rem .48rem;font-size:.72rem;letter-spacing:.05em;color:#a9ccff;text-transform:uppercase}.character-card p{color:var(--muted);font-size:.92rem}.xp-progress-text{color:#8fb5ea;font-size:.8rem;letter-spacing:.04em;margin-top:.15rem}.xp-progress-bar{margin-top:.2rem;border:1px solid rgba(208,188,131,.38);border-radius:999px;height:8px;overflow:hidden;background:#1c1b12b3}.xp-progress-fill{height:100%;background:linear-gradient(90deg,#d9a956,#f0ce88);transition:width .3s ease}.xp-progress-fill.xp-progress-near{background:linear-gradient(90deg,#ebbb67,#ffe2a3);box-shadow:0 0 10px #f7cf8359}.xp-progress-fill.xp-progress-full{background:linear-gradient(90deg,#f0c674,#ffecbf);box-shadow:0 0 12px #ffe3a080}.combat-stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.combat-stat{border:1px solid rgba(182,176,165,.32);border-radius:10px;padding:.45rem .55rem;display:grid;gap:.2rem;background:#0e161cc7}.combat-stat.readonly{opacity:.96}.combat-stat span{font-size:.78rem;color:var(--muted)}.combat-stat strong{font-size:1rem;color:var(--text)}.player-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.player-editor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;align-items:start}.player-editor-section{border:1px solid rgba(182,176,165,.26);border-radius:12px;padding:.65rem;background:#0a11168c;display:grid;gap:.5rem;align-content:start}.player-editor-section h4{margin:0;font-family:Cinzel,serif;font-size:.95rem;color:var(--gold-strong)}.player-fields-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;align-content:start}.player-fields-grid>label,.player-action-pair>label{display:grid;gap:.3rem;min-width:0}.player-action-bar{border-top:1px solid rgba(182,176,165,.22);padding-top:.6rem;display:grid;gap:.6rem}.player-action-pairs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.player-action-pair{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.6rem;align-items:end}.player-action-pair>button{white-space:nowrap}.player-action-footer{border-top:1px dashed rgba(182,176,165,.2);padding-top:.55rem;align-items:center}.player-action-footer>small{flex:1 1 100%;margin-top:.1rem}.player-link-label{color:var(--muted);font-size:.86rem}.attack-feedback{border:1px solid rgba(223,194,145,.3);border-radius:10px;padding:.35rem .5rem;font-size:.84rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.attack-feedback.hit{border-color:#5fca9d85;color:#87debe;background:#183b307a}.attack-feedback.miss{border-color:#d5675f85;color:#e9a39f;background:#4c1d1d6b}.status-pill{border:1px solid rgba(223,194,145,.45);color:var(--gold-strong);border-radius:999px;padding:.15rem .6rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em}.hp-line{display:grid;gap:.4rem}.hp-bar{border:1px solid rgba(213,211,195,.22);border-radius:999px;height:10px;overflow:hidden;background:#151a1fd6}.hp-bar>div{height:100%;background:linear-gradient(90deg,#4eb574,#74cf89);transition:width .3s ease}.hp-bar>.hp-bar-hidden{background:repeating-linear-gradient(135deg,#babfc952 0 8px,#747d8c73 8px 16px)}.hp-bar.enemy-life-track{height:14px;border-color:#d8584d85;background:#2c0e0ecc}.hp-bar>.enemy-life-bar{background:repeating-linear-gradient(135deg,#e06458d9 0 8px,#ad342df2 8px 16px)}.mp-bar{border:1px solid rgba(183,205,235,.28);border-radius:999px;height:10px;overflow:hidden;background:#0e1622d6}.mp-bar>div{height:100%;background:linear-gradient(90deg,#3e79d6,#6ca8ff);transition:width .3s ease}.mp-bar>.mp-bar-hidden{background:repeating-linear-gradient(135deg,#9ab0d057 0 8px,#6079a173 8px 16px)}.viewer-meta{display:flex;gap:.8rem;flex-wrap:wrap;color:var(--gold-strong)}.viewer-grid{margin-top:1rem;display:grid;gap:1rem}@media(min-width:980px){.grid-layout{grid-template-columns:repeat(2,minmax(0,1fr))}.table-controls>*{flex:0 1 auto}.initiative-controls>*{flex:0 1 auto}}@media(min-width:1400px){.grid-layout{gap:1.2rem}.bottom-grid{grid-template-columns:minmax(360px,.9fr) minmax(620px,1.35fr)}.viewer-grid{grid-template-columns:minmax(360px,.95fr) minmax(620px,1.45fr)}.cards-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}}@media(min-width:1760px){.bottom-grid{grid-template-columns:minmax(420px,.85fr) minmax(860px,1.45fr)}.cards-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}}@media(min-width:2200px){.page-shell,.viewer-shell{max-width:min(97vw,2280px)}.bottom-grid{grid-template-columns:minmax(440px,.72fr) minmax(480px,1fr) minmax(480px,1fr);align-items:start}.bottom-grid>.panel:last-child{grid-column:span 2}.bottom-grid .cards-grid{grid-template-columns:repeat(3,minmax(280px,1fr))}.viewer-grid{grid-template-columns:minmax(420px,.95fr) minmax(900px,1.65fr)}}@media(min-width:1280px)and (max-width:1700px){.page-shell,.viewer-shell{max-width:min(97vw,1600px)}.top-banner,.viewer-header{padding:1rem 1.1rem}.bottom-grid{grid-template-columns:minmax(330px,.9fr) minmax(560px,1.3fr)}.bottom-grid .cards-grid{grid-template-columns:repeat(2,minmax(250px,1fr))}.table-controls>*{flex:1 1 250px}.initiative-controls>*{flex:1 1 180px}}@media(min-width:1701px)and (max-width:2199px){.page-shell,.viewer-shell{max-width:min(96vw,2060px)}.bottom-grid{grid-template-columns:minmax(390px,.86fr) minmax(780px,1.42fr)}.bottom-grid .cards-grid{grid-template-columns:repeat(3,minmax(250px,1fr))}.viewer-grid{grid-template-columns:minmax(390px,.95fr) minmax(760px,1.55fr)}}@media(max-width:1120px){.bottom-grid{grid-template-columns:1fr}.cards-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.viewer-cards{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.initiative-item{flex-wrap:wrap}.initiative-item>.row{width:100%;justify-content:flex-end}.table-controls>*{flex:1 1 100%}.initiative-controls>*{flex:1 1 calc(50% - .6rem);min-width:170px}.combat-stats-grid,.player-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.player-editor-grid,.player-action-pairs{grid-template-columns:1fr}}@media(max-width:760px){.top-banner,.viewer-header{align-items:start;flex-direction:column}.inline-field{min-width:0;width:100%}.initiative-header{flex-direction:column;align-items:start}.initiative-intensity{min-width:0;width:100%}.cards-grid,.viewer-cards{grid-template-columns:1fr}.initiative-controls>*{flex:1 1 100%;min-width:0}.combat-stats-grid,.player-summary-grid,.player-fields-grid,.player-action-pair{grid-template-columns:1fr}.player-action-pair>button,.player-action-footer>button{width:100%}.initiative-list{padding-left:0}.initiative-item{list-style:none}.initiative-main{width:100%;justify-content:space-between}.initiative-main .dice-badge{margin-left:auto}.roll-history-list{max-height:14rem}.roll-history-item{align-items:flex-start;flex-direction:column;gap:.22rem}.roll-history-result{width:100%;justify-content:space-between}.row.gap.wrap>button{flex:1 1 100%}.initiative-actions>.initiative-intensity,.initiative-actions>button{flex:1 1 100%}.card-toggle-button{min-width:0}}@media(prefers-reduced-motion:reduce){html:not([data-force-motion=true]) *,html:not([data-force-motion=true]) *:before,html:not([data-force-motion=true]) *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
