:root{color-scheme:dark;--bg:#19191b;--surface:#242427;--raised:#2d2d31;--text:#f4eee6;--muted:#aaa6a2;--line:#3a3838;--accent:#f0a037;--accent-soft:#f0a03716;--danger:#ff8c8c;--shadow:0 16px 50px #0002;font-family:"Segoe UI",Arial,sans-serif;font-size:15px}
:root[data-theme=light]{color-scheme:light;--bg:#eeeae4;--surface:#faf5ef;--raised:#fffaf6;--text:#2d2927;--muted:#716960;--line:#d7cec2;--accent:#a45d08;--accent-soft:#a45d0810;--danger:#ad3535;--shadow:0 12px 35px #4c32100a}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{opacity:.45;cursor:not-allowed}button,select,input,textarea{border-radius:9px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:2px}input,select,textarea{background:var(--bg);border:1px solid var(--line);padding:11px 12px;color:var(--text);width:100%;min-height:44px}input[type=checkbox],input[type=radio]{width:18px;min-height:auto;accent-color:var(--accent-ink,var(--accent))}input[type=color]{padding:5px;width:58px;height:44px}textarea{resize:vertical;min-height:110px;line-height:1.65}p{line-height:1.7;margin:.55em 0}small,.muted{color:var(--muted)}small{font-size:.8rem;line-height:1.65}h1,h2,h3,h4{margin:0;font-weight:550;line-height:1.3}h1,h2,.serif{font-family:Georgia,"Times New Roman",serif}h1{font-size:clamp(2rem,3.2vw,2.8rem);font-weight:400;letter-spacing:-.025em}h2{font-size:1.55rem;font-weight:400}h3{font-size:1.06rem}h4{font-size:.94rem}.icon{width:20px;height:20px;flex:none;vertical-align:middle}hr{border:0;border-top:1px solid var(--line);margin:24px 0}.eyebrow{font-size:.69rem;font-weight:650;text-transform:uppercase;letter-spacing:.16em;color:var(--accent-ink,var(--accent))}.button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:10px 16px;border:1px solid transparent;font-weight:550;font-size:.87rem;line-height:1.3;transition:background .16s,transform .16s}.primary{background:var(--accent);color:var(--on-accent,#241c12)}.primary:hover{filter:brightness(1.1)}.secondary{background:var(--raised);border-color:var(--line)}.secondary:hover{border-color:var(--accent-ink,var(--accent))}.ghost{background:transparent;color:var(--muted)}.ghost:hover{background:var(--raised);color:var(--text)}.danger{color:var(--danger);border-color:var(--line);background:transparent}.small{font-size:.78rem;min-height:38px;padding:7px 11px}.icon-button{width:44px;height:44px;padding:10px;border:0;background:transparent;display:inline-grid;place-items:center}.icon-button:hover{background:var(--raised)}.row{display:flex;gap:12px;align-items:center}.wrap{flex-wrap:wrap}.between{justify-content:space-between}.start{align-items:flex-start}.stack{display:grid;gap:18px}.gap-sm{gap:8px}.grow{flex:1;min-width:0}.text-right{text-align:right}.accent{color:var(--accent-ink,var(--accent))}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.card{border:1px solid var(--line);border-radius:16px;background:var(--surface);padding:23px;box-shadow:var(--shadow)}.inset{background:var(--bg);border-radius:12px;padding:17px}.section-head{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:30px 0 17px}.section-head h2{font-size:1.35rem}.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border:1px solid var(--line);border-radius:5px;color:var(--muted);font-size:.67rem;letter-spacing:.04em}.tag{font-size:.72rem;color:var(--accent-ink,var(--accent));border:1px solid #a77c423e;border-radius:6px;padding:4px 8px;background:var(--accent-soft)}.field{display:grid;gap:7px;font-size:.86rem}.field>label,.field>span{font-weight:550}.fields{display:grid;gap:20px}.error{color:var(--danger);padding:12px 16px;border:1px solid #bd5d5d70;border-radius:9px;background:#bd5d5d0d;font-size:.9rem;line-height:1.6}.notice{font-size:.85rem;color:var(--muted);padding:14px 18px;border:1px solid var(--line);border-radius:10px;background:var(--accent-soft);line-height:1.65}.shell{display:grid;grid-template-columns:225px minmax(0,1fr);min-height:100dvh}.sidebar{position:sticky;top:0;height:100dvh;padding:33px 19px 22px;display:flex;flex-direction:column;border-right:1px solid var(--line);background:var(--bg);z-index:20}.brand{display:flex;align-items:center;gap:12px;font-size:27px;font-weight:700;letter-spacing:-1px;padding:0 14px 34px}.brand img{height:38px;width:38px;border-radius:12px}.brand small{font-size:.58rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;margin-left:1px;display:block}.nav-label{font-size:.62rem;text-transform:uppercase;letter-spacing:.16em;padding:12px 14px;color:var(--muted)}.nav-item{display:flex;align-items:center;gap:13px;border-radius:9px;padding:12px 14px;min-height:47px;color:var(--muted);font-size:.86rem;margin-bottom:5px}.nav-item:hover{color:var(--text);background:var(--raised)}.nav-item.active{color:var(--accent-ink,var(--accent));background:var(--accent-soft)}.sidebar-bottom{margin-top:auto}.account-mini{padding:18px 10px 0;border-top:1px solid var(--line);margin-top:15px}.account-circle{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--line);border-radius:50%;font-family:Georgia,serif;color:var(--accent-ink,var(--accent))}.workspace{min-width:0}.topbar{height:78px;display:flex;justify-content:space-between;align-items:center;padding:0 46px;border-bottom:1px solid var(--line);gap:14px}.breadcrumb{font-size:.77rem;color:var(--muted)}.breadcrumb span{color:var(--text)}.sync{font-size:.72rem;display:flex;gap:7px;align-items:center;color:var(--muted);max-width:260px}.sync:before{content:"";width:6px;height:6px;background:#9fae87;border-radius:50%;flex:none}.sync.pending:before{background:var(--accent)}.main{max-width:1240px;padding:38px 46px 65px;margin:auto;min-height:calc(100dvh - 78px)}.page-intro{display:flex;justify-content:space-between;align-items:end;gap:22px;margin-bottom:28px}.page-intro p{color:var(--muted);font-size:.91rem}.hero{display:grid;grid-template-columns:1fr 315px;min-height:260px;position:relative;overflow:hidden;background:linear-gradient(110deg,var(--surface),var(--bg));padding:38px 34px;border-radius:19px;border:1px solid var(--line)}.hero:after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.15;background-image:radial-gradient(var(--muted) .7px,transparent .7px);background-size:17px 17px;mask-image:linear-gradient(to right,transparent,black)}.hero h1{font-size:clamp(2.1rem,3vw,3.05rem);margin:14px 0 12px;max-width:460px}.hero p{font-size:.91rem;color:var(--muted);max-width:390px}.hero .button{margin-top:15px}.binx-mascot{width:340px;max-width:100%;align-self:center;position:relative;z-index:1}.hero-copy{z-index:1}.character-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.character-card{padding:24px;position:relative;transition:border-color .2s}.character-card:hover{border-color:var(--accent-ink,var(--accent))}.portrait{width:65px;height:65px;border-radius:16px;object-fit:cover;flex:none}.avatar{display:grid;place-items:center;background:color-mix(in srgb,var(--char-accent) 12%,var(--bg));border:1px solid color-mix(in srgb,var(--char-accent) 32%,transparent);color:var(--char-accent)}.avatar .icon{width:31px;height:31px}.character-card h3{font-family:Georgia,serif;font-weight:400;font-size:1.45rem}.character-meta{font-size:.78rem;color:var(--muted);margin-top:5px}.character-foot{border-top:1px solid var(--line);margin-top:23px;padding-top:15px;font-size:.78rem}.empty-card{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:11px;min-height:220px;text-align:center;border:1px dashed var(--line);border-radius:16px;padding:25px}.empty-card .plus-circle{width:44px;height:44px;border-radius:50%;background:var(--raised);display:grid;place-items:center;color:var(--accent-ink,var(--accent))}.library-link{display:block;min-height:167px;transition:border-color .2s}.library-link:hover{border-color:var(--accent-ink,var(--accent))}.library-link .icon{color:var(--accent-ink,var(--accent));height:26px;width:26px;margin-bottom:15px}.library-link p{font-size:.8rem;color:var(--muted)}.library-link .tiny-arrow{float:right;width:17px}.footer-note{text-align:center;color:var(--muted);font-size:.7rem;margin-top:42px;letter-spacing:.03em}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:25px;overflow:auto;scrollbar-width:none;position:relative}.tab{white-space:nowrap;display:flex;align-items:center;gap:8px;min-height:54px;padding:12px 17px;color:var(--muted);font-size:.84rem;border-bottom:2px solid transparent}.tab.active{border-color:var(--accent-ink,var(--accent));color:var(--accent-ink,var(--accent))}.tab:hover{color:var(--text)}.searchbox{position:relative}.searchbox .icon{position:absolute;left:14px;top:13px;color:var(--muted)}.searchbox input{padding-left:44px}.library-tools{display:flex;gap:14px;margin-bottom:23px}.library-tools .searchbox{flex:1}.library-row{padding:0;overflow:hidden;margin-bottom:12px;box-shadow:none}.library-row>summary{padding:20px 22px;display:flex;align-items:center;gap:15px;cursor:pointer;list-style:none;min-height:80px}.library-row>summary:after{content:"+";margin-left:auto;font-size:22px;color:var(--muted)}.library-row[open]>summary:after{content:"−"}.library-row>summary::-webkit-details-marker{display:none}.library-row .detail{border-top:1px solid var(--line);padding:20px 22px;font-size:.9rem;line-height:1.8}.library-row .detail p{white-space:normal}.library-row .row-icon{width:38px;height:38px;display:grid;place-items:center;color:var(--accent-ink,var(--accent));border-radius:10px;background:var(--accent-soft);flex:none}.level-label{font-family:Georgia,serif;color:var(--accent-ink,var(--accent));min-width:30px;font-size:1.3rem}.builder{max-width:850px;margin:auto}.stepper{display:flex;justify-content:space-between;gap:6px;margin:32px 0}.step{display:grid;justify-items:center;gap:7px;color:var(--muted);font-size:.67rem;flex:1;text-align:center}.step i{font-style:normal;display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--line);border-radius:50%;font-size:.77rem}.step.active{color:var(--accent-ink,var(--accent))}.step.active i{border-color:var(--accent-ink,var(--accent));background:var(--accent-soft)}.step.done i{background:var(--accent);border-color:var(--accent-ink,var(--accent));color:#241c12}.builder-body{padding:30px;min-height:360px}.builder-body h2{margin-bottom:8px}.builder-body>p{color:var(--muted);font-size:.9rem;margin-bottom:26px}.builder-footer{display:flex;justify-content:space-between;margin-top:22px;align-items:center}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.choice-card{border:1px solid var(--line);border-radius:10px;padding:15px;display:flex;gap:11px;align-items:start;background:var(--bg)}.choice-card:has(input:checked){border-color:var(--accent-ink,var(--accent));background:var(--accent-soft)}.choice-card input{margin-top:3px;flex:none}.choice-card small{display:block;margin-top:5px}.choice-card details{font-size:.79rem}.ability-inputs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.ability-inputs label{border:1px solid var(--line);border-radius:11px;padding:16px;text-align:center;display:grid;gap:10px}.ability-inputs label>span{font-size:.69rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.ability-inputs input{font-size:1.5rem;text-align:center;background:transparent;border:0;padding:3px}.check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.check{display:flex;gap:9px;align-items:center;min-height:44px;font-size:.85rem}.check input{flex:none}.chips{display:flex;gap:7px;flex-wrap:wrap}.chip{display:flex;align-items:center;gap:5px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg);font-size:.75rem;min-height:38px}.chip:has(input:checked){border-color:var(--accent-ink,var(--accent));color:var(--accent-ink,var(--accent))}.chip input{width:14px}.sheet-header{display:flex;gap:22px;align-items:center;margin-bottom:25px}.sheet-header .portrait{width:90px;height:90px;border-radius:20px}.sheet-header h1{font-size:2.5rem}.sheet-header .meta{color:var(--muted);font-size:.87rem;margin-top:8px}.sheet-toolbar{margin-left:auto;display:flex;gap:8px;align-self:start}.sheet-content{display:grid;gap:22px}.stat-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.stat{padding:18px 12px;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:12px}.stat-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);display:block;margin-bottom:8px}.stat-value{font-family:Georgia,serif;font-size:1.9rem;font-weight:400}.hp-card{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:25px;background:linear-gradient(130deg,var(--accent-soft),var(--surface))}.hp-number{font-size:2.65rem;font-family:Georgia,serif;white-space:nowrap}.hp-number small{font-family:"Segoe UI",sans-serif;font-size:1rem}.hp-bar{height:5px;background:var(--line);border-radius:4px;margin-top:15px;overflow:hidden;width:200px;max-width:100%}.hp-bar span{display:block;height:100%;background:var(--accent)}.ability-cards{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.ability-card{padding:20px 8px;background:var(--surface);border:1px solid var(--line);text-align:center;border-radius:12px;min-width:0}.ability-card:hover{border-color:var(--accent-ink,var(--accent))}.ability-card .stat-value{font-size:2rem}.ability-card .score{font-size:.8rem;margin-top:8px;color:var(--muted)}.circular .ability-card{aspect-ratio:1;border-radius:50%;padding:15px 8px}.roll-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);min-height:44px}.roll-row:last-child{border-bottom:0}.roll-row>button{display:flex;flex:1;justify-content:space-between;align-items:center;background:transparent;border:0;padding:7px 5px;min-height:34px;text-align:left}.roll-row>button:hover{color:var(--accent-ink,var(--accent))}.prof-dot{height:9px;width:9px;border:1px solid var(--muted);border-radius:50%;flex:none}.prof-dot.filled{background:var(--accent);border-color:var(--accent-ink,var(--accent))}.prof-dot.expert{box-shadow:0 0 0 3px var(--accent-soft);border:2px solid var(--text)}.roll-name{font-size:.85rem}.roll-value{font-size:.9rem;font-weight:600;color:var(--accent-ink,var(--accent))}.mode-control{display:flex;gap:3px;background:var(--bg);padding:4px;border:1px solid var(--line);border-radius:10px}.mode-control button{background:transparent;border:0;border-radius:7px;font-size:.73rem;color:var(--muted);padding:9px 10px;min-height:36px}.mode-control button.active{background:var(--raised);color:var(--text)}.pips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.pip{height:32px;width:32px;min-height:32px;border-radius:50%;font-size:25px;background:var(--accent-soft);color:var(--accent-ink,var(--accent));border:1px solid var(--accent)}.pip.spent{color:var(--muted);background:transparent;border-color:var(--line);font-size:15px}.resource-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 0;border-bottom:1px solid var(--line)}.resource-row:last-child{border:0}.action-card{padding:20px;box-shadow:none}.action-card p{font-size:.85rem;color:var(--muted)}.action-card .source{font-size:.66rem;letter-spacing:.05em;text-transform:uppercase;color:var(--accent-ink,var(--accent))}.action-card .action-controls{display:flex;gap:7px;flex-wrap:wrap;margin-top:16px}.inventory-row{display:flex;align-items:center;gap:15px;padding:18px 0;border-bottom:1px solid var(--line)}.inventory-row:last-child{border:0}.inventory-row .item-icon{width:43px;height:43px;background:var(--accent-soft);color:var(--accent-ink,var(--accent));border-radius:11px;display:grid;place-items:center}.quantity{display:flex;align-items:center;border:1px solid var(--line);border-radius:8px}.quantity button{background:transparent;border:0;min-height:36px;min-width:32px}.quantity span{min-width:25px;text-align:center;font-size:.82rem}.roll-history{display:grid;gap:9px}.roll-entry{border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:14px;display:flex;align-items:center;gap:15px}.roll-entry strong{font-size:1.6rem;font-family:Georgia,serif;min-width:35px;color:var(--accent-ink,var(--accent))}.roll-entry small{display:block}.roll-entry b{font-size:.83rem;font-weight:550}.history-bar{position:fixed;bottom:22px;right:28px;z-index:30;max-width:330px;box-shadow:0 8px 40px #0005;background:var(--raised);border:1px solid var(--accent);border-radius:14px;padding:15px 20px;animation:appear .2s ease-out;cursor:pointer}.history-bar .result{font-size:1.8rem;font-family:Georgia,serif;color:var(--accent-ink,var(--accent))}.history-bar p{font-size:.8rem;margin:0}.history-bar small{font-size:.7rem}.editor{max-width:900px;margin:auto}.editor-section{margin-top:22px}.editor-section>h3{margin-bottom:18px}.editor-row{border:1px solid var(--line);padding:18px;border-radius:10px;background:var(--bg);margin-bottom:14px}.editor-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.editor-grid .wide{grid-column:1/-1}.editor-grid .field{font-size:.77rem}.editor-grid input,.editor-grid select{padding:8px}.editor-grid textarea{min-height:75px}.progression-table{overflow:auto;max-height:340px}.progression-table table{width:100%;border-collapse:collapse;font-size:.78rem;min-width:420px}.progression-table th,.progression-table td{text-align:left;padding:7px;border-bottom:1px solid var(--line)}.progression-table input{padding:6px;min-height:34px}.progression-table th{position:sticky;top:0;background:var(--surface)}.loading{min-height:100dvh;display:grid;place-content:center;justify-items:center;gap:18px;color:var(--muted)}.loading-mark{display:grid;place-items:center;border:1px solid var(--accent);border-radius:15px;height:55px;width:55px;font-size:35px;color:var(--accent-ink,var(--accent));font-family:Georgia,serif}.login{min-height:100dvh;display:grid;place-content:center;padding:30px}.login-card{max-width:520px;text-align:center;padding:40px}.login-card .brand{justify-content:center;padding:0}.login-card h1{margin-top:15px}.login-card .binx-mascot{height:190px}.login-card .button{margin:20px 0}.login-card p{color:var(--muted);font-size:.9rem}dialog{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:19px;padding:0;max-width:680px;width:calc(100% - 32px);max-height:90dvh;box-shadow:0 30px 100px #0007}dialog::backdrop{background:#08080bc7;backdrop-filter:blur(5px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:18px 24px;position:sticky;top:0;background:var(--surface);z-index:2}.dialog-body{padding:24px;max-height:70dvh;overflow:auto}.dialog-actions{display:flex;justify-content:end;gap:10px;margin-top:25px}.dialog-body .library-row .detail{padding:16px}.dialog-body .library-row>summary{padding:15px}.empty{text-align:center;padding:50px 20px;color:var(--muted);font-size:.9rem}.skip{position:fixed;top:-100px;left:12px;padding:15px;background:var(--accent);color:#222;z-index:1000}.skip:focus{top:12px}.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}mark{background:var(--accent-soft);color:var(--accent-ink,var(--accent))}.mobile-brand{display:none}.hidden{display:none!important}.save-status{min-height:20px}.portrait-preview{display:flex;gap:24px;align-items:center}.portrait-preview .portrait{width:110px;height:110px;border-radius:24px}.radio-mode{display:flex;gap:18px;margin:18px 0}.radio-mode label{display:flex;gap:7px;align-items:center;font-size:.83rem}.spacer{height:14px}details>summary{cursor:pointer}.list-info{color:var(--muted);font-size:.85rem;line-height:1.9}.feature-summary{color:var(--muted);font-size:.82rem;margin-top:5px}.scrollable{max-height:450px;overflow:auto}.btn-link{color:var(--accent-ink,var(--accent));text-decoration:underline;text-underline-offset:4px}.note-label{font-size:.8rem;color:var(--muted)}@keyframes appear{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1450px){.main{padding-top:45px}.hero{min-height:280px}.shell{grid-template-columns:250px minmax(0,1fr)}}@media(max-width:1100px){.shell{grid-template-columns:190px minmax(0,1fr)}.sidebar{padding-left:12px;padding-right:12px}.main{padding:30px}.topbar{padding:0 30px}.hero{grid-template-columns:1fr 220px;padding:28px}.hero .binx-mascot{width:250px}.hero h1{font-size:2.5rem}.ability-cards{gap:7px}.ability-card .stat-label{font-size:.56rem}.tab{padding:12px 11px}.stat-grid{gap:8px}.stat-value{font-size:1.65rem}}@media(max-width:800px){.shell{display:block}.sidebar{height:65px;position:fixed;bottom:0;top:auto;width:100%;padding:5px 10px;flex-direction:row;justify-content:space-around;border-top:1px solid var(--line);border-right:0;background:var(--bg)}.sidebar .brand,.sidebar .nav-label,.sidebar .sidebar-bottom,.sidebar .recent-nav{display:none}.sidebar nav{display:contents}.nav-item{display:grid;justify-items:center;gap:3px;padding:6px 9px;margin:0;font-size:.59rem;min-height:50px}.nav-item .icon{width:19px;height:19px}.topbar{height:66px;padding:0 22px}.breadcrumb{display:none}.mobile-brand{display:flex;align-items:center;gap:8px;font-size:22px;font-weight:650;letter-spacing:-.5px}.mobile-brand img{width:29px;height:29px;border-radius:8px}.topbar .sync{font-size:.65rem;max-width:150px}.main{padding:27px 22px 100px}.hero{padding:28px;grid-template-columns:1fr 190px;min-height:240px}.hero h1{font-size:2.2rem}.hero .binx-mascot{width:210px}.character-grid{gap:12px}.character-card{padding:19px}.grid3{gap:12px}.library-link{padding:18px}.sheet-header{gap:16px}.sheet-header h1{font-size:2rem}.sheet-header .portrait{width:72px;height:72px}.sheet-toolbar{align-self:center}.sheet-toolbar .rest-label{display:none}.stat-grid{grid-template-columns:repeat(5,1fr)}.ability-cards{grid-template-columns:repeat(3,1fr);gap:12px}.ability-card{padding:15px}.circular .ability-card{aspect-ratio:auto;border-radius:14px}.history-bar{bottom:80px;right:18px}.tabs{position:sticky;top:0;background:var(--bg);z-index:10;margin-left:-22px;margin-right:-22px;padding:0 15px}.sheet-header+.tabs{margin-top:5px}.step span{display:none}.step i{width:31px;height:31px}.stepper{margin:23px 0}.builder-body{padding:24px}.editor-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.main{padding:23px 17px 95px}.topbar{padding:0 17px}.hero{display:block;padding:28px 23px;min-height:350px}.hero h1{font-size:2.6rem;max-width:300px;margin-top:12px}.hero p{max-width:260px}.hero .binx-mascot{position:absolute;width:175px;right:-24px;bottom:-11px;opacity:.7}.hero .button{position:relative;z-index:2}.hero-copy{position:relative}.eyebrow{font-size:.61rem}.section-head{margin-top:27px}.section-head .button{font-size:.72rem;padding:8px 10px;min-height:38px}.character-grid{grid-template-columns:1fr}.character-card{padding:21px}.empty-card{min-height:145px}.grid3{grid-template-columns:1fr}.library-link{min-height:auto;display:grid;grid-template-columns:32px 1fr;column-gap:12px;align-items:start;padding:19px}.library-link>.icon{grid-row:1/3;width:24px;height:24px;margin:0}.library-link p{margin:4px 0 0}.library-link .tiny-arrow{display:none}.grid2{grid-template-columns:1fr;gap:16px}.page-intro{align-items:start}.page-intro .button{padding:10px 12px;font-size:.75rem}.page-intro h1{font-size:2rem}.page-intro p{font-size:.83rem}.library-tools{flex-wrap:wrap;gap:10px}.library-tools .searchbox{min-width:100%}.library-row>summary{padding:17px}.library-row .detail{padding:17px}.tabs{margin-left:-17px;margin-right:-17px;padding:0 8px}.tab{padding:10px 12px;font-size:.77rem;min-height:50px}.tab .icon{display:none}.choice-grid{grid-template-columns:1fr}.check-grid{grid-template-columns:repeat(2,1fr)}.builder-body{padding:21px}.ability-inputs{gap:10px}.ability-inputs label{padding:12px}.ability-inputs label>span{font-size:.58rem}.builder-footer .button{font-size:.8rem}.sheet-header{flex-wrap:wrap;gap:14px}.sheet-header .portrait{width:65px;height:65px}.sheet-header h1{font-size:1.9rem}.sheet-header .meta{font-size:.75rem}.sheet-toolbar{margin:0;width:100%;justify-content:end}.sheet-toolbar .rest-label{display:inline}.stat-grid{grid-template-columns:repeat(3,1fr)}.stat-grid .stat:nth-child(n+4){grid-column:auto}.stat{padding:14px 10px}.stat-label{font-size:.59rem}.stat-value{font-size:1.7rem}.hp-card{padding:21px;flex-wrap:wrap}.hp-number{font-size:2.2rem}.hp-bar{width:160px}.hp-card .button{padding:10px 12px}.mode-control button{font-size:.69rem;padding:8px}.roll-tools{flex-wrap:wrap}.sheet-content{gap:17px}.card{padding:20px}.library-row{padding:0}.stat-grid+.card{padding:16px}.inventory-row{flex-wrap:wrap}.inventory-row .grow{min-width:160px}.inventory-row>.row{width:100%;justify-content:end}.editor-grid{grid-template-columns:1fr}.editor-grid .wide{grid-column:auto}.dialog-head{padding:15px 18px}.dialog-body{padding:20px}.dialog-head h2{font-size:1.25rem}.editor-row{padding:15px}.portrait-preview{flex-wrap:wrap}.portrait-preview .portrait{width:85px;height:85px}.login-card{padding:28px 22px}.history-bar{left:17px;right:17px;max-width:none}.section-head h2{font-size:1.28rem}.footer-note{margin-top:30px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(prefers-contrast:more){:root{--line:#817d77;--muted:#cac3bb}}

h1,h2,h3,.roll-entry b{overflow-wrap:anywhere}.pip{height:44px;width:44px;min-height:44px}.quantity button{min-height:44px;min-width:36px}.field-hint{font-size:.8rem;color:var(--muted)}

.toast-open{border:0;background:transparent;color:inherit;padding:0;min-width:0;flex:1;text-align:left}.toast-open small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.history-bar>.button{flex:none;width:40px;min-height:44px;padding:8px}.history-bar{gap:9px;padding:12px 14px}.toast-open .result{flex:none}.field>label{line-height:1.5}

/* Mobile and iPad: touch controls, safe areas and software-keyboard space. */
:root{--bottom-nav-height:0px;--visual-height:100dvh}
html{scroll-padding-top:72px;scroll-padding-bottom:calc(var(--bottom-nav-height) + 24px)}
body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
body:has(dialog[open]){overflow:hidden}
.nav-short{display:none}
.tabs{overscroll-behavior-x:contain}
.field,.sheet-content,.editor-row,.card,.page-intro>div{min-width:0}
.rich,.detail,.list-info,.notice,.feature-summary,.character-meta{overflow-wrap:anywhere}
.resource-row>span{flex-shrink:0;max-width:45%;overflow-wrap:anywhere}
.resource-row>.pips{justify-content:flex-end;min-width:0}
.pips{max-width:100%}
.quantity button{min-width:44px}
.button{min-width:44px}
.roll-row>button,.mode-control button,.chip,.small,.progression-table input{min-height:44px}
.roll-row>button{gap:12px}
.roll-row>button .roll-name{min-width:0;overflow-wrap:anywhere}
.roll-value{flex-shrink:0}
/* Keep the complete roll controls together until they need their own line.
   Generic row sizing otherwise shrinks this group below its contents at 390px. */
.roll-tools{flex-wrap:wrap}
.sheet-content>.row.roll-tools>.row{flex:0 1 auto;min-width:0;flex-wrap:wrap}
.mode-control{min-width:0;flex-wrap:wrap}
.stat-label{overflow-wrap:anywhere}
.check,.radio-mode label{min-height:44px}
.radio-mode{flex-wrap:wrap;gap:10px 18px}
summary{min-height:44px}
.library-row>summary{min-height:76px}
.editor-row>summary{display:flex;align-items:center}
dialog{max-height:min(90dvh,calc(var(--visual-height) - 24px));overflow:hidden}
dialog[open]{display:flex;flex-direction:column}
.dialog-head{flex:none}
.dialog-body{min-height:0;max-height:none;overflow-y:auto;overscroll-behavior-y:contain}
.dialog-actions{flex-wrap:wrap}
.dialog-actions>.button{flex:0 1 auto}
@media(pointer:coarse){
 button,a,summary{touch-action:manipulation}
 input,select,textarea,.editor-grid input,.editor-grid select,.editor-grid textarea,.progression-table input{font-size:16px}
 .character-foot>a,.btn-link{display:inline-flex;align-items:center;min-height:44px}
 .detail,.list-info,.scrollable,.dialog-body{-webkit-overflow-scrolling:touch}
}
@media(min-width:768px) and (max-width:1100px){
 .shell{display:grid;grid-template-columns:88px minmax(0,1fr)}
 .sidebar{position:sticky;top:0;bottom:auto;width:auto;height:100dvh;padding:20px 8px;flex-direction:column;justify-content:flex-start;border-top:0;border-right:1px solid var(--line)}
 .sidebar nav{display:block}
 .sidebar .brand{display:flex;justify-content:center;padding:0 0 24px}
 .sidebar .brand span,.sidebar .nav-label,.sidebar .sidebar-bottom,.sidebar .recent-nav{display:none}
 .sidebar .brand img{width:36px;height:36px}
 .sidebar .nav-item{display:flex;flex-direction:column;justify-content:center;gap:7px;min-height:72px;padding:10px 3px;margin-bottom:5px;font-size:.7rem;text-align:center}
 .nav-item .icon{height:23px;width:23px}
 .sidebar .nav-item{overflow-wrap:anywhere}
 .sidebar{overflow-y:auto;overscroll-behavior-y:contain}
 .nav-item:has(.nav-short) .nav-text{display:none}
 .nav-short{display:inline}
 .topbar{height:66px;padding:0 26px}
 .mobile-brand{display:flex;align-items:center;gap:8px;font-size:22px;font-weight:650}
 .mobile-brand img{width:29px;height:29px;border-radius:8px}
 .breadcrumb{display:none}
 .main{padding:28px 26px 48px}
 .sheet-header{gap:16px;flex-wrap:wrap}
 .sheet-header .portrait{width:72px;height:72px}
 .sheet-header h1{font-size:2.1rem}
 .sheet-toolbar{margin-left:auto;align-self:center}
 .sheet-toolbar .rest-label{display:none}
 .tabs{position:sticky;top:0;z-index:10;background:var(--bg);margin-left:-26px;margin-right:-26px;padding:0 15px}
 .tab{padding:12px 10px;gap:6px;min-height:52px}
 .ability-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
 .circular .ability-card{aspect-ratio:auto;border-radius:14px}
 .editor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .history-bar{bottom:22px}
}
@media(max-width:767px){
 :root{--bottom-nav-height:calc(max(64px, 2.5rem + 24px) + env(safe-area-inset-bottom))}
 html{scroll-padding-top:108px}
 .shell{display:block}
 .sidebar{height:var(--bottom-nav-height);position:fixed;bottom:0;top:auto;left:env(safe-area-inset-left);right:env(safe-area-inset-right);width:auto;padding:4px 5px calc(4px + env(safe-area-inset-bottom));border-top:1px solid var(--line);border-right:0;display:block;background:var(--bg);z-index:20}
 .sidebar nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px}
 .sidebar .brand,.sidebar .nav-label,.sidebar .sidebar-bottom,.sidebar .recent-nav{display:none}
 .nav-item{display:flex;flex-direction:column;justify-content:center;min-height:55px;padding:5px 2px;margin:0;gap:4px;font-size:.7rem;line-height:1.25}
 .nav-item .icon{width:21px;height:21px}
 .sidebar .nav-item{min-width:0;text-align:center}
 .sidebar .nav-text,.sidebar .nav-short{max-width:100%;overflow-wrap:anywhere}
 .nav-item:has(.nav-short) .nav-text{display:none}
 .nav-short{display:inline}
 .main{padding-bottom:calc(var(--bottom-nav-height) + 28px)}
 .topbar{padding-top:env(safe-area-inset-top);height:calc(64px + env(safe-area-inset-top))}
 .topbar>.row{min-width:0;gap:8px}
 .topbar .sync{max-width:145px;overflow-wrap:anywhere}
 input,select,textarea,.editor-grid input,.editor-grid select,.editor-grid textarea,.progression-table input{font-size:16px}
 .tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;padding:0 8px;overflow:visible;isolation:isolate;box-shadow:0 6px 12px #0001}
 .tab{justify-content:center;min-width:0;min-height:44px;padding:10px 4px;font-size:.83rem}
 .tab .icon{display:none}
 .sheet-header{gap:12px}
 .sheet-header .grow{min-width:0}
 .sheet-header h1{font-size:1.85rem}
 .sheet-header .meta{line-height:1.6}
 .sheet-toolbar{width:100%;justify-content:flex-end;flex-wrap:wrap}
 .sheet-toolbar .rest-label{display:inline}
 .page-intro{flex-wrap:wrap;gap:12px}
 .page-intro .button{min-height:44px;font-size:.85rem}
 .section-head{gap:12px;flex-wrap:wrap}
 .section-head .button{min-height:44px;font-size:.8rem}
 .section-head>div{min-width:0;flex:1 1 180px}
 .sheet-content>.row.between,.card>.row.between{flex-wrap:wrap}
 .sheet-content>.row.between>div{min-width:0;flex:1 1 170px}
 .card .row.between h2{overflow-wrap:anywhere}
 .hp-card{gap:16px}
 .hp-card>.row{flex-wrap:wrap}
 .inventory-row{display:grid;grid-template-columns:43px minmax(0,1fr);gap:12px}
 .inventory-row .grow{min-width:0}
 .inventory-row>.row{grid-column:1/-1;width:100%;flex-wrap:wrap;justify-content:flex-end}
 .inventory-row .pips{margin-top:8px}
 .inventory-row details>summary{display:flex;align-items:center}
 .resource-row{gap:10px}
 .resource-row>span{max-width:38%;font-size:.88rem}
 .pips{gap:6px}
 .history-bar{bottom:calc(var(--bottom-nav-height) + 12px);left:17px;right:17px;max-width:none}
 .history-bar>.button{width:44px}
 .builder-footer{position:sticky;bottom:var(--bottom-nav-height);z-index:11;background:var(--bg);padding:12px 0;margin-top:16px;border-top:1px solid var(--line);gap:10px}
 .builder-footer .button{min-height:46px}
 .builder-footer small{font-size:.72rem;text-align:center}
 .hero{min-height:285px}
 .hero h1{font-size:2.2rem}
 .hero .binx-mascot{width:140px;opacity:.45}
 .card,.builder-body{padding:18px}
 .library-row{padding:0}
 .check-grid{gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}
 .check{overflow-wrap:anywhere}
 .settings-presets{flex-wrap:wrap}
 dialog{width:calc(100% - 16px);max-height:calc(var(--visual-height) - 16px - env(safe-area-inset-top) - env(safe-area-inset-bottom));border-radius:16px;margin:auto}
 .dialog-head{padding:12px 16px;gap:12px}
 .dialog-head h2{font-size:1.25rem;min-width:0}
 .dialog-head>.button{flex:none;width:44px}
 .dialog-body{padding:18px;padding-bottom:max(18px,env(safe-area-inset-bottom))}
 .dialog-actions{gap:8px}
 .dialog-actions>.button{flex:1 1 125px;min-height:46px}
 .dialog-body .scrollable{max-height:none;overflow:visible}
 .keyboard-open .sidebar{visibility:hidden;pointer-events:none}
 .keyboard-open{--bottom-nav-height:0px}
 .keyboard-open .builder-footer{position:static}
 .keyboard-open .tabs{position:relative}
 .keyboard-open .history-bar{display:none}
}
@media(max-width:360px){
 .main{padding-left:12px;padding-right:12px}
 .tabs{margin-left:-12px;margin-right:-12px}
 .sheet-header .portrait{width:52px;height:52px;border-radius:13px}
 .sheet-header h1{font-size:1.6rem}
 .stat-grid{gap:7px}
 .stat{padding:12px 6px}
 .check-grid{grid-template-columns:1fr}
 .ability-inputs{gap:6px}
 .ability-inputs label{padding:9px 5px}
 .sheet-toolbar .button{padding:10px}
}

:root.keyboard-open dialog{top:calc(var(--visual-top,0px) + 8px);bottom:auto;margin:0 auto}

/* Center the reading layout at every size, including phone and tablet. */
.main,.dialog-body{text-align:center}
.page-intro,.section-head{flex-direction:column;align-items:center;text-align:center}
.page-intro>div,.section-head>div{width:100%;flex:0 1 auto}
.section-head>.row{justify-content:center}
.hero{grid-template-columns:minmax(0,1fr);justify-items:center}
.hero-copy{width:100%;text-align:center}
.hero h1,.hero p{margin-left:auto;margin-right:auto}
.hero .binx-mascot{position:relative;inset:auto;width:180px;margin:22px auto 0;opacity:1}
.sheet-header{flex-direction:column;align-items:center;text-align:center}
.sheet-header>.grow{flex:0 1 auto;width:100%}
.sheet-toolbar{justify-content:center;width:100%;flex-wrap:wrap}
.dialog-head{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center}
.dialog-head h2{grid-column:2;text-align:center}
.dialog-head>.button{grid-column:3;justify-self:end}
.dialog-actions,.settings-presets,.chips,.roll-tools{justify-content:center}
.field>label,.field>span,.field-hint{text-align:center}
.field>input[type=color]{justify-self:center}
.library-link .tiny-arrow{float:none;margin-left:8px}
.main input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=range]),
.main select,.main textarea,.dialog-body input,.dialog-body select,.dialog-body textarea{text-align:center}

/* A compact folio heading keeps the characters close to the top. */
.folio-welcome{display:grid;justify-items:center;gap:10px;margin:0 0 26px;text-align:center}
.folio-welcome .binx-mascot{width:96px;height:96px;max-width:100%;position:static}
.folio-welcome h1{font-family:Georgia,"Times New Roman",serif;font-size:clamp(2.2rem,5vw,3.4rem);font-style:italic;font-weight:400;letter-spacing:-.035em;line-height:1.15}
.folio-ornament{display:flex;align-items:center;gap:12px;color:var(--accent-ink,var(--accent));font-size:.85rem}
.folio-ornament:before,.folio-ornament:after{content:"";width:clamp(40px,9vw,90px);height:1px;background:linear-gradient(to right,transparent,var(--accent))}
.folio-ornament:after{transform:rotate(180deg)}
.folio-actions{justify-content:center;margin-top:3px}

/* Stretch the native link over the card; keep its settings button separate. */
.character-card-link:after{content:"";position:absolute;inset:0;border-radius:inherit;cursor:pointer}
.character-card [data-action="character-menu"]{position:relative;z-index:1}
.character-card:has(.character-card-link:focus-visible){outline:2px solid var(--accent);outline-offset:4px}
.character-card-link:focus-visible{outline:none}

/* Compact race summaries with independently expandable details. */
.race-grid{align-items:start;gap:14px}
.race-card{min-width:0;border:1px solid var(--line);border-radius:13px;background:var(--bg);overflow:hidden}
.race-card:has(input:checked){border-color:var(--accent-ink,var(--accent));background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}
.race-card:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:3px}
.race-choice{display:flex;align-items:center;gap:10px;min-height:56px;padding:14px 16px 10px;cursor:pointer}
.race-choice input{flex:none;margin:0}
.race-name{flex:1;min-width:0;font-family:Georgia,"Times New Roman",serif;font-size:1.25rem;line-height:1.3;overflow-wrap:anywhere}
.race-choice .badge{flex:none;font-size:.6rem;padding:3px 5px}
.race-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;padding:8px 12px 12px}
.race-facts>div{min-width:0}
.race-facts dt{color:var(--muted);font-size:.72rem;line-height:1.5}
.race-facts dd{margin:3px 0 0;font-size:.88rem;line-height:1.4;overflow-wrap:anywhere}
.race-bonuses{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;padding:0 12px 12px}
.race-bonuses .tag{font-size:.74rem;line-height:1.4}
.race-details{border-top:1px solid var(--line);font-size:.85rem}
.race-details>summary{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 14px;min-height:44px;cursor:pointer;color:var(--accent-ink,var(--accent));list-style:none}
.race-details>summary::-webkit-details-marker{display:none}
.race-details>summary:after{content:"+";font-size:1.15rem;line-height:1}
.race-details[open]>summary:after{content:"−"}
.race-detail-body{border-top:1px solid var(--line);padding:14px 16px;line-height:1.65;overflow-wrap:anywhere}
.race-detail-body p{font-size:.86rem;margin:5px 0 0}
.race-detail-body section{margin-top:16px}
.race-detail-body h4{font-size:.9rem}

/* Shared card alignment. Skills, resources and table columns retain their
   label/value layout so related values remain easy to compare. */
.card,.choice-card,.race-card,.editor-row{text-align:center}
.card-heading,.centered-controls{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center}
.card-heading{width:100%;margin-bottom:10px}
.card-heading>div,.card-heading>h2,.card-heading>h3{min-width:0;max-width:100%;text-align:center}
.card-heading-control{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:start;gap:8px}
.card-heading-control>div{grid-column:2;grid-row:1;width:100%}
.card-heading-control>.button{grid-column:3;grid-row:1;justify-self:end;width:44px;padding:10px}
.action-card>.source{display:block;text-align:center;margin-bottom:8px}
.action-card>.row.wrap,.action-card .action-controls,.card .detail>.row.wrap,.card .chips,.card .pips:not(.resource-row>.pips){justify-content:center}
.action-card p{margin-left:auto;margin-right:auto}
.hp-card .text-right{text-align:center}
.hp-card .hp-bar{margin-left:auto;margin-right:auto}
.choice-grid{align-items:start}
.choice-card{display:grid;grid-template-columns:18px minmax(0,1fr) 18px;column-gap:10px}
.choice-card>input{grid-column:1;grid-row:1}
.choice-card>span{grid-column:2;grid-row:1;min-width:0;overflow-wrap:anywhere;text-align:center}
.race-choice{display:grid;grid-template-columns:18px minmax(0,1fr) 18px;column-gap:10px;row-gap:6px}
.race-choice>input{grid-column:1;grid-row:1}
.race-choice>.race-name{grid-column:2;grid-row:1;text-align:center}
.race-choice>.badge{grid-column:2;grid-row:2;justify-self:center}
.library-row>summary{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;column-gap:10px;row-gap:6px}
.library-row>summary>span:first-child:not(.grow):not(.badge){grid-column:1;grid-row:1;justify-self:center}
.library-row>summary>span:nth-child(2):not(.badge),.library-row>summary>.grow{grid-column:2;grid-row:1;min-width:0;text-align:center;overflow-wrap:anywhere}
.library-row>summary>.badge{grid-column:2;grid-row:2;justify-self:center}
.library-row>summary:after{grid-column:3;grid-row:1;margin-left:0;text-align:center;width:44px}
.editor-row>summary{justify-content:center;text-align:center;gap:10px;overflow-wrap:anywhere}
.inventory-row{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:start}
.inventory-row>.item-icon{grid-column:1;grid-row:1}
.inventory-row>.grow{grid-column:2;grid-row:1;min-width:0;text-align:center}
.inventory-row>.row{grid-column:1/-1;grid-row:2;justify-content:center;width:100%;flex-wrap:wrap}
.inventory-row details>summary{justify-content:center}
.character-card{--card-edge:clamp(44px,6vw,65px)}
.character-card>.row.start{display:grid;grid-template-columns:var(--card-edge) minmax(0,1fr) var(--card-edge);align-items:center}
.character-card .portrait{width:var(--card-edge);height:var(--card-edge)}
.character-card>.row.start>.grow{grid-column:2;min-width:0}
.character-card [data-action="character-menu"]{grid-column:3;justify-self:end}

/* Native app artwork uses the current text color in either theme. */
.asset-icon{display:inline-block;flex-shrink:0;background-color:currentColor;-webkit-mask-image:var(--icon-image);mask-image:var(--icon-image);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;vertical-align:middle}
.portrait.avatar>.asset-icon{width:76%;height:76%}
.class-choice-icon{display:block;width:56px;height:56px;margin:0 auto 12px;color:var(--accent-ink,var(--accent))}
.row-icon>.asset-icon,.item-icon>.asset-icon{width:30px;height:30px}

/* Gear/items are white artwork on black; classes already have transparency. */
.asset-symbol{mask-mode:luminance}

/* Spell rules expand in place while casting controls stay visible. */
.spell-description{min-width:0;width:100%;margin:12px 0;overflow-wrap:anywhere}
.spell-description>summary{display:flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;color:var(--accent-ink,var(--accent));font-size:.85rem;cursor:pointer;list-style:none}
.spell-description>summary::-webkit-details-marker{display:none}
.spell-description>summary:after{content:"⌄";font-size:1.2rem;line-height:1;transition:transform .15s}
.spell-description[open]>summary:after{transform:rotate(180deg)}
.spell-description-body{padding:16px 2px 4px;color:var(--muted);font-size:.85rem;line-height:1.75}

.binx-mascot{object-fit:contain;height:auto}

/* Battle Forms make their temporary effects visible without hiding the base sheet. */
.active-form{border-color:var(--accent-ink,var(--accent));background:linear-gradient(135deg,var(--accent-soft),var(--surface))}
.active-form .card-heading{margin-bottom:14px}
.form-effect-list{display:grid;gap:9px;margin:14px 0}
.form-effect-list>div{display:grid;grid-template-columns:minmax(90px,1fr) auto;gap:4px 12px;align-items:baseline;padding:10px 0;border-top:1px solid var(--line)}
.form-effect-list>div:first-child{border-top:0;padding-top:0}
.form-effect-list>div small{grid-column:1/-1;color:var(--muted);line-height:1.5}
.battle-form-option{display:grid;gap:10px}
.battle-form-option .button{justify-self:center}
.stat-change{display:block;margin-top:6px;color:var(--accent-ink,var(--accent));font-size:.68rem;line-height:1.35}

/* Small symbols retain a full touch target next to equipment names. */
.equipment-heading{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;min-width:0}
.equipment-heading>h3{min-width:0;max-width:100%}
.equipment-indicator{padding:8px;min-width:44px;min-height:44px;flex:none;color:var(--accent-ink,var(--accent));background:transparent}
.equipment-indicator.untrained{color:var(--danger)}
.equipment-indicator>span{display:grid;place-items:center;width:19px;height:19px;border:1.5px solid currentColor;border-radius:50%;font-size:.8rem;font-weight:700}
.equipment-rule{margin:18px 0;overflow-wrap:anywhere}
.equipment-rule p{font-size:.9rem;line-height:1.7}
.equipment-proficiencies{overflow-wrap:anywhere}
.stat-note{display:block;margin-top:8px;font-size:.72rem;line-height:1.5;overflow-wrap:anywhere}

/* A compact, touch-friendly dice stage, also visible above sheet dialogs. */
.dice-overlay{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:20px;border:0;background:radial-gradient(ellipse at center,#111119b8,transparent 75%);color:#fff;z-index:100;pointer-events:auto;display:grid;place-items:center;overflow:hidden;animation:dice-fade-in .18s ease-out both,dice-fade-out .18s ease-in calc(var(--roll-duration) - 180ms) forwards}
.dice-overlay::backdrop{background:transparent;pointer-events:none}
.dice-picker{display:grid;gap:14px}.dice-choices{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.dice-choice{padding:10px 4px}.dice-choice[aria-pressed=true]{border-color:var(--accent-ink,var(--accent));background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.dice-adjustments{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}.dice-adjustment{display:grid;gap:6px;text-align:center;color:var(--muted);font-size:.8rem}.dice-stepper{display:flex;gap:6px}.dice-stepper .button{padding:8px;font-size:1.2rem}.dice-stepper input{min-width:0;text-align:center}
.dice-stage{width:min(100%,390px);padding:26px 20px;text-align:center;border:1px solid #ffffff30;border-radius:24px;background:linear-gradient(145deg,#303039f5,#16161ef5);box-shadow:0 24px 80px #0008}
.dice-stage .eyebrow{color:#e7b767}.dice-label{margin:8px 0 20px;font-size:1rem;overflow-wrap:anywhere;color:#fff}.dice-tray{display:flex;flex-wrap:wrap;justify-content:center;gap:18px;padding:12px 0}
.rolling-die{position:relative;width:82px;height:92px;color:#efc580;filter:drop-shadow(0 8px 8px #0008);animation:dice-tumble .55s ease-in-out infinite;animation-delay:var(--die-delay)}
.rolling-die>.icon{position:absolute;inset:0;width:100%;height:100%;stroke-width:.8;fill:#302719}.rolling-die b{position:absolute;inset:27px 0 auto;font:700 26px Georgia,serif;color:#fff;text-shadow:0 2px 4px #000}.rolling-die small{position:absolute;bottom:-12px;left:0;right:0;font-size:.65rem;color:#d4c8b7}
.dice-outcome{min-height:1.3em;margin:24px 0 0;font-size:.85rem;color:#d4c8b7}.dice-settled .rolling-die{animation:none}.dice-success .dice-stage{--flash:#ffeb00;animation:dice-flash .5s ease-out both}.dice-failure .dice-stage{--flash:#ff3131;animation:dice-flash .5s ease-out both}.dice-success .dice-outcome{color:#fff36c}.dice-failure .dice-outcome{color:#ff9292}.dice-success.dice-failure .dice-stage{animation:dice-mixed-flash .5s ease-out both}
@keyframes dice-fade-in{from{opacity:0}to{opacity:1}}
@keyframes dice-fade-out{from{opacity:1}to{opacity:0}}
@keyframes dice-tumble{0%,100%{transform:translateY(0) rotate(-18deg) scale(.94)}45%{transform:translateY(-16px) rotate(22deg) scale(1.05)}75%{transform:translateY(3px) rotate(-8deg)}}

@keyframes dice-flash{0%,35%{box-shadow:0 0 55px 16px var(--flash),inset 0 0 60px -12px var(--flash);border-color:var(--flash)}100%{box-shadow:0 0 24px -4px var(--flash);border-color:var(--flash)}}
@keyframes dice-mixed-flash{0%,30%{box-shadow:0 0 55px 16px #ffeb00;border-color:#ffeb00}65%{box-shadow:0 0 55px 16px #ff3131;border-color:#ff3131}100%{box-shadow:0 0 24px -4px #ff3131;border-color:#ff3131}}
@media(max-width:400px){.dice-stage{padding:22px 14px}.dice-tray{gap:16px}.rolling-die{width:68px;height:78px}.rolling-die b{top:23px;font-size:23px}}
@media(prefers-reduced-motion:reduce){.dice-success .dice-stage{border-color:#ffeb00}.dice-failure .dice-stage{border-color:#ff3131}}

.rich-toolbar { display: flex; gap: 4px; flex-wrap: wrap; }
.rich-toolbar .button { min-height: 44px; }
