@font-face{font-family:system;src:local('Segoe UI')}*{box-sizing:border-box} :root{font-family:system,system-ui,sans-serif;color:#e7eee8;background:#0d191a;font-synthesis:none;--surface:#142627;--raised:#1c3131;--muted:#9fb5b1;--accent:#e2b76e;--line:#304746;--green:#80d2b2;--red:#f19f92}body{margin:0;font-size:16px;line-height:1.55}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);background:var(--raised);color:inherit;border-radius:8px;padding:.65rem 1rem;font-weight:600;min-height:44px}button:hover{border-color:var(--accent);background:#28403b}button:disabled{opacity:.45;cursor:wait}button.primary{background:var(--accent);border-color:var(--accent);color:#1d2822}button.quiet{background:transparent}button.danger{color:var(--red)}button.small{padding:.45rem .65rem;font-size:.875rem}a{color:var(--accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}input,select,textarea{display:block;width:100%;border:1px solid #4a605d;border-radius:7px;padding:.7rem;background:#0e2021;color:inherit;min-height:46px}textarea{min-height:100px;resize:vertical}input[type=checkbox]{width:22px;min-height:22px;display:inline-block;vertical-align:middle;accent-color:var(--accent)}input[type=range]{padding:0;accent-color:var(--accent)}label{display:block;font-size:.9rem;font-weight:600;color:#c9d9d2;margin-bottom:1rem}label input,label select,label textarea{margin-top:.4rem}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.18}h1{font-family:Georgia,serif;font-weight:400;font-size:clamp(2.1rem,4vw,3.3rem);letter-spacing:-.035em;margin-bottom:.65rem}h2{font-family:Georgia,serif;font-weight:400;font-size:1.65rem}h3{font-size:1.05rem;margin-bottom:.4rem}p{color:var(--muted)}.eyebrow{color:var(--accent);font-size:.75rem;letter-spacing:.16em;font-weight:700;text-transform:uppercase;margin-bottom:.8rem}.brand-mark{display:grid;place-items:center;width:40px;height:44px;border:1px solid var(--accent);border-radius:10px 10px 17px 17px;color:var(--accent);font:1.5rem Georgia,serif}.brand{display:flex;align-items:center;gap:.8rem;font:1.6rem Georgia,serif;color:#eff2e9}.sidebar{position:fixed;inset:0 auto 0 0;width:246px;background:#102222;border-right:1px solid var(--line);padding:2rem 1.3rem;display:flex;flex-direction:column;z-index:2}.sidebar .brand{padding:0 .5rem 2.2rem}.sidebar nav{display:grid;gap:.4rem}.sidebar nav button{background:transparent;border-color:transparent;text-align:left;font-weight:500;color:var(--muted);display:flex;gap:.9rem;align-items:center}.sidebar nav button.active{background:#29423c;color:#f2d8a9;border-color:#426050}.nav-icon{width:24px;text-align:center;font-size:1.25rem}.sidebar-bottom{margin-top:auto;border-top:1px solid var(--line);padding-top:1.3rem}.sidebar-bottom small{display:block;color:var(--muted);margin:.4rem 0 1rem}.workspace{margin-left:246px;min-height:100vh}.topbar{min-height:82px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:1rem 2.4rem;gap:1rem;background:#102020}.breadcrumb{color:var(--muted);font-size:.9rem}.breadcrumb b{color:#e6eee7;font-weight:500}.status{display:inline-flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--green)}.status:before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}.content{max-width:1450px;margin:auto;padding:2.4rem}.page-head{display:flex;justify-content:space-between;gap:1.5rem;align-items:center;margin-bottom:2rem}.page-head p{margin-bottom:0;max-width:650px}.actions,.inline{display:flex;gap:.65rem;flex-wrap:wrap;align-items:center}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:1.25rem}.columns{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(260px,1fr);gap:1.5rem}.card{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:1.5rem;overflow:hidden}.card.featured{border-top:3px solid var(--accent);background:linear-gradient(130deg,#233b32,#142627)}.card .actions{margin-top:1.3rem}.card p:last-child{margin-bottom:0}.badge{display:inline-block;font-size:.75rem;padding:.2rem .55rem;border:1px solid #496157;border-radius:5px;color:#b9d3c2;letter-spacing:.02em}.badge.gold{color:var(--accent);border-color:#796143}.badge.red{color:var(--red);border-color:#79564c}.badge + .badge{margin-left:.3rem}.rule{height:1px;background:var(--line);margin:1.4rem 0}.muted{color:var(--muted)}.metric{font:2.2rem Georgia,serif;color:#f3e5c8}.metric small{font:1rem system-ui;color:var(--muted)}.stats{display:flex;gap:2.5rem;margin:1.5rem 0}.empty{text-align:center;padding:3rem 1.3rem;border:1px dashed #45605a;border-radius:12px}.empty h2{margin-bottom:.7rem}.empty .symbol{font:2.5rem Georgia,serif;color:var(--accent);margin-bottom:1rem}.section-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:2rem 0 1rem}.section-head h2{margin:0}.list{display:grid;gap:.8rem}.row{display:flex;gap:1rem;align-items:center;justify-content:space-between;padding:1rem 0;border-bottom:1px solid var(--line)}.row:last-child{border:0}.row-main{min-width:0}.row-main p{font-size:.875rem;margin:.25rem 0 0}.row-main h3{overflow-wrap:anywhere}.row .actions{margin:0;justify-content:flex-end}.filters{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:.75rem;margin:1.5rem 0}.filters label{margin:0}.catalog-card{display:flex;flex-direction:column;min-height:180px}.catalog-card button{margin-top:auto;align-self:flex-start}.catalog-card p{font-size:.875rem}.healthbar{width:100%;height:7px;background:#0b1718;border-radius:8px;overflow:hidden;margin:1rem 0}.healthbar progress{display:block;width:100%;height:7px;accent-color:var(--green)}.combat-row{border:1px solid var(--line);background:#142727;border-radius:8px;padding:1rem;margin-bottom:.7rem;display:grid;grid-template-columns:46px 1fr auto;align-items:center;gap:1rem}.combat-row.current{border-color:var(--accent);box-shadow:inset 4px 0 var(--accent);background:#293b30}.combat-row.removed{opacity:.55}.initiative{font:1.8rem Georgia,serif;color:var(--accent);text-align:center}.combat-row .actions{grid-column:2 / -1;justify-content:flex-start}.slots{display:flex;gap:.4rem;flex-wrap:wrap}.slot-dot{width:38px;min-height:38px;padding:0;border-radius:50%;background:#385c4c;color:#eddaaf}.slot-dot.used{background:#0b1a1c;color:#607873}.notice{border-left:3px solid var(--accent);background:#26392f;border-radius:4px;padding:1rem;margin:1rem 0;color:#e6d8bb}.error{color:var(--red)}.auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth-story{background:radial-gradient(ellipse at 10% 90%,#365a42 0,transparent 60%),#112b29;padding:3rem 4rem;display:flex;flex-direction:column;border-right:1px solid var(--line)}.auth-story h1{font-size:clamp(3rem,6vw,5.5rem);line-height:1.02;max-width:540px;margin:5rem 0 1.5rem}.auth-story h1 em{color:var(--accent);font-weight:400}.auth-story p{max-width:430px;font-size:1.1rem}.auth-story .footnote{margin-top:auto;padding-top:3rem;font-size:.8rem;letter-spacing:.13em;color:#afc8b7}.auth-form{display:grid;place-items:center;padding:3rem 1.5rem}.auth-panel{width:100%;max-width:390px}.auth-panel h2{font-size:2rem}.auth-panel .primary{width:100%;margin:.6rem 0 1rem}.auth-switch{width:100%}.loading{text-align:center;padding:20vh 1rem}.loading .brand-mark{margin:auto auto 1.4rem}dialog{background:#172b2b;color:#e7eee8;border:1px solid #526b5d;border-radius:14px;width:min(680px,calc(100% - 24px));max-height:90dvh;padding:0}dialog::backdrop{background:#020b0cd9;backdrop-filter:blur(4px)}#modal-content{padding:1.7rem}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.modal-head h2{margin:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}.span-2{grid-column:1/-1}.details-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;color:#cfddd3}.property{display:grid;grid-template-columns:minmax(100px,1fr) 2fr;gap:1rem;padding:.7rem 0;border-bottom:1px solid var(--line);font-size:.9rem}.property span:first-child{color:var(--muted);text-transform:capitalize}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);background:#e9d6ae;color:#172a25;padding:.8rem 1.4rem;border-radius:9px;box-shadow:0 5px 30px #0005;z-index:10;display:none}#toast.show{display:block}.mobile-brand{display:none}.check{display:flex;align-items:center;gap:.6rem}.subnav{display:flex;gap:.5rem;margin:1rem 0;overflow-x:auto}.subnav button.active{border-color:var(--accent);color:var(--accent)}.log{font-size:.85rem;color:var(--muted)}.pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.6rem}.health-input{max-width:100px}.help{font-size:.875rem;color:var(--muted)}.enemy-builder{border-top:1px solid var(--line);padding-top:1rem;margin-top:1rem}
@media(min-width:1500px){.content{padding:3rem}}
@media(max-width:1100px){.sidebar{width:210px;padding:1.6rem .85rem}.workspace{margin-left:210px}.content{padding:1.7rem}.topbar{padding:1rem 1.7rem}.columns{grid-template-columns:1fr}.filters{grid-template-columns:1fr 1fr}.auth-story{padding:2.5rem}}
@media(max-width:760px){.sidebar{inset:auto 0 0;width:100%;height:76px;padding:5px;background:#102222f5;border-right:0;border-top:1px solid var(--line);backdrop-filter:blur(10px)}.sidebar .brand,.sidebar-bottom{display:none}.sidebar nav{display:flex;justify-content:space-around;gap:2px;height:100%}.sidebar nav button{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:0;padding:.2rem 0;font-size:.7rem;line-height:1.5;border-radius:6px}.nav-icon{font-size:1.3rem}.workspace{margin:0;padding-bottom:85px}.mobile-brand{display:flex;gap:.5rem;align-items:center;font:1.4rem Georgia,serif}.mobile-brand .brand-mark{height:31px;width:29px;font-size:1rem}.topbar{min-height:65px;padding:.8rem 1rem}.breadcrumb{display:none}.content{padding:1.5rem 1rem}.page-head{align-items:flex-start;flex-direction:column;margin-bottom:1.5rem;gap:1rem}.page-head h1{font-size:2.4rem}.page-head .actions{width:100%}.card{padding:1.15rem}.grid{gap:.85rem}.stats{gap:1.7rem}.filters{grid-template-columns:1fr 1fr}.filters label:first-child{grid-column:1/-1}.auth{display:block}.auth-story{padding:1.5rem;border-right:0;border-bottom:1px solid var(--line)}.auth-story h1{font-size:2.7rem;margin:2rem 0 1rem}.auth-story p{margin-bottom:.5rem;font-size:1rem}.auth-story .footnote{display:none}.auth-form{padding:2rem 1.5rem}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.row{flex-wrap:wrap}.row .actions{justify-content:flex-start}.combat-row{grid-template-columns:32px 1fr auto;gap:.65rem}.combat-row .actions{grid-column:1/-1}.status{font-size:.75rem}#toast{bottom:90px}.section-head{flex-wrap:wrap}.metric{font-size:1.9rem}}
@media(prefers-reduced-motion:no-preference){button{transition:background .15s,border-color .15s}.card{animation:appear .2s ease-out}@keyframes appear{from{opacity:.5;transform:translateY(4px)}to{opacity:1;transform:none}}}

/* Keep the layout inside the visual viewport without disabling pinch zoom. */
html{width:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{width:100%;min-width:0}
input,select,textarea{font-size:max(1rem,16px);min-width:0;max-width:100%}
img{max-width:100%}
.brand-mark{object-fit:cover;flex:0 0 auto;width:42px;height:42px;border:0;border-radius:50%}
.brand{font-size:1.35rem;min-width:0;overflow-wrap:anywhere}
.workspace,.content,.auth-form,.auth-panel,.columns>*,.grid>*,.filters>*,.form-grid>*,.topbar>*{min-width:0}
.filters{grid-template-columns:minmax(0,2fr) repeat(3,minmax(0,1fr))}
.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.card,.row-main,.badge,.property span,.page-head h1{overflow-wrap:anywhere}
.stats{flex-wrap:wrap}
.nav-label{min-width:0;max-width:100%;text-align:inherit;overflow-wrap:anywhere}
@media(max-width:1100px){.filters{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){
  :root{--nav-height:76px}
  .sidebar{height:calc(var(--nav-height) + env(safe-area-inset-bottom,0px));padding:5px max(8px,env(safe-area-inset-right,0px)) calc(5px + env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px))}
  .sidebar nav{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;width:100%;height:100%}
  .sidebar nav button{width:100%;min-width:0;max-width:100%;min-height:44px;padding:4px 2px;gap:2px;font-size:.75rem;line-height:1.2;text-align:center}
  .nav-label{display:block;width:100%}
  .workspace{padding-bottom:calc(var(--nav-height) + env(safe-area-inset-bottom,0px) + 16px)}
  .topbar{flex-wrap:wrap;padding-top:max(.8rem,env(safe-area-inset-top,0px));padding-left:max(1rem,env(safe-area-inset-left,0px));padding-right:max(1rem,env(safe-area-inset-right,0px))}
  .mobile-brand{font-size:1.2rem;min-width:0}
  .mobile-brand .brand-mark{width:32px;height:32px}
  .content{padding-left:max(1rem,env(safe-area-inset-left,0px));padding-right:max(1rem,env(safe-area-inset-right,0px))}
  .form-grid{grid-template-columns:minmax(0,1fr)}
  .combat-row{grid-template-columns:32px minmax(0,1fr) auto}
  .property{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
  #toast{bottom:calc(var(--nav-height) + env(safe-area-inset-bottom,0px) + 12px)}
}
@media(max-width:480px){
  :root{--nav-height:128px}
  .sidebar nav{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}
  .sidebar nav button{font-size:.875rem;flex-direction:column;gap:2px;padding:2px}
  .nav-icon{flex:0 0 22px;width:22px;font-size:1.15rem}
  .nav-label{width:auto}
  .auth-story h1{font-size:2.3rem}
}
