/* /styles.css */
:root{color-scheme:dark;--ink:#e7ddc6;--muted:#aaa28f;--gold:#dab36b;--line:#4c4739;--red:#991d1d;--bg:#090e12;--panel:#0b1217;--ui:Arial,'Segoe UI',sans-serif;--serif:Georgia,'Times New Roman',serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#080c10;color:var(--ink)}body{font:.875rem var(--ui)}button,input,select{font:inherit}button{color:inherit;cursor:pointer}button:disabled{opacity:.43;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #edc97f;outline-offset:3px}button{transition:filter .16s,background .16s}button:hover:not(:disabled){filter:brightness(1.17)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--serif);font-weight:normal}h1{font-size:2rem;color:#f0d399}h2{font-size:1.25rem;color:#e9d4a4}p{line-height:1.55}input,select{background:linear-gradient(#070c10,#10171c);border:1px solid #48525a;border-radius:2px;color:#eadfce;min-width:0;padding:11px 12px;width:100%;outline:none}input::placeholder{color:#817f76}label{display:block;color:#d2c8b3;font-size:.75rem}label>input,label>select,label>.input-with-icon{margin-top:7px}input[type=checkbox]{width:15px;height:15px;accent-color:#b99956;padding:0;margin:0;flex-shrink:0}select{padding:7px 5px;font-size:.75rem}.checkbox-row{display:flex;align-items:center;gap:9px;line-height:1.4;cursor:pointer}.icon{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.icon-button{background:none;border:1px solid #3d423f;padding:8px;display:inline-flex;color:#b7a585}.icon-button .icon{width:20px;height:20px}.eyebrow{font:.625rem var(--ui);letter-spacing:2.5px;color:#c9ad7a;margin-bottom:9px}.micro{font:.625rem/1.5 var(--ui);color:#9e9c8f;letter-spacing:.4px}.small-note,.subtle{color:#b4ad9c;line-height:1.6}.small-note{font-size:.6875rem}.full{width:100%}.success{color:#a8d77b}.warning{color:#ffb2a4}.red-button{background:linear-gradient(#821c19,#a8231a 22%,#8b1614 48%,#5e100d);border:1px solid #bc6a42;box-shadow:inset 0 0 0 2px #3d1411,inset 0 0 0 3px #a33e24,0 2px 7px #0008;color:#ffebc2;padding:13px 16px;border-radius:1px;font:.875rem var(--serif);letter-spacing:.4px}.secondary{background:linear-gradient(#26323a,#141d24);border:1px solid #526069;box-shadow:inset 0 0 0 2px #111a20;padding:10px 12px;border-radius:2px;color:#ddd4bf}.text-button{background:none;border:0;padding:10px 2px;color:#bfa97b;font-size:.6875rem}.button-pair{display:grid;grid-template-columns:1fr 1fr;gap:6px}.button-pair button{font-size:.75rem;padding:10px 3px}.ornate{position:relative;background:linear-gradient(135deg,#131b20ed,#080e12f7 50%,#11181cf2);border:1px solid #565445;box-shadow:inset 0 0 0 4px #0b1117,inset 0 0 0 5px #3c433e,0 6px 22px #0007;padding:18px}.ornate:before,.ornate:after{content:"";position:absolute;width:13px;height:13px;border-color:#aa8b51;pointer-events:none}.ornate:before{left:4px;top:4px;border-top:2px solid #aa8b51;border-left:2px solid #aa8b51}.ornate:after{right:4px;bottom:4px;border-right:2px solid #aa8b51;border-bottom:2px solid #aa8b51}.ornate h2{border-bottom:1px solid #3b423d;padding-bottom:9px;margin-bottom:12px}.nav-divider{height:1px;background:linear-gradient(90deg,transparent,#76603c,transparent);margin:19px 0}.inline-error{font-size:.75rem;color:#ffb9a0;line-height:1.5}.inline-error:empty{display:none}.inline-error:not(:empty){background:#561d1633;padding:10px;margin:10px 0}.wordmark{width:227px;flex-shrink:0;text-align:center;position:relative;color:#f0c27a;font-family:var(--serif);background:linear-gradient(160deg,#131914,#050906);border:1px solid #7d6940;box-shadow:inset 0 0 0 3px #090d0b,inset 0 0 0 4px #51432a,0 1px 6px #000;padding:9px 7px 11px;clip-path:polygon(0 9%,6% 9%,8% 0,17% 5%,41% 5%,50% 0,59% 5%,83% 5%,92% 0,94% 9%,100% 9%,97% 45%,100% 85%,94% 85%,92% 98%,60% 94%,50% 100%,40% 94%,8% 98%,6% 85%,0 85%,3% 45%)}.wordmark .idle{display:block;font-size:.5625rem;letter-spacing:1px;line-height:1}.wordmark strong{display:block;font-size:1.4375rem;line-height:1.14;letter-spacing:-.8px;color:#efca88;text-shadow:0 2px #2b1507,0 0 9px #ffc25222}.wordmark .crest-top{display:none}.wordmark .crest-bottom{position:absolute;bottom:2px;left:49%;font-size:.5rem;color:#a13226;text-shadow:0 0 5px #fd6825}.wordmark.large{width:min(555px,92%);padding:22px 13px 30px;margin:auto;border-color:#b38b4f}.wordmark.large .idle{font-size:1.125rem}.wordmark.large strong{font-size:clamp(2.125rem,4.5vw,3.875rem);letter-spacing:-2px}.wordmark.large .crest-bottom{font-size:1.0625rem;bottom:6px}.topbar{height:75px;background:linear-gradient(#171c1c,#0a1013);border-bottom:2px solid #746449;box-shadow:0 4px 15px #0009;display:flex;align-items:center;gap:20px;padding:8px 14px;position:relative;z-index:500}.topbar nav{display:flex;align-self:stretch;justify-content:center;flex:1}.nav-button{min-width:73px;border:0;border-left:1px solid #343b3622;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#b2a486;padding:0 15px;font:.6875rem var(--serif)}.nav-button .icon{width:23px;height:23px}.nav-button.active{color:#efd59e;background:radial-gradient(ellipse at bottom,#92753745,transparent 72%);border-bottom:1px solid #aa823f}.account-block{display:flex;gap:12px;align-items:center}.account-name{font-family:var(--serif);min-width:64px}.account-name b{display:block;font-weight:normal}.account-name small{font:.625rem var(--ui);display:block;color:#aaa38e;margin-top:3px}.dev-badge{border:1px solid #88682c;box-shadow:inset 0 0 7px #e8aa1618;padding:8px 13px;color:#e9b66d;font:.75rem var(--serif)}.shell{min-height:100vh;background:radial-gradient(ellipse at 50% 15%,#28302a66,transparent 70%),#0a1014}.auth-page{min-height:100vh;position:relative;display:grid;grid-template-columns:62% 38%;overflow:hidden;isolation:isolate;background:#111a1c}.auth-world{position:absolute;inset:-3%;z-index:-4;background:linear-gradient(90deg,#01081122,#04090daa),linear-gradient(0deg,#070c12e8,transparent 65%),url('/assets/painted/arena.webp') center 28%/cover;filter:blur(2px) saturate(.74)}.auth-page:after{content:"";position:absolute;inset:0;z-index:-3;pointer-events:none;background:radial-gradient(ellipse at 28% 26%,#c4822633,transparent 55%),linear-gradient(90deg,transparent 45%,#04080edb)}.auth-story{height:100vh;min-height:730px;position:relative;padding:45px 35px 0}.story-eyebrow{text-align:center;margin:16px 0 0}.login-heroes{position:absolute;left:0;right:0;top:180px;bottom:100px}.login-hero{position:absolute;bottom:0;width:auto;object-fit:contain;filter:drop-shadow(0 12px 10px #000b);pointer-events:none}.login-hero.h0{height:94%;left:5%;z-index:4}.login-hero.h1{height:100%;left:28%;z-index:2}.login-hero.h2{height:92%;left:44%;z-index:1}.login-hero.h3{height:85%;left:59%;z-index:3}.story-caption{position:absolute;bottom:68px;left:48px;right:0;text-shadow:0 2px 4px #000,0 0 12px #000;z-index:10}.story-caption span{font:.625rem var(--ui);letter-spacing:2.3px;color:#dfca9f}.story-caption h1{font-size:2.1875rem;margin-top:10px;margin-bottom:0;line-height:1.2;color:#f2e4c3}.auth-entry{display:flex;align-items:center;padding:50px 42px 70px 0}.auth-form{max-width:390px;width:100%;margin:0 auto;padding:33px 29px;background:linear-gradient(145deg,#1c2222fa,#080e13fb 48%,#111617fb);border-color:#a1854e;box-shadow:inset 0 0 0 4px #0b1117,inset 0 0 0 5px #6c593c,0 20px 70px #000b}.auth-form .eyebrow{text-align:center}.auth-form h2{text-align:center;font-size:1.5625rem;margin:10px 0 10px;padding:0;border:0}.auth-form>.subtle{text-align:center;font-size:.75rem;margin-bottom:25px}.auth-form label{margin:17px 0}.auth-form input{height:43px}.auth-form input[type=checkbox]{height:15px}.input-with-icon{display:flex;align-items:center;position:relative}.input-with-icon .icon{position:absolute;left:11px;width:17px;height:17px;color:#baac8d}.input-with-icon input{padding-left:38px}.auth-form .checkbox-row{font-size:.75rem}.frame-gem{position:absolute;top:-12px;left:calc(50% - 10px);font-size:1.25rem;color:#c7472c;text-shadow:0 0 9px #ad591e;background:#141815;padding:0 3px}.divider{text-align:center;margin:20px 0;position:relative;height:12px}.divider:before{position:absolute;content:"";height:1px;left:0;right:0;top:7px;background:linear-gradient(90deg,transparent,#85704c,transparent)}.divider span{position:relative;background:#0d1418;font-size:.625rem;color:#a89b7f;padding:0 12px}.local-note{text-align:center;font:.5625rem/1.7 var(--ui);letter-spacing:1px;color:#b29b71;margin:23px 0 0}.local-note span{font-size:.625rem;letter-spacing:0;color:#8e948e}.auth-footer{position:absolute;bottom:20px;left:30px;right:30px;display:flex;justify-content:space-between;gap:20px;color:#b9a888;font:.5625rem var(--ui);letter-spacing:1.2px}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.page-heading h1{margin-bottom:0}.chapter-note{font:.6875rem var(--serif);color:#b7a787}.creator{padding:26px 32px 30px;max-width:1680px;margin:auto}.creator-grid{display:grid;grid-template-columns:245px minmax(330px,1fr) 308px;gap:20px;min-height:640px;height:calc(100vh - 200px);max-height:900px}.choices{padding:19px 14px}.choices h2{font-size:1.0625rem}.choice{width:100%;background:#0b1319;border:1px solid #3b4445;padding:9px;display:flex;align-items:center;text-align:left;gap:11px;margin-bottom:12px;min-height:89px}.choice.chosen{background:linear-gradient(100deg,#4532187d,#0e1519);border-color:#b38d42;box-shadow:inset 0 0 13px #b47d1b22}.choice img{width:54px;height:64px;object-fit:cover;object-position:center;border:1px solid #5b523d;background:#0a1116}.choice b{display:block;font-family:var(--serif);font-size:1.0625rem}.choice small{display:block;color:#b4a996;font:.6875rem/1.5 var(--ui);margin-top:4px}.choice i{margin-left:auto;color:#a88544;font:1.4375rem var(--serif)}.scope-note{border-top:1px solid #424538;margin-top:20px;padding:15px 4px}.scope-note b{font-family:var(--serif);color:#bbaa83}.scope-note p{font-size:.6875rem;line-height:1.65;color:#90978e;margin:9px 0}.creator-stage,.character-showcase{position:relative;overflow:hidden;border:1px solid #38433d;background:radial-gradient(ellipse at 50% 40%,#5d482034,transparent 62%),linear-gradient(0deg,#081118ed,#080f12bd 18%,#081016a3 70%,#080f12),url('/assets/painted/arena.webp') center/cover;box-shadow:inset 0 0 50px #000c;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}.hero-pedestal{width:100%;height:calc(100% - 124px);position:relative;display:flex;align-items:flex-end;justify-content:center;isolation:isolate;padding:0 12px}.showcase-hero{max-width:100%;width:auto;height:100%;object-fit:contain;filter:drop-shadow(0 7px 10px #000c);z-index:1}.hero-pedestal.mage .showcase-hero{height:113%;transform:translateY(8%)}.hero-pedestal.priest .showcase-hero{height:104%;transform:translateY(2%)}.pedestal-light{position:absolute;bottom:5px;left:12%;width:76%;height:23%;border-radius:50%;background:radial-gradient(ellipse,#a9a48c28,transparent 70%);filter:blur(12px);z-index:-1}.hero-caption{height:124px;text-align:center;position:relative;z-index:2;width:100%;background:linear-gradient(transparent,#080e139c 15%,#080f14ce);padding:18px 20px 14px;display:flex;flex-direction:column;justify-content:center}.hero-caption h2,.hero-caption h1{color:#f0dcc0;margin:0 0 8px}.hero-caption p{font:.75rem/1.5 var(--serif);color:#c3bda9;margin:0 auto;max-width:420px}.hero-caption .eyebrow{font-size:.5625rem;margin-bottom:8px}.creation-details{padding:22px 22px 18px;overflow-y:auto}.creation-details>h2{font-size:1.75rem;margin:15px 0 10px}.role-label{display:flex;align-items:center;gap:7px;font:.5625rem var(--ui);letter-spacing:1.2px;color:var(--tone)}.role-label .icon{width:22px;height:22px}.class-description{font:.8125rem/1.65 var(--serif);color:#c4bea9;margin:16px 0}.skill-list{border-top:1px solid #353e39;padding:13px 0}.skill-list>div{display:flex;align-items:center;gap:10px;margin:8px 0}.skill-list b{font:.8125rem var(--serif)}.skill-icon{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;border:1px solid #8e703b;background:radial-gradient(ellipse at center,#c88b31aa,#321510 70%);box-shadow:inset 0 0 0 2px #070d11,0 0 7px #0008;color:#fff1c0}.skill-icon .icon{width:23px;height:23px;filter:drop-shadow(0 0 3px currentColor);stroke-width:2}.skill-icon.mage{border-color:#559ccb;color:#cff1ff;background:radial-gradient(ellipse,#256eb8,#0c2456 65%,#07101d)}.skill-icon.priest{border-color:#a38a4a;color:#fff3b0;background:radial-gradient(ellipse,#d4a334,#483711 65%,#101410)}.skill-icon.archer{border-color:#6e8835;color:#e1ff8e;background:radial-gradient(ellipse,#537d24,#152a12 65%,#090e09)}.skill-icon.shadow{border-color:#795587;color:#e4c1ff;background:radial-gradient(ellipse,#6c309b,#271438 65%,#0b0d17)}.ascension-hint{display:flex;gap:10px;align-items:flex-start;border-top:1px solid #38403a;border-bottom:1px solid #38403a;padding:14px 0;margin-bottom:23px;color:#bca16a}.ascension-hint span{font:.75rem var(--serif)}.ascension-hint small{display:block;font:.625rem/1.5 var(--ui);color:#979b92;margin-top:5px}#createForm label{font:1.0625rem var(--serif);color:#e9d5af;margin-bottom:10px}#createForm>input{margin-top:0}.name-status{font:.6875rem/1.5 var(--ui);min-height:30px;margin:9px 0 0}#createForm>.micro{font-size:.5625rem;margin-bottom:15px}.character-page{display:grid;grid-template-columns:225px minmax(380px,1fr) 308px;gap:23px;padding:28px 32px;max-width:1650px;margin:auto;min-height:calc(100vh - 75px)}.character-nav{align-self:start}.profile-portrait{width:94px;height:106px;border:1px solid #927346;background:linear-gradient(#1d2423,#090f11);margin-bottom:16px;box-shadow:inset 0 0 0 3px #151e23}.profile-portrait img{height:100%;width:100%;object-fit:cover}.character-nav h2{font-size:1.5rem;padding:0;border:none;margin:0 0 5px}.character-nav p:not(.eyebrow){font-size:.75rem;color:#b0a68e}.character-nav button{display:flex;align-items:center;gap:12px;width:100%;background:none;border:1px solid transparent;padding:12px 8px;font:.875rem var(--serif);margin:5px 0}.character-nav button.chosen{background:linear-gradient(90deg,#76602e5a,transparent);border-color:#816838}.character-nav button .icon{width:18px;height:18px}.character-showcase{min-height:680px}.character-info{display:flex;flex-direction:column;gap:16px;align-self:start}.character-info .ornate{padding:18px}.character-info h2{font-size:1.0625rem}.character-info dl,.skill-card dl{display:grid;grid-template-columns:1fr 1fr;gap:10px;font:.75rem var(--ui);margin:14px 0 0}.character-info dt,.skill-card dt{color:#aaa995}.character-info dd,.skill-card dd{text-align:right;margin:0;color:#e1daca}.progress-track{height:5px;background:#05080a;border:1px solid #373b31;margin-top:16px}.progress-track i{display:block;height:100%;background:#ba933d}.equipment-slot{display:flex;gap:12px;align-items:center}.equipment-slot b{font:.875rem var(--serif)}.equipment-slot small{display:block;font:.625rem var(--ui);color:#8d938b;margin-top:7px}.equipment-slot>.icon{width:37px;height:37px;color:#ceb478}.content-page{max-width:1280px;padding:36px 30px;margin:auto;min-height:calc(100vh - 75px)}.skill-grid{display:grid;grid-template-columns:1fr 1fr;gap:23px;margin-bottom:28px}.skill-card{padding:26px}.skill-card .large-icon{width:60px;height:60px;margin-bottom:20px}.large-icon .icon{width:37px;height:37px}.skill-card p{color:#b9b2a0;line-height:1.7}.party-overview{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.party-show{text-align:center;padding:18px}.party-show>img{width:100%;height:310px;object-fit:contain}.party-show h2{font-size:1.375rem;border:0;margin:0;padding:0}.party-show>p{font:.75rem var(--serif);color:#bbad8f;margin:10px 0}.xp-rates{display:grid;grid-template-columns:repeat(4,1fr);margin:25px 0;gap:16px;text-align:center}.xp-rates strong{display:block;color:#deb969;font:1.75rem var(--serif);margin:10px}.xp-rates b,.xp-rates small{font:.6875rem var(--ui);color:#adac9d}.combat-grid{display:grid;grid-template-columns:15.5% 66.5% 18%;height:calc(100vh - 75px);min-height:650px;background:#0a1012}.party-rail{padding:10px 7px 10px 9px;display:flex;flex-direction:column;min-width:0;background:linear-gradient(90deg,#0c151a,#0c1219f5);border-right:1px solid #655f48;overflow:hidden}.rail-heading{display:flex;justify-content:space-between;padding:3px 2px 10px;color:#c9bc9c;font:.75rem var(--serif);letter-spacing:1px}.rail-heading small{font:.625rem var(--ui);color:#979b8d}.party-card{display:flex;gap:7px;border:1px solid #3e4a4c;background:linear-gradient(100deg,#19232b99,#070e14b8);padding:7px 6px;margin-bottom:8px;min-height:118px}.party-card.fallen{filter:saturate(.15);opacity:.5}.portrait-frame{width:57px;position:relative;border:1px solid var(--tone);background:radial-gradient(ellipse,#55594144,#091019);flex-shrink:0;height:92px;overflow:hidden}.portrait-frame img{width:100%;height:77px;object-fit:cover}.portrait-frame>span{position:absolute;bottom:0;left:0;right:0;text-align:center;font:.625rem var(--ui);background:#090b0fbf;padding:3px 0;color:#eadfc6}.party-info{min-width:0;flex:1}.party-info>b{display:block;font:.8125rem var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:1px 0 3px;color:#eee8d6}.party-info>small{display:block;color:#b7b3a7;font:.5625rem var(--ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px}.hud-bar{height:11px;margin:3px 0;position:relative;border:1px solid #474d48;background:#03080b;overflow:hidden}.hud-bar>i{display:block;height:100%;background:linear-gradient(#fb4027,#b81714);box-shadow:inset 0 1px #ffb79655}.hud-bar.resource{height:7px;border-color:#355d6b}.hud-bar.resource>i{background:linear-gradient(#3595f7,#1c4dce)}.hud-bar em{position:absolute;inset:0;text-align:center;font:8px/9px var(--ui);font-style:normal;color:#fff7e4;text-shadow:0 1px 1px #000}.party-ability-icons{display:flex;gap:4px;margin-top:7px}.party-ability-icons .skill-icon{width:21px;height:21px}.party-ability-icons .icon{width:15px;height:15px;stroke-width:1.5}.party-xp{display:flex;justify-content:space-between;font-size:.625rem;padding:2px 1px 12px;color:#a3a493}.party-xp b{color:#d6b875}.combat-log{padding:0;display:flex;flex-direction:column;flex:1;min-height:100px;border-color:#4c5150}.combat-log:before,.combat-log:after{display:none}.log-tabs{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #424e50;padding:9px 8px;background:linear-gradient(#202e37,#111b24);font:.6875rem var(--serif)}.log-tabs span{font:.5rem var(--ui);letter-spacing:1px;color:#a9bb98}#combatLog{overflow:auto;padding:10px 7px;min-height:0;font:.625rem/1.45 var(--ui);scrollbar-width:thin;scrollbar-color:#494b3c #0a1218}#combatLog>div{margin-bottom:5px;color:#bdb8a9}#combatLog time{display:inline;color:#768187;margin-right:5px;font-size:.5625rem}#combatLog .log-heal{color:#a9d37f}#combatLog .log-crit{color:#ffc970}#combatLog .log-incoming{color:#d38570}#combatLog .log-aggro,#combatLog .log-taunt{color:#7abedc}.log-empty{color:#7d898a;font:.6875rem/1.6 var(--serif);margin:0}.arena-column{position:relative;min-width:0;overflow:hidden}.battlefield{position:relative;width:100%;height:100%;overflow:hidden;background:#1d2423;isolation:isolate}.arena-background{position:absolute;inset:0;background:url('/assets/painted/arena.webp') center center/cover no-repeat;z-index:0}.arena-vignette{position:absolute;inset:0;background:linear-gradient(0deg,#080c16cc,transparent 26%,#04121a00 76%,#060f1877),radial-gradient(ellipse,#0000 40%,#01071266);z-index:1}.zone-badge{position:absolute;top:18px;left:50%;transform:translateX(-50%);background:linear-gradient(90deg,transparent,#0a121bc7 18%,#0a121bc7 82%,transparent);padding:9px 40px;text-align:center;white-space:nowrap;z-index:310}.zone-badge span{font:1.0625rem var(--serif);color:#f0d7a2;display:block}.zone-badge small{font:.5rem var(--ui);color:#baa985;letter-spacing:2px;display:block;margin-top:6px}#actors{position:absolute;inset:0;z-index:10;pointer-events:none}#effects,#groundEffects{position:absolute;inset:0;pointer-events:none;width:100%;height:100%}#groundEffects{z-index:3}#effects{z-index:200}.aggro-lines{position:absolute;inset:0;width:100%;height:100%;z-index:5;pointer-events:none}.aggro-lines line{stroke:#f34437;stroke-width:1.25;opacity:.78}.unit{position:absolute;width:0;height:0;pointer-events:none}.model-wrap{position:absolute;inset:0}.unit-model{position:absolute;max-width:none;will-change:transform;image-rendering:auto;filter:drop-shadow(0 5px 5px #0006)}.unit-name{position:absolute;left:-64px;width:128px;text-align:center;pointer-events:none;text-shadow:0 1px 3px #000,0 1px 3px #000;font-size:.6875rem}.unit-name b{display:inline;font:.75rem var(--serif);color:#ffedcd;white-space:nowrap}.unit-name small{color:#c3bdaf;font:.5rem var(--ui);display:block;margin:2px 0}.unit-hp{height:6px;background:#070b14;border:1px solid #42494a;margin:3px 23px 0;box-shadow:0 1px 2px #000}.unit-hp>i{display:block;height:100%;background:linear-gradient(#aaee70,#3f993b)}.enemy-unit .unit-hp>i{background:linear-gradient(#fa6740,#c42e1d)}.respawn-clock{position:absolute;top:8px;left:-90px;width:180px;color:#f8dcc0;font:.8125rem var(--serif);text-align:center;text-shadow:0 2px 3px #000}.respawn-clock:empty{display:none}.is-dead .respawn-clock{padding:5px;background:linear-gradient(90deg,transparent,#10151ab8,transparent)}.actionbar{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);height:88px;background:linear-gradient(#202421,#090e10 45%,#101b20);border:1px solid #8b7853;box-shadow:inset 0 0 0 4px #111616,inset 0 0 0 5px #53574b,0 0 22px #000d;z-index:320;display:flex;gap:10px;align-items:center;padding:12px 23px;max-width:92%;white-space:nowrap}.actionbar:before{content:"";position:absolute;top:-10px;left:43%;right:43%;height:16px;background:#211816;border:1px solid #847154;transform:rotate(-3deg);z-index:-1}.bar-gem{font-size:1.6875rem;color:#cf5138;text-shadow:0 0 6px #fe6315;padding:0 6px;margin-top:-28px}.actionbar .skill-icon{width:43px;height:43px}.actionbar .skill-icon .icon{width:29px;height:29px}.ability-tile,.action-key{display:flex;flex-direction:column;align-items:center;gap:4px;flex-shrink:0}.action-key{background:none;border:0;padding:0;color:#eee4ce}.ability-tile>small,.action-key>small{font:.5rem var(--ui);letter-spacing:.8px;color:#c5bc9d}.begin-button{height:45px;margin-left:7px;padding:12px 19px;font-size:.8125rem}.bar-wing{position:absolute;top:-7px;bottom:-7px;width:17px;background:linear-gradient(135deg,#393c31,#15181a);border:1px solid #6d705b}.bar-wing.left{left:-9px;transform:skewY(-22deg)}.bar-wing.right{right:-9px;transform:skewY(22deg)}.arena-help{position:absolute;bottom:118px;left:10%;right:10%;text-align:center;font:.8125rem var(--serif);color:#ecd7b0;z-index:250;text-shadow:0 2px 6px #000}.encounter-status{display:none;position:absolute;left:15%;right:15%;top:36%;z-index:300;padding:18px;border-top:1px solid #98804c;border-bottom:1px solid #98804c;background:#0a0d12dc;color:#edd4a2;text-align:center;font:1.125rem var(--serif);letter-spacing:1px}.encounter-status.show{display:block}.right-rail{padding:9px 8px 12px;display:flex;flex-direction:column;gap:10px;min-width:0;background:linear-gradient(90deg,#10171d,#0c1318);border-left:1px solid #66634e;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#494b3c #0a1218}.right-rail>.ornate{padding:10px 11px}.right-rail h2{font-size:.9375rem;padding-bottom:7px;margin-bottom:8px}.minimap-panel{text-align:center;flex-shrink:0}.minimap{height:132px;position:relative;overflow:hidden;border:2px solid #726749;border-radius:48% 48% 10px 10px;background:linear-gradient(#151d2466,#121e1844),url('/assets/painted/arena.webp') center/cover;box-shadow:inset 0 0 18px #000b;margin-bottom:7px}#minimap{position:absolute;inset:0}.map-dot{position:absolute;width:6px;height:6px;transform:translate(-50%,-50%) rotate(45deg);background:#50d5e7;border:1px solid #dbf9ff;box-shadow:0 0 4px #000}.map-dot.foe{background:#ff4938;border-color:#faa479;border-radius:50%}.minimap-panel>.micro{font-size:.5rem;letter-spacing:.7px}.quest-panel>h2{font-family:var(--serif)}.quest-panel>b{display:block;color:#e1c68b;font:.8125rem var(--serif);margin:5px 0 6px}.quest-panel>span{display:block;font:.6875rem var(--ui);margin-bottom:6px;color:#c4c6b3}.quest-panel>small{font:.5625rem var(--ui);color:#798882}.live-chip{float:right;font:.5rem var(--ui);color:#b7a67a;border:1px solid #5b583d;padding:3px}.dev-panel h2{margin-bottom:8px}.dev-tabs{display:flex;gap:3px;border-bottom:1px solid #414b4f;margin-bottom:12px}.dev-tabs button{background:#0b151c;border:1px solid #3c474d;padding:6px 3px;flex:1;font:.6875rem var(--serif)}.dev-tabs button.active{background:linear-gradient(#364a58,#182a36);border-color:#647784}.ally-editor{margin:9px 0 11px;padding-bottom:10px;border-bottom:1px solid #29363d}.ally-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.ally-top b{font:.6875rem var(--ui);font-weight:normal}.ally-top>small{font:.5rem var(--ui);color:#7f8d82}.ally-pick{display:flex;gap:5px;margin-bottom:5px}.ally-pick>img{width:25px;height:28px;object-fit:cover;border:1px solid #625b44}.ally-pick select{width:calc(100% - 30px);font-size:.625rem;padding:4px}.ally-editor>input{padding:5px 7px;font-size:.625rem;height:25px}.dev-panel>.micro,#devContent>.micro{font-size:.5rem;color:#a0a690;line-height:1.4;margin-bottom:9px}.dev-panel .full{margin-top:7px}.dev-panel .small-note{font-size:.625rem;margin:11px 0 4px;line-height:1.55}.dev-panel .checkbox-row{font-size:.6875rem;margin:10px 0}.dev-panel .secondary.full{padding:8px;font-size:.6875rem}.dev-panel .red-button.full{padding:10px 6px;font-size:.6875rem}.dev-panel .text-button{padding:4px;margin-top:8px;font-size:.5625rem}.segmented{display:flex;gap:5px;margin:8px 0 12px}.segmented button{flex:1;background:#16232c;border:1px solid #51626b;padding:7px}.segmented button.active{border-color:#a88647;background:#69502766;color:#ffe6b5}.settings-modal{width:370px}.settings-modal .checkbox-row{margin:20px 0}.modal-backdrop{position:fixed;inset:0;z-index:1000;background:#02070acc;backdrop-filter:blur(5px);display:grid;place-items:center}.boot{padding:60px 30px;max-width:700px;margin:auto;color:#e7d4ab;text-align:center}#toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,25px);max-width:80vw;opacity:0;pointer-events:none;background:#14212bf2;border:1px solid #8d7547;box-shadow:0 6px 30px #000a;padding:14px 22px;color:#efe1c1;font:.8125rem var(--ui);z-index:2000;transition:opacity .15s,transform .15s}#connectionState{position:fixed;top:max(6px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:1990;pointer-events:none;background:#14212be6;border:1px solid #8d7547;border-radius:999px;padding:4px 12px;color:#efe1c1;box-shadow:0 2px 10px #000a;font:.75rem var(--ui);white-space:nowrap}#connectionState[hidden]{display:none}
#toast.visible{opacity:1;transform:translate(-50%,0)}#toast.error{border-color:#ae5743;color:#ffcab5}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-thumb{background:#46504c}::-webkit-scrollbar-track{background:#11191e}
@media(min-width:1700px){.combat-grid{grid-template-columns:15.5% 66.5% 18%}.party-card{min-height:132px;gap:10px;padding:8px}.portrait-frame{width:72px;height:108px}.portrait-frame img{height:93px}.party-info>b{font-size:.9375rem}.party-info>small{font-size:.6875rem}.hud-bar{height:14px}.hud-bar em{font-size:10px;line-height:12px}.party-ability-icons .skill-icon{width:24px;height:24px}.right-rail{padding:12px}.right-rail>.ornate{padding:14px}.minimap{height:160px}.ally-pick select{font-size:.75rem}.dev-panel .small-note{font-size:.6875rem}.ally-editor>input{font-size:.6875rem}.dev-tabs button{font-size:.75rem}.combat-log{font-size:.75rem}#combatLog{font-size:.6875rem}.party-xp{font-size:.75rem}.auth-form{max-width:410px}}
@media(max-width:1279px){.topbar{gap:10px;padding:8px}.topbar .wordmark{width:195px}.wordmark strong{font-size:1.25rem}.nav-button{min-width:57px;padding:0 10px}.account-block{gap:7px}.dev-badge{padding:7px;font-size:.625rem}.account-name{min-width:45px}.combat-grid{grid-template-columns:17% 62% 21%;min-height:650px}.party-card{padding:6px 4px;gap:5px}.portrait-frame{width:48px;height:81px}.portrait-frame img{height:65px}.party-info>b{font-size:.75rem}.party-info>small{font-size:.5rem}.party-ability-icons{gap:3px}.party-ability-icons .skill-icon{width:18px;height:18px}.party-ability-icons .icon{width:13px;height:13px}.party-card{min-height:107px}.creator-grid{grid-template-columns:210px minmax(270px,1fr) 270px;gap:12px}.creator{padding:22px 18px}.choice{gap:8px;padding:7px;min-height:83px}.choice img{width:43px;height:53px}.choice b{font-size:.9375rem}.choice small{font-size:.625rem}.character-page{grid-template-columns:190px minmax(300px,1fr) 270px;padding:22px 18px;gap:14px}.creation-details{padding:18px}.auth-entry{padding-right:22px}.auth-form{padding:26px 22px}.auth-story{padding:35px 22px 0}.wordmark.large strong{font-size:2.875rem}.actionbar{gap:7px;padding:10px 17px}.actionbar .skill-icon{width:36px;height:36px}.begin-button{padding:10px 12px}.bar-gem{padding:0 3px}.story-caption{left:30px}}
@media(max-width:1020px){.auth-page{grid-template-columns:55% 45%}.auth-story{min-height:710px}.login-hero.h0{left:-24%}.login-hero.h1{left:2%}.login-hero.h2{display:none}.login-hero.h3{left:25%}.wordmark.large strong{font-size:2.25rem}.story-caption h1{font-size:1.75rem}.story-caption span{font-size:.5rem}.auth-form{max-width:350px}.topbar nav{gap:0}.dev-badge{display:none}.topbar .wordmark{width:178px}.topbar .wordmark strong{font-size:1.125rem}.creator-grid{grid-template-columns:180px minmax(220px,1fr) 242px;height:auto;min-height:630px}.choice img{width:36px;height:48px}.choices{padding:15px 10px}.choices h2{font-size:.9375rem}.choice small{font-size:.5625rem}.creator-stage{min-height:600px}.hero-pedestal{height:460px}.chapter-note{display:none}.character-page{grid-template-columns:165px minmax(245px,1fr) 242px}.character-info{gap:10px}.character-info .ornate{padding:15px}.character-showcase{min-height:640px}.party-card .portrait-frame{width:35px;height:66px}.portrait-frame img{height:51px}.party-info>small{font-size:.5rem}.party-info>b{font-size:.6875rem}.party-info .hud-bar em{font-size:7px}.party-ability-icons .skill-icon{width:16px;height:16px}.party-rail{padding:8px 4px}.right-rail{padding:7px 5px}.right-rail>.ornate{padding:10px 8px}.right-rail h2{font-size:.8125rem}.minimap{height:108px}.actionbar .skill-icon{width:32px;height:32px}.actionbar .icon{width:23px;height:23px}.actionbar{gap:5px;padding:8px 15px;height:76px}.bar-gem{font-size:1.25rem}.begin-button{padding:9px;font-size:.6875rem}.party-overview{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.topbar{height:66px;justify-content:space-between}.topbar .wordmark{width:165px}.topbar nav{display:none}.account-name{display:none}.account-block .icon-button{padding:6px}.auth-page{display:block}.auth-story{height:330px;min-height:0;padding:22px 20px}.auth-story>.wordmark{width:340px}.wordmark.large strong{font-size:2.25rem}.story-eyebrow{font-size:.5rem}.login-heroes{top:105px;bottom:0;left:2%;right:3%;opacity:.85;mask-image:linear-gradient(#000 80%,transparent)}.login-hero.h0{left:10%;height:100%}.login-hero.h1{left:34%;height:114%}.login-hero.h3{left:61%;height:92%}.story-caption{display:none}.auth-entry{padding:0 20px 70px}.auth-form{max-width:380px;margin-top:-10px;z-index:2;padding:27px}.auth-footer{font-size:.5rem;left:14px;right:14px;bottom:14px;flex-direction:column;text-align:center;gap:8px}.auth-world{filter:blur(1px)}.creator{padding:18px 13px}.page-heading h1{font-size:1.625rem}.creator-grid{display:flex;flex-wrap:wrap;gap:13px;min-height:0;max-height:none}.choices{width:100%}.choices>h2,.choices>.micro,.scope-note{display:none}.choices{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:12px}.choice{min-height:70px;margin:0}.choice img{width:41px;height:49px}.choice b{font-size:.875rem}.choice small{font-size:.5625rem}.creator-stage{width:100%;min-height:470px;height:470px}.hero-pedestal{height:365px}.hero-caption{height:100px}.creation-details{width:100%;overflow:visible}.character-page{display:flex;flex-direction:column;padding:14px;gap:14px}.character-nav{width:100%;display:none}.character-showcase{min-height:480px;height:480px}.character-showcase .hero-pedestal{height:380px}.character-info{width:100%}.combat-grid{height:auto;display:flex;flex-direction:column;min-height:0}.party-rail{order:0;padding:5px 6px;display:block;border-bottom:1px solid #6f644d;border-right:0}.rail-heading{display:none}#partyCards{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.party-card{display:block;min-height:0;padding:4px 3px;margin-bottom:0}.party-card .portrait-frame{display:none}.party-info>b{font-size:.625rem}.party-info>small{font-size:.4375rem;min-height:9px}.party-ability-icons{display:none}.party-xp{padding:6px 0 2px;font-size:.5rem}.combat-log{display:none}.arena-column{order:1;height:600px}.right-rail{order:2;display:grid;grid-template-columns:1fr 1fr;overflow:visible;border-top:1px solid #635d48;border-left:0;gap:8px;padding:10px}.dev-panel{grid-column:1/-1}.right-rail h2{font-size:.9375rem}.dev-panel .small-note{font-size:.6875rem}.ally-editor{display:grid;grid-template-columns:80px 1fr 1fr;gap:7px;align-items:center}.ally-top{margin:0}.ally-top>small{display:none}.ally-pick{margin:0}.ally-editor>input{width:100%}.ally-pick select{font-size:.6875rem}.dev-tabs button{padding:9px}.zone-badge{top:11px;font-size:.8125rem;max-width:96%}.zone-badge span{font-size:.9375rem}.actionbar{bottom:12px;gap:5px;padding:8px 12px;max-width:94%;height:73px}.actionbar .skill-icon{width:33px;height:33px}.actionbar .begin-button{padding:9px 11px;margin-left:3px}.bar-gem{font-size:1.0625rem;padding:0}.action-key>small,.ability-tile>small{font-size:.4375rem}.bar-wing{width:10px}.arena-help{font-size:.6875rem;bottom:97px}.unit-name{font-size:.625rem}.unit-name b{font-size:.6875rem}.unit-name small{font-size:.4375rem}.content-page{padding:22px 14px}.skill-grid{grid-template-columns:1fr}.party-overview{gap:10px}.party-show{padding:11px}.party-show>img{height:200px}.party-show h2{font-size:1.125rem}.xp-rates{gap:6px;padding:15px 6px}.xp-rates b,.xp-rates small{font-size:.5625rem}.xp-rates strong{font-size:1.4375rem;margin:8px 0}.page-heading>.red-button,.page-heading>.secondary{font-size:.6875rem;padding:10px}.modal-backdrop{padding:16px}.settings-modal{max-width:100%}.respawn-clock{font-size:.6875rem}#toast{font-size:.75rem;max-width:95vw;width:max-content}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Native-screen review corrections, not a flattened screen overlay. */
.auth-embers{position:absolute;inset:0;z-index:-2;pointer-events:none}.auth-story,.auth-entry{min-width:0}.painted-wordmark{padding:0!important;clip-path:none;background:none;box-shadow:none;border:0}.painted-wordmark img{display:block;width:100%;height:auto;filter:drop-shadow(0 3px 3px #000)}.wordmark.large.painted-wordmark{width:min(520px,95%)}.hero-pedestal.mage .showcase-hero{height:94%;transform:none}.hero-pedestal.priest .showcase-hero{height:100%;transform:none}.wordmark.large img{width:100%;height:auto}

/* Composed hero group and denser rails from the actual viewport review. */
@media(min-width:1021px){.login-hero.h0{left:0%;height:87%;bottom:8px;z-index:3}.login-hero.h1{left:28%;height:84%;bottom:94px;z-index:4}.login-hero.h2{left:47%;height:85%;bottom:45px;z-index:5}.login-hero.h3{left:65%;height:76%;bottom:0;z-index:6}.login-heroes{right:10px}.story-caption{bottom:64px}.auth-story .login-hero{max-width:none}.minimap{height:105px}.ally-editor{margin:7px 0 8px;padding-bottom:7px}.ally-top{margin-bottom:5px}.ally-editor>input{height:22px;padding:3px 6px}.ally-pick{margin-bottom:4px}.right-rail{gap:8px}.quest-panel>small{font-size:.5rem}.right-rail .quest-panel{padding-top:9px;padding-bottom:8px}.dev-panel .text-button{margin-top:4px}}
/* Keep the four faces and logo readable in the final desktop composition. */
@media(min-width:1021px){.login-heroes{top:220px}.login-hero.h1{left:34%}}
@media(min-width:1021px){.auth-story .story-eyebrow{position:absolute;top:208px;left:0;right:0;margin:0}}

/* Golden Slice 2: preserve the approved art and three-column composition. */
.dev-tabs button{min-width:0;flex:1;padding-left:3px;padding-right:3px;font-size:.625rem}
.setup-links{display:flex;justify-content:space-between;gap:4px}.setup-links .text-button{font-size:.625rem}
.orders-panel>label{margin:12px 0}.orders-panel>label select{width:100%}
.focus-order{position:absolute;top:12px;right:12px;z-index:230;background:#101612d9;border:1px solid #9e8550;color:#ffe4a8;padding:7px 10px;font-size:.625rem;letter-spacing:.4px;max-width:260px;pointer-events:none}
.enemy-focus-hitbox{position:absolute;border:0;background:none;pointer-events:auto;cursor:crosshair;padding:0;opacity:0;z-index:2}
.enemy-focus-hitbox:focus-visible{opacity:1;background:#edd28a08;outline:1px dashed #d7bd7b;border-radius:40%;outline-offset:3px}
.enemy-focus-hitbox:disabled{pointer-events:none}.focus-target .unit-name>b{color:#ffe1a0;text-shadow:0 0 6px #805410,0 2px 2px #000}.focus-target .unit-name>b:before{content:'◆ ';font-size:.5625rem}
.unit-name .unit-cast{position:relative;width:112px;height:13px;margin:3px auto 0;border:1px solid #7a6967;background:#1a1023ed;border-radius:2px;overflow:hidden;text-shadow:0 1px 2px #000}
.unit-cast>i{display:block;height:100%;background:linear-gradient(90deg,#503b77,#9168b3);opacity:.7}.hero-unit .unit-cast>i{background:linear-gradient(90deg,#756230,#d1ab58)}
.unit-cast>span{position:absolute;inset:0;display:grid;place-items:center;font:8px Arial,sans-serif;color:#fff5d8}
.unit-status{font:8px Arial,sans-serif;color:#f4a694;margin-top:3px;text-shadow:0 1px 2px #000;min-height:0}
.party-ability-icons .skill-icon{position:relative}.party-ability-icons small[data-attack-timer],.party-ability-icons small[data-heal-timer],.party-ability-icons small[data-taunt-timer]{position:absolute;bottom:0;left:0;right:0;font:bold .5rem/.625rem Arial,sans-serif;text-align:center;background:#080c10bb;color:#fff5ce}.party-ability-icons small:empty{display:none}
.report-modal{width:min(800px,94vw);max-height:90vh;overflow:auto;padding:28px}.report-table-wrap{overflow-x:auto}.report-table{width:100%;border-collapse:collapse;font-size:.75rem}.report-table th{text-align:right;color:#d7bc87;font-size:.625rem;letter-spacing:.5px;padding:10px 8px;border-bottom:1px solid #756745}.report-table th:first-child{text-align:left}.report-table td{padding:14px 8px;border-bottom:1px solid #363c34;text-align:right;white-space:nowrap}.report-table td:first-child{text-align:left}.report-table td small{display:block;color:#a9a18b;font-size:.625rem;margin-top:4px}.report-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.report-modal .small-note{margin:18px 0}.report-actions button{font-size:.75rem}
@media(max-width:650px){.focus-order{top:44px;font-size:.5625rem;right:8px;max-width:230px}.report-modal{padding:17px}.unit-name .unit-cast{width:102px}}
/* Character sheet (switch off): with no attribute points to spend, the Attributes panel folds into one row so the paper doll comes first. */
.character-attributes-fold{min-width:0;background:#101b22;border:1px solid #66583e;border-radius:5px}
.character-attributes-fold>summary{display:flex;flex-direction:column;gap:2px;min-height:44px;justify-content:center;padding:10px 16px;cursor:pointer;font-family:Cinzel,Georgia,serif;font-size:1.05rem;color:#f0dfb6}
.character-attributes-fold>summary small{font-size:.8rem;color:#bfb08d;font-family:system-ui,sans-serif}
.character-attributes-fold>summary:focus-visible{outline:2px solid #e4c47a;outline-offset:2px}
.character-attributes-fold[open]>summary{border-bottom:1px solid #66583e}
.character-attributes-fold>.attribute-panel{border:0;background:transparent}

/* /veteran.css */
/* Extend the approved interface without changing painted assets or model sizes. */
.mode-select{font-size:.875rem;line-height:1.5}
.mode-select select{font-size:.875rem;padding:9px 6px}





.mechanic-warning[hidden]{display:none}





.mechanic-warning{position:absolute;left:0;right:0;bottom:0;box-sizing:border-box;margin:0;padding:6px 12px;z-index:312;border-top:2px solid var(--uk-gold-hi,#f0ce83);background:var(--uk-navy-1,#101a2a);box-shadow:0 -4px 10px #0005;color:var(--uk-gold-text,#ffe1aa);text-align:center;font-size:.875rem;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
/* A one-line banner on the bottom edge of #battlefield, over the strip below the party and under the nameplates (units stand between 28% and 80% of the height). It takes no room, so showing or hiding the line never moves the battle. One line at every width, cut with an ellipsis; the full text stays in the element for a screen reader. */
.encounter-status.paused-badge{left:12px;right:auto;top:12px;padding:7px 10px;font:.8125rem Arial;letter-spacing:.6px;border:1px solid #b59b6a;z-index:315}
.report-mode{color:#ebc783;font-size:1rem}
.mechanic-report{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 20px;padding:14px;border:1px solid #5f573f;font-size:.875rem}
.mechanic-report dt,.mechanic-report dd{margin:0}
.mechanic-report dd{color:#f2d799;text-align:right}
@media(max-width:700px){




  .mechanic-warning{font-size:.8125rem}
}
@media(max-width:480px){
  .mechanic-warning{font-size:.75rem;padding:6px 8px}
}

/* /boss.css */
.boss-brief{margin:14px 0;padding:14px;border:1px solid #826638;background:#171a18}
.boss-brief h3{margin-bottom:10px;font-size:1.125rem;color:#f0cf8e}
.boss-brief p{font-size:.875rem;line-height:1.55;margin-bottom:12px}
.boss-brief p:last-child{margin-bottom:0}
.boss-progress-summary{font-size:.875rem;line-height:1.5;color:#efd29a;margin:12px 0}
.boss-result{position:absolute;z-index:316;left:50%;top:43%;transform:translate(-50%,-50%);width:460px;max-width:92%;max-height:65%;overflow:auto;text-align:center;padding:26px;background:#0b131bf5}
.boss-result[hidden],.unit[hidden]{display:none}
.boss-result h2{font-size:1.75rem;color:#f3d391;margin-bottom:12px}
.boss-result p,.report-result p{font-size:.875rem;line-height:1.5}
.reward-line{display:flex;justify-content:center;flex-wrap:wrap;gap:12px 26px;margin:18px 0;color:#f5d787;font-size:1.25rem}
.result-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:18px}
.result-actions button{font-size:.875rem}
.report-result{border:1px solid #826638;padding:16px;margin:14px 0}
.history-modal{width:820px;max-width:94vw;max-height:85vh;overflow:auto}
.history-list{margin:16px 0 22px}
.history-row{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(90px,1fr) minmax(110px,1fr);gap:14px;padding:15px 0;border-bottom:1px solid #4b4b3f;align-items:center;font-size:.875rem}
.history-row b{color:#f2d69d}
.history-row small{display:block;margin-top:6px;font-size:.75rem;color:#bfb8a6;line-height:1.5}
.history-row>span:last-child{text-align:right;color:#efd496}
@media(max-width:600px){
 .boss-result{padding:18px;max-height:58%;top:39%}
 .boss-result h2{font-size:1.5rem}
 .result-actions{gap:6px}
 .history-row{grid-template-columns:minmax(0,1fr) auto;gap:8px}
 .history-row>div{grid-column:1/-1}
}

/* /responsive.css */
/* Standing UI baseline: PC, tablet, Android and iPhone browsers.
   Preserve the painted theme; size the layout from available space, never the user agent. */
:root { --tap: 2.75rem; --page-gap: clamp(.875rem, 2vw, 1.5rem); }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { font-size: 1rem; }
body.dialog-open { overflow: hidden; }
button, a, input, select, summary { touch-action: manipulation; }
button, input:not([type=checkbox]), select, summary { min-height: var(--tap); }
input:not([type=checkbox]), select { font-size: 1rem; }
input[type=checkbox] { width: 1.25rem; height: 1.25rem; }
label, .checkbox-row { font-size: .875rem; }
.checkbox-row { min-height: var(--tap); }
.small-note, .subtle, .inline-error, .name-status { font-size: .875rem; }
.micro, .eyebrow, .chapter-note { font-size: .75rem; }
.shell, .auth-page { min-height: 100vh; min-height: 100svh; }
.shell { padding-left: env(safe-area-inset-left); padding-right: env(safe-area-inset-right); padding-bottom: env(safe-area-inset-bottom); }
.topbar { height: auto; min-height: 75px; gap: 1rem; }
.topbar nav, .topbar .account-block { min-width: 0; }
.nav-button { font-size: .875rem; padding: .375rem .75rem; min-height: 3.25rem; }
.account-name b { max-width: 9rem; overflow: hidden; text-overflow: ellipsis; }
.account-name small { font-size: .75rem; }
.icon-button { min-width: var(--tap); min-height: var(--tap); justify-content: center; align-items: center; }
.page-heading { gap: 1rem; flex-wrap: wrap; }
.page-heading > div { min-width: 0; }
.page-heading h1, .hero-caption h1, .hero-caption h2, .party-show h2 { overflow-wrap: anywhere; }
.page-heading .subtle { margin: .5rem 0 0; }
.page-heading > button { flex-shrink: 0; }
.character-page { grid-template-columns: 12rem minmax(0, 1fr) minmax(17rem, 21rem); gap: var(--page-gap); padding: 1.5rem clamp(.875rem, 2vw, 2rem); min-height: 0; align-items: start; }
.character-heading { grid-column: 1 / -1; margin-bottom: 0; }
.character-heading h1 { font-size: clamp(1.5rem, 3vw, 2rem); }
.character-nav, .character-info, .character-showcase { min-width: 0; }
.character-nav button { font-size: .875rem; }
.character-nav p:not(.eyebrow) { font-size: .875rem; }
.character-showcase { min-height: 0; height: auto; align-self: start; }
.character-showcase .hero-pedestal { flex: none; width: 100%; height: clamp(16rem, 46vh, 26rem); height: clamp(16rem, 46svh, 26rem); }
.hero-pedestal { min-width: 0; overflow: hidden; }
.hero-pedestal .showcase-hero,
.hero-pedestal.mage .showcase-hero,
.hero-pedestal.priest .showcase-hero { display: block; width: 100%; height: 100%; max-height: 100%; max-width: 100%; object-fit: contain; transform: none; }
.hero-caption { height: auto; min-height: 6.5rem; flex-shrink: 0; padding: 1rem; }
.hero-caption p { font-size: .875rem; }
.hero-caption .eyebrow { font-size: .75rem; }
.character-info dl, .skill-card dl { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); font-size: .875rem; gap: .75rem; }
.character-info dd, .skill-card dd { overflow-wrap: anywhere; }
.equipment-slot { min-width: 0; }
.equipment-slot > div { min-width: 0; }
.equipment-slot b, .equipment-slot small { overflow-wrap: anywhere; }
.equipment-slot small { font-size: .75rem; line-height: 1.5; }
.creator { padding: 1.5rem clamp(.875rem, 2vw, 2rem); }
.creator-grid { grid-template-columns: 14rem minmax(0, 1fr) minmax(17rem, 21rem); height: auto; min-height: 0; max-height: none; gap: var(--page-gap); align-items: start; }
.creator-grid > * { min-width: 0; }
.creator-stage { min-height: 0; }
.creator-stage .hero-pedestal { height: clamp(17rem, 48vh, 29rem); height: clamp(17rem, 48svh, 29rem); flex: none; }
.creation-details { overflow: visible; }
.choice { min-height: 5rem; }
.choice > span { min-width: 0; }
.choice b { font-size: 1rem; }
.choice small { font-size: .75rem; }
.scope-note p, #createForm > .micro, .ascension-hint small { font-size: .75rem; }
.class-description, .skill-list b, .ascension-hint span { font-size: .875rem; }
.auth-form input:not([type=checkbox]) { height: var(--tap); }
.auth-form .checkbox-row, .auth-form > .subtle { font-size: .875rem; }
.local-note, .local-note span, .auth-footer { font-size: .75rem; letter-spacing: .025em; }
.auth-story { min-height: 46rem; }
.party-overview { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.party-show { min-width: 0; }
.party-show > p, .xp-rates b, .xp-rates small { font-size: .875rem; }
.party-show > img { height: clamp(12rem, 28vh, 19rem); }
.skill-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

/* A dedicated control dock leaves actors and ground warnings unobstructed. */
.combat-grid { grid-template-columns: minmax(12.5rem, 17%) minmax(0, 1fr) minmax(18rem, 23%); height: calc(100vh - 75px); height: calc(100svh - 75px); min-height: 42rem; }
.arena-column { display: flex; flex-direction: column; min-height: 0; }
.arena-heading { flex: none; background: #0b151b; border-bottom: 1px solid #65583e; }
.zone-badge { position: static; transform: none; max-width: none; padding: .625rem; white-space: normal; }
.zone-badge small { font-size: .75rem; letter-spacing: .05em; margin-top: .25rem; display: block; }
.battlefield { height: auto; flex: 1 1 auto; min-height: 24rem; }
.battle-controls { flex: none; background: #0b151b; border-top: 1px solid #7a6744; padding: .625rem; display: grid; gap: .5rem; }
.battle-controls .actionbar { position: static; transform: none; width: 100%; max-width: none; height: auto; min-height: 4.5rem; padding: .5rem; gap: .5rem; flex-wrap: wrap; justify-content: center; box-shadow: none; }
.battle-controls .actionbar::before, .battle-controls .bar-wing, .battle-controls .bar-gem { display: none; }
.actionbar .action-key { min-width: var(--tap); min-height: var(--tap); padding: .25rem .5rem; }
.actionbar .skill-icon { width: 2rem; height: 2rem; }
.action-label { font-size: .875rem; }
.action-key > small, .ability-tile > small { font-size: .75rem; letter-spacing: 0; }
.actionbar .begin-button { height: auto; min-height: var(--tap); margin: 0; padding: .75rem; font-size: .875rem; }





.arena-heading .mechanic-warning { position: static; transform: none; width: auto; max-width: none; padding: .625rem; margin: 0 .5rem .5rem; font-size: .875rem; }
.battle-controls .focus-order { position: static; display: flex; max-width: none; justify-content: space-between; gap: .5rem; align-items: center; font-size: .875rem; pointer-events: auto; padding: .25rem .5rem; }
.focus-order > span { min-width: 0; overflow-wrap: anywhere; }
.focus-order button { padding: .5rem; flex-shrink: 0; }
.focus-order[hidden], .mechanic-warning[hidden] { display: none; }
.arena-help { bottom: 1rem; left: .75rem; right: .75rem; margin: 0; font-size: .875rem; }
.boss-result { top: 50%; max-height: calc(100% - 2rem); padding: 1.25rem; }
.unit-name b { display: block; font-size: .75rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.unit-name small, .unit-status { font-size: .75rem; }
.unit-name .unit-cast { width: 100%; }
.unit-cast > span { font-size: .75rem; }
.unit-name .unit-cast { height: 1.125rem; }
.respawn-clock { font-size: .75rem; width: 6.5rem; left: -3.25rem; }
.party-rail { overflow-y: auto; }
.party-card { min-height: 0; padding: .5rem; gap: .5rem; }
.party-card .portrait-frame { width: 2.75rem; height: 4.5rem; }
.party-card .portrait-frame img { height: 3.25rem; }
.portrait-frame > span { font-size: .75rem; }
.party-info > b { font-size: .875rem; }
.party-info > small { font-size: .75rem; }
.party-info .hud-bar { height: 1.125rem; }
.party-info .hud-bar em { font-size: .75rem; line-height: 1rem; }
.party-info .hud-bar.resource { height: .5rem; }
.party-xp { font-size: .75rem; gap: .5rem; flex-wrap: wrap; }
.combat-log { flex: none; min-height: 0; overflow: hidden; }
.log-tabs { display: list-item; cursor: pointer; font-size: .875rem; padding: .75rem; }
.log-tabs span { float: right; font-size: .75rem; }
#combatLog { max-height: 15rem; font-size: .875rem; line-height: 1.5; }
#combatLog time, .log-empty { font-size: .75rem; }
.right-rail h2 { font-size: 1rem; }
.right-rail .micro, .dev-panel > .micro, #devContent > .micro { font-size: .75rem; }
.quest-panel > b, .quest-panel > span, .quest-panel > small { font-size: .875rem; line-height: 1.5; color: #c4c6b3; }
.dev-tabs button { font-size: .875rem; }
.dev-panel .checkbox-row, .dev-panel .small-note, .dev-panel .secondary.full, .dev-panel .red-button.full, .dev-panel .text-button, .setup-links .text-button { font-size: .875rem; }
.ally-editor > input, .ally-pick select { height: var(--tap); padding: .5rem; font-size: 1rem; }
.ally-pick { align-items: center; }
.ally-pick select { flex: 1; width: 0; min-width: 0; }
.ally-top b { font-size: .875rem; }
.ally-top > small, .live-chip { font-size: .75rem; }
.dev-panel { scroll-margin-top: 1rem; }
.modal-backdrop { padding: max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left)); overflow-y: auto; }
.settings-modal, .report-modal, .history-modal { width: min(100%, 51rem); max-width: 100%; max-height: calc(100vh - 2rem); max-height: calc(100dvh - 2rem); overflow-y: auto; overscroll-behavior: contain; }
.settings-modal { width: min(100%, 26rem); }
.report-table { font-size: .875rem; }
.report-table th, .report-table td small { font-size: .75rem; }
.report-actions button { font-size: .875rem; }
.report-table-wrap { max-width: 100%; }
#toast { max-width: calc(100vw - 2rem); width: max-content; overflow-wrap: anywhere; bottom: max(1rem, env(safe-area-inset-bottom)); font-size: .875rem; }

@media (max-width: 1100px) {
  .topbar { flex-wrap: wrap; gap: .5rem; padding: .5rem .75rem; }
  .topbar > .wordmark { width: 11rem; margin-right: auto; }
  .topbar nav { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); flex: 0 0 100%; width: 100%; order: 3; }
  .nav-button { min-width: 0; gap: .25rem; }
  .dev-badge { display: none; }
  .character-page { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .character-nav { display: none; }
  .character-showcase .hero-pedestal { height: clamp(15rem, 40vh, 23rem); height: clamp(15rem, 40svh, 23rem); }
  .creator-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .choices { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); padding: .75rem; gap: .5rem; width: auto; }
  .choices > h2, .choices > .micro, .scope-note { display: none; }
  .choice { margin: 0; padding: .5rem; gap: .5rem; }
  .choice img { width: 2.5rem; height: 3rem; }
  .choice i { display: none; }
  .creator-stage { width: auto; height: auto; }
  .creation-details { width: auto; }
  .combat-grid { height: auto; min-height: 0; display: flex; flex-direction: column; }
  .party-rail { order: 0; padding: .5rem; border-right: 0; border-bottom: 1px solid #655f48; display: block; }
  .rail-heading { display: none; }
  #partyCards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .5rem; }
  .party-card { margin: 0; }
  .party-card .portrait-frame { display: none; }
  .party-ability-icons { display: none; }
  .party-xp { padding: .5rem 0; }
  .combat-log { display: block; }
  .arena-column { order: 1; height: auto; }
  .battlefield { flex: none; height: clamp(24rem, 55vh, 34rem); height: clamp(24rem, 55svh, 34rem); }
  .right-rail { order: 2; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); overflow: visible; border-left: 0; padding: .75rem; gap: .75rem; }
  .dev-panel { grid-column: 1 / -1; }
  .ally-editor { display: grid; grid-template-columns: 6rem minmax(0, 1fr) minmax(0, 1fr); gap: .75rem; align-items: center; }
  .ally-top, .ally-pick { margin: 0; }
  .ally-top > small { display: none; }
  .party-overview { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
  .topbar { padding-top: max(.5rem, env(safe-area-inset-top)); }
  .account-name { display: none; }
  .topbar .account-block { gap: .375rem; }
  .topbar .account-block .icon-button { padding: .5rem; }
  .auth-page { display: flex; flex-direction: column; overflow: hidden; }
  .auth-story { height: auto; min-height: 0; padding: 1.25rem 1rem; }
  .auth-story > .wordmark { width: min(20rem, 100%); }
  .story-eyebrow { font-size: .75rem; margin-top: .75rem; }
  .login-heroes, .story-caption { display: none; }
  .auth-entry { width: 100%; padding: .5rem 1rem 1.5rem; }
  .auth-form { max-width: 26rem; margin: 0 auto; padding: 1.5rem; }
  .auth-footer { position: static; flex-direction: column; text-align: center; padding: 0 1rem max(1rem, env(safe-area-inset-bottom)); gap: .5rem; }
  .creator, .content-page, .character-page { padding: 1rem .875rem; }
  .character-page { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; }
  .character-heading, .page-heading { align-items: flex-start; }
  .character-heading > button { width: 100%; }
  .character-showcase, .creator-stage { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); height: auto; min-height: 0; align-items: center; }
  .character-showcase .hero-pedestal, .creator-stage .hero-pedestal { height: clamp(12rem, 32vh, 16rem); height: clamp(12rem, 32svh, 16rem); padding: .5rem 0; }
  .hero-caption { width: 100%; padding: .75rem; min-height: 0; background: transparent; }
  .hero-caption h2 { font-size: 1.25rem; }
  .hero-caption p { font-size: .875rem; }
  .character-info { gap: 1rem; }
  .creator-grid { grid-template-columns: minmax(0, 1fr); }
  .choices { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .creator-stage { width: 100%; }
  .creation-details { padding: 1.25rem; }
  .skill-grid { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
  .skill-card { padding: 1.25rem; }
  .party-show > img { height: 12rem; }
  .xp-rates { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
  .xp-rates b, .xp-rates small { font-size: .875rem; }
  #partyCards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .party-card { display: flex; padding: .5rem; }
  .party-info > b { font-size: .875rem; }
  .party-info > small { font-size: .75rem; min-height: auto; }
  .battle-controls .actionbar { gap: .375rem; }
  .actionbar .ability-tile { display: none; }
  .actionbar .action-key { flex: 1 1 3rem; }
  .actionbar .begin-button { flex: 1 1 4rem; }


  .battlefield { height: clamp(24rem, 50vh, 30rem); height: clamp(24rem, 50svh, 30rem); }
  .right-rail { grid-template-columns: minmax(0, 1fr); }
  .minimap-panel { display: block; order: 2; }
  .quest-panel { order: 0; }
  .dev-panel { order: 1; }
  .ally-editor { grid-template-columns: 5.5rem minmax(0, 1fr); }
  .ally-editor > input { grid-column: 2; width: 100%; }
  .dev-tabs button { font-size: .875rem; padding: .5rem .25rem; }
  .boss-result { top: 50%; max-height: calc(100% - 1.5rem); max-width: calc(100% - 1.5rem); padding: 1rem; }
  .boss-result h2 { font-size: 1.5rem; }
  .result-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .result-actions > :first-child { grid-column: 1 / -1; }
  .mechanic-report { grid-template-columns: minmax(0, 1fr) auto; gap: .75rem; padding: .75rem; }
  .history-row { grid-template-columns: minmax(0, 1fr) auto; gap: .5rem; }
  .history-row > div { grid-column: 1 / -1; }
  .report-modal { padding: 1rem; }
  .report-actions > button { flex: 1 1 8rem; }
}

@media (max-width: 380px) {
  .topbar > .wordmark { width: 9rem; }
  .choice { gap: .375rem; padding: .375rem; }
  .choice img { width: 2rem; }
  .choice b { font-size: .875rem; }
  .hero-caption { padding: .5rem; }
  .character-showcase, .creator-stage { grid-template-columns: 45% minmax(0, 1fr); }

}

@media (max-height: 540px) and (max-width: 1100px) and (orientation: landscape) {
  .topbar nav { gap: .25rem; }
  .nav-button { flex-direction: row; min-height: var(--tap); }
  .battlefield { height: 24rem; }
}

/* /movement.css */
.formation-status { margin: 0; padding: .5rem .75rem; border-bottom: 1px solid #514932; color: #dec698; font-size: .875rem; line-height: 1.5; text-align: center; overflow-wrap: anywhere; }
.move-button { font-size: .875rem; padding: .625rem; }
.move-button[aria-expanded=true] { border-color: #e5c27e; background: #39452f; }
.move-controls { border: 1px solid #776849; padding: .75rem; background: #111c23; }
.move-controls p { font-size: .875rem; margin-bottom: .75rem; }
.move-controls > button { margin-top: .5rem; width: 100%; font-size: .875rem; }
.move-directions { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: .5rem; }
.move-directions button { font-size: .875rem; min-width: 0; padding: .5rem; }
.choosing-destination { cursor: crosshair; outline: 2px solid #d6b16d; outline-offset: -2px; }
.battlefield { touch-action: pan-y pinch-zoom; }
.destination-marker { position: absolute; z-index: 220; width: 1.5rem; height: 1.5rem; border: 2px solid #e7d598; border-radius: 50%; transform: translate(-50%,-50%); box-shadow: 0 0 0 3px #101a25bb; pointer-events: none; }
.destination-marker::before { content: ''; position: absolute; inset: .3rem; border-radius: 50%; background: #e7d598; }
.destination-marker span { position: absolute; top: 1.75rem; left: 50%; transform: translateX(-50%); font-size: .75rem; padding: .2rem .4rem; background: #101a25ed; color: #fff0cd; }
.destination-marker[hidden], .move-controls[hidden] { display: none; }
@media(max-width:760px) {
 .actionbar .move-button { flex: 1 1 5rem; }
 .formation-status { font-size: .875rem; text-align: left; }
 .move-directions { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

/* Expanding destination controls must not clip the arena or the controls below it. */
.combat-grid.movement-open { height: auto; }
.combat-grid.movement-open .arena-column { overflow: visible; }

/* /review.css */
/* Combat review follows the existing painted frame, with readable phone cards. */
.report-modal { width: min(100%, 58rem); }
.review-section { margin-block: 1.5rem; }
.review-section h3, .review-member h4 { margin: 0; color: #f1d8a2; }
.review-observations { padding-left: 1.25rem; }
.review-observations li { margin-block: .85rem; padding-left: .25rem; }
.review-observations p { margin-block: .25rem; line-height: 1.55; }
.review-tip { color: #d3c5af; }
.review-party-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.review-member { min-width: 0; padding: 1rem; border: 1px solid #655039; background: #171510; border-radius: .35rem; }
.review-member-heading { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: .4rem; }
.review-member h4 { font-size: 1.1rem; overflow-wrap: anywhere; }
.review-member-heading span, .review-member > p { font-size: .85rem; color: #d3c5af; }
.review-member > p { margin-block: .35rem .9rem; }
.review-member dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .9rem .5rem; margin: 0; }
.review-member dl > div { min-width: 0; }
.review-member dt { color: #d3c5af; font-size: .8rem; }
.review-member dd { margin: .25rem 0 0; font-size: 1rem; color: #fff0d3; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.review-sources { padding: 0; list-style: none; }
.review-sources li { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: .75rem; padding-block: .85rem; border-bottom: 1px solid #514332; }
.review-sources li > div:last-child { text-align: right; }
.review-sources small, .review-timeline small { display: block; margin-top: .3rem; color: #d3c5af; line-height: 1.4; }
.review-death, .review-details { border: 1px solid #655039; border-radius: .3rem; margin-block: .65rem; padding-inline: .85rem; }
.combat-review summary { min-height: 44px; padding-block: .8rem; cursor: pointer; line-height: 1.5; overflow-wrap: anywhere; }
.review-death summary small { display: block; color: #d3c5af; margin-top: .3rem; }
.review-timeline { padding: 0; list-style: none; }
.review-timeline li { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr); gap: .5rem; padding-block: .6rem; border-bottom: 1px solid #44382a; line-height: 1.5; }
.review-timeline time { color: #ead2a0; font-variant-numeric: tabular-nums; }
.combat-review, .review-empty, .report-error { overflow-wrap: anywhere; }
.review-empty, .report-error { padding: 1rem; border: 1px solid #655039; line-height: 1.6; }
.report-actions { position: sticky; bottom: -.1rem; padding-block: .75rem; background: #191710; border-top: 1px solid #655039; z-index: 1; }
.history-row .review-open { grid-column: 1 / -1; justify-self: start; min-height: 44px; }
@media (max-width: 600px) {
  .review-party-grid { grid-template-columns: minmax(0, 1fr); }
  .review-member dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-sources li { grid-template-columns: minmax(0, 1fr); gap: .35rem; }
  .review-sources li > div:last-child { text-align: left; }
  .report-actions { position: static; }
  .history-row .review-open { justify-self: stretch; }
}
@media (max-height: 500px) { .report-actions { position: static; } }

@media(max-width:700px){.modal-backdrop .report-modal button{min-height:44px}}
/* Keep closing and refreshing available while long raid reports scroll. */
.modal-backdrop .report-modal{display:flex;flex-direction:column;max-height:calc(100dvh - 32px);overflow:hidden;box-sizing:border-box}
.report-scroll{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding-right:5px}
.report-modal>.report-actions{position:static;flex:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;padding-bottom:0;background:transparent}
.report-modal>.report-actions>button{min-height:44px;margin:0}
@media(max-width:600px){.report-modal>.report-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.report-modal>.report-actions>button{min-width:0;white-space:normal}.report-modal>.report-actions>[data-action="close-report"]{grid-column:1/-1}}
/* Wipe note (9 Oct): after a party wipe, one line on why, one next step and Review fight. Also the Boss Hunt loss reason and Welcome Back's best find. */
.wipe-note{margin:8px auto 2px;max-width:46rem;padding:8px 12px;border:1px solid #9a4a3c99;border-radius:6px;background:#1d0d0bd9;color:#eadcc2;text-align:center;font:400 .875rem/1.45 var(--ui,system-ui);white-space:normal}
.wipe-note p{margin:0 0 6px}.wipe-note strong{color:#f0b9a2}
.wipe-note-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.wipe-note-actions>button{min-height:44px;margin:0;padding:6px 14px}
.wipe-note-actions>.text-button{min-width:44px;background:none;border:0;color:#c9bda4;text-decoration:underline}
.hunt-loss-reason{margin:6px 0 8px;color:#eadcc2}
.return-best strong.rarity-epic{color:#c48cf0}.return-best strong.rarity-rare{color:#e8cf68}.return-best strong.rarity-magic{color:#79a6f0}.return-best strong.rarity-legendary,.return-best strong.rarity-unique{color:#f0a35a}
@media(max-width:600px){.wipe-note{margin:6px 0 2px;padding:7px 8px}.wipe-note-actions{flex-wrap:nowrap}.wipe-note-actions>button{flex:1 1 0;min-width:0;padding:6px 8px}.wipe-note-actions>.text-button{flex:0 0 auto}}
.hunt-loss-reason+.result-actions{margin-bottom:10px}
.return-next{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.return-next>button{min-height:44px;margin:0}

/* /azdom.css */
.azdom-page { max-width: 1440px; margin: auto; padding: 1.5rem clamp(.8rem, 3vw, 3rem) 3rem; font-size: 1rem; line-height: 1.55; }
.azdom-page h1 { font-size: clamp(1.8rem, 3vw, 3rem); }
.azdom-page h2 { font-size: 1.5rem; margin: 0 0 .65rem; }
.azdom-page h3 { font-size: 1.2rem; margin: .35rem 0 .6rem; color: #f1d7a6; }
.azdom-page h4 { font-size: 1rem; margin: .5rem 0; }
.azdom-page p { margin: .5rem 0 1rem; }
.azdom-page small, .azdom-page .small-note, .azdom-page .eyebrow { font-size: .875rem; }
.azdom-page button { font-size: .9rem; min-height: 44px; padding: .65rem 1rem; white-space: normal; line-height: 1.4; }
.azdom-page button:disabled { opacity: .48; cursor: not-allowed; }
.azdom-page [aria-busy=true] button { cursor: progress; }
.az-wallet { text-align: right; color: #d3c2a7; }
.az-wallet strong { display: block; color: #f2d69d; font-size: 1.2rem; }
.az-tabs { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: .4rem; padding: .5rem; margin-bottom: 1.3rem; background: #151817; border: 1px solid #62553c; border-radius: .35rem; }
.az-tabs button { border: 1px solid transparent; background: transparent; color: #d1c6b1; }
.az-tabs button.chosen { color: #fff1cc; border-color: #8e7448; background: #39321e; }
.az-live, .az-intro { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-block: 1rem 1.5rem; }
.az-intro > div { flex: 1 1 28rem; }
.az-live { border: 1px solid #708752; background: #253324; padding: 1rem; border-radius: .35rem; }
.az-live > div, .az-actions { display: flex; flex-wrap: wrap; gap: .6rem; }
.az-actions { margin-block: 1rem .4rem; }
.az-region { margin-block: 2rem; }
.az-zone-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1rem; }
.az-card-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,17rem),1fr)); gap: 1rem; margin-block: 1rem; }
.az-zone.ornate { padding: 0; overflow: hidden; }
.az-scenery { height: 13rem; background-repeat: no-repeat; border-bottom: 1px solid #746344; }
.az-zone-content { padding: 1.1rem; }
.az-zone-content h3 { min-height: 1.4em; }
.az-zone .az-actions > button { flex: 1 1 9rem; }
.az-card.ornate, .az-summary.ornate { margin-block: 1.25rem; padding: clamp(1rem,2vw,1.5rem); }
.az-member, .az-item { min-width: 0; border: 1px solid #62533c; border-radius: .3rem; padding: 1rem; background: #191b18; overflow-wrap: anywhere; }
.az-member > button { margin-top: .5rem; }
.az-item.rarity-unique { border-color: #a17fbd; }
.az-item.rarity-legendary { border-color: #dbab59; }
.az-party-code { display: flex; gap: 1rem; align-items: baseline; flex-wrap: wrap; }
.az-party-code strong { font-family: monospace; font-size: 1.3rem; letter-spacing: .12em; color: #f1d8a2; }
.az-summary dl, .az-materials { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1rem; }
.az-summary dt, .az-materials dt { font-size: .875rem; color: #c4baa7; }
.az-summary dd, .az-materials dd { margin: .25rem 0 0; font-size: 1.3rem; color: #f5dfb1; overflow-wrap: anywhere; }
.az-summary .az-loot { max-height: 12rem; overflow-y: auto; padding-left: 1.2rem; }
.az-inline-form { display: flex; align-items: end; flex-wrap: wrap; gap: .75rem; margin-block: 1.25rem .5rem; }
.az-inline-form label { flex: 1 1 9rem; min-width: 0; font-size: .875rem; }
.az-inline-form input { width: 100%; margin-top: .35rem; min-height: 44px; font-size: 1rem; background: #101510; color: #f3e3c7; border: 1px solid #81704f; border-radius: .25rem; padding: .7rem; }
.az-talent { border-top: 1px solid #514b37; padding-block: .75rem; }
.az-member progress { display: block; width: 100%; height: 1rem; accent-color: #b19454; margin-top: .6rem; }
.az-town.ornate { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.6fr); gap: 1.5rem; padding: 1rem; }
.az-town-art { min-height: 17rem; background-repeat: no-repeat; border-radius: .2rem; }
.az-error { padding: 1rem; color: #ffe0d3; background: #4d241c; border: 1px solid #af7861; }
.az-busy { color: #f7ddb0; }
.az-journal-row { display: flex; justify-content: space-between; align-items: center; gap: 1rem; border-bottom: 1px solid #544a36; padding-block: 1rem; }
.azdom-page [data-realm], .azdom-page [data-az-tab] { touch-action: manipulation; }
@media (max-width: 1000px) { .az-zone-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 760px) {
 .topbar nav { grid-template-columns: repeat(5,minmax(0,1fr)); }
 .topbar .nav-button { padding-inline: .2rem; min-width: 0; }
 .topbar .nav-button span { font-size: .75rem; }
 .azdom-page { padding-inline: .75rem; }
 .azdom-page .page-heading { align-items: start; gap: .75rem; }
 .az-wallet { text-align: left; }
 .az-tabs { grid-template-columns: repeat(3,minmax(0,1fr)); }
 .az-zone-grid { grid-template-columns: minmax(0,1fr); }
 .az-summary dl, .az-materials { grid-template-columns: repeat(2,minmax(0,1fr)); }
 .az-town.ornate { grid-template-columns: minmax(0,1fr); }
 .az-town-art { min-height: 12rem; }
 .az-journal-row { flex-wrap: wrap; }
 .az-actions > button { flex: 1 1 8rem; }
 .azdom-page { padding-bottom: max(2rem,env(safe-area-inset-bottom)); }
}

/* Refinement: clear readiness and compact secondary details at every width. */
.az-readiness { font-size: .875rem; padding: .6rem .75rem; border-left: 3px solid; background: #111c18; overflow-wrap: anywhere; }
.az-readiness.ready { color: #c4ddb2; border-color: #809d62; }
.az-readiness.blocked { color: #f0cbb0; border-color: #a57c56; background: #271f1b; }
.az-reward-note { color: #d1c1a8; }
.az-recommendation { display: inline-block; margin: .35rem 0 .1rem .5rem; padding: .15rem .45rem; border: 1px solid #829866; border-radius: .25rem; font: .875rem var(--ui); color: #d1e4b8; }
.az-summary-disclosure.ornate { padding: .5rem 1rem; }
.az-summary-disclosure > summary, .az-item-options > summary { min-height: 44px; padding: .7rem .2rem; cursor: pointer; line-height: 1.5; font-size: 1rem; }
.az-summary-disclosure > summary span { display: inline-block; margin-left: .6rem; color: #c5b594; font-size: .875rem; }
.az-summary-disclosure .az-summary.ornate { margin: 0; padding: .5rem 0; box-shadow: none; border: 0; background: none; }
.az-summary-disclosure .az-summary.ornate::before, .az-summary-disclosure .az-summary.ornate::after { display: none; }
.az-comparison { border-top: 1px solid #5f533d; padding-top: .5rem; font-size: .875rem; }
.az-comparison p, .az-comparison ul { margin: .35rem 0; }
.az-comparison ul { padding-left: 1.1rem; }
.az-comparison .gain { color: #c4ddb2; }
.az-comparison .loss { color: #efbfb1; }
.az-equipped { color: #d2e7b9; font-weight: bold; }
.az-item-options { margin-top: .75rem; border-top: 1px solid #5f533d; }
.orders-status { color: #ebd199; font-size: .875rem; min-height: 1.5em; }
.azdom-page summary:focus-visible { outline: 2px solid #edc97f; outline-offset: 3px; }
@media (max-width: 760px) {
 .topbar nav { grid-template-columns: repeat(5,minmax(0,1fr)); }
 .topbar .nav-button { flex-direction: column; }
 .topbar .nav-button span { font-size: .875rem; overflow-wrap: anywhere; }
 .az-summary-disclosure > summary span { display: block; margin-left: 0; }
 .az-recommendation { margin-left: 0; display: table; }
 .az-item-options .az-actions { display: grid; grid-template-columns: minmax(0,1fr); }
}
@media (min-width: 761px) and (max-width: 1100px) {
 .topbar nav { grid-template-columns: repeat(5,minmax(0,1fr)); }
}
@media (max-width: 380px) {
 .topbar nav { grid-template-columns: repeat(3,minmax(0,1fr)); }
 .topbar .nav-button { flex-direction: row; }
}

/* Story opening and top-level destinations. Columns follow the viewport, never the device. */
.topbar { flex-wrap: wrap; gap: 1rem; }
.topbar nav { display: grid; grid-template-columns: repeat(8,minmax(0,1fr)); width: 100%; flex: 1 0 100%; order: 3; gap: .35rem; }
.topbar .nav-button { min-width: 0; min-height: 48px; padding: .6rem .4rem; justify-content: center; }
.topbar .nav-button span { white-space: normal; overflow-wrap: anywhere; font-size: .9375rem; }
.topbar .account-block { margin-left: auto; }
.az-town-welcome.ornate { padding: 0; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.25fr); overflow: hidden; }
.az-mayor-stage { min-height: 28rem; position: relative; isolation: isolate; background: linear-gradient(0deg,#111a1a80,transparent 55%),url('/assets/story/azdom-town-square.webp') center/cover; }
.az-mayor-stage img { display: block; width: 100%; height: 100%; max-height: 37rem; position: absolute; inset: 0; padding: 1.5rem .75rem 0; object-fit: contain; object-position: bottom; filter: drop-shadow(0 0 1.2rem #131911b0); }
.az-mayor-dialogue { padding: clamp(1.2rem,3vw,2.5rem); min-width: 0; align-self: center; }
.az-mayor-dialogue p { max-width: 58ch; }
.az-tutorial { padding-left: 1.3rem; color: #dfcea8; }
.az-tutorial li { margin-block: .55rem; }
.az-quest-lead.ornate { padding: clamp(1rem,3vw,2rem); border-color: #a58a50; background: linear-gradient(115deg,#303425,#15211d); }
.az-quest-lead p { max-width: 75ch; }
.az-quest-lead progress { display: block; width: min(100%,40rem); margin-block: .65rem; height: 1rem; accent-color: #c5a460; }
.az-objective { color: #ecd194; font-weight: bold; }
.az-journey-note { max-width: 80ch; color: #d4c6ad; }
.az-progression-details.ornate, .az-challenges.ornate { margin-block: 1.5rem; padding: .7rem clamp(.8rem,2vw,1.5rem); }
.az-progression-details > summary, .az-challenges > summary { min-height: 48px; padding: .65rem 0; cursor: pointer; font-size: 1.1rem; color: #efdbb2; }
.az-tree-root { margin: 1.7rem auto 0; padding: 1rem; width: min(100%,22rem); text-align: center; border: 1px solid #c5a460; border-radius: .4rem; background: #283226; }
.az-tree-root strong, .az-tree-root small { display: block; }
.az-tree-root > span { font-size: 1.5rem; color: #e7c783; }
.az-skill-tree { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.5rem; margin-block: 1.2rem 2rem; }
.az-skill-branch { min-width: 0; border-top: 2px solid #70613f; padding-top: .75rem; }
.az-skill-branch h3 { text-align: center; }
.az-skill-branch ol { margin: 1rem 0 0; padding: 0 0 0 .85rem; list-style: none; border-left: 2px solid #665d3d; }
.az-skill-node { position: relative; padding: 1rem; margin-block: 0 1.25rem; border: 1px solid #686049; border-radius: .45rem; background: #171f1c; overflow-wrap: anywhere; }
.az-skill-node::before { content: ''; position: absolute; left: -1.15rem; top: 1.7rem; width: .5rem; height: .5rem; background: #a5905c; border: 1px solid #ddd0a5; border-radius: 50%; }
.az-skill-node h4 { font-size: 1.1rem; color: #f1dfb7; }
.az-skill-node p, .az-skill-node .az-prerequisite { font-size: .9375rem; }
.az-skill-node.available { border-color: #c7a665; box-shadow: 0 0 0 1px #7e673938; }
.az-skill-node.learned { border-color: #91a96e; background: #233024; }
.az-skill-node.locked { background: #191c1b; }
.az-skill-node .az-prerequisite { border-top: 1px solid #454532; padding-top: .6rem; color: #c9bb9c; }
.az-skill-node button { width: 100%; }


.skill-locked { opacity: .5; }
.ward-label { font: inherit; }
.az-empty-battle { margin: 2rem auto; max-width: 52rem; }
.az-empty-battle button { margin: .5rem; min-height: 48px; white-space: normal; }
@media (max-width: 1100px) {
 .topbar nav { grid-template-columns: repeat(4,minmax(0,1fr)); }
 .topbar .nav-button { flex-direction: row; }
}
@media (max-width: 760px) {
 .topbar nav { grid-template-columns: repeat(4,minmax(0,1fr)); gap: .25rem; }
 .topbar .nav-button { flex-direction: column; padding: .5rem .15rem; }
 .topbar .nav-button span { font-size: .875rem; }
 .az-town-welcome.ornate { grid-template-columns: minmax(0,1fr); }
 .az-mayor-stage { min-height: 16rem; height: clamp(16rem,55vw,22rem); }
 .az-mayor-stage img { padding-top: 1rem; }
 .az-mayor-dialogue { padding: 1.1rem; }
 .az-skill-tree { grid-template-columns: minmax(0,1fr); gap: 1rem; }
 .az-skill-node { padding: .85rem; }
 .az-tree-root { margin-top: 1rem; }
 .az-quest-lead label { display: block; }
 .az-empty-battle { margin: 1rem .75rem; }
}
@media (max-width: 380px) {
 .topbar .nav-button span { font-size: .875rem; }
 .topbar .nav-button svg { width: 1rem; height: 1rem; }
 .azdom-page .page-heading { flex-direction: column; }
}
@media (max-height: 540px) and (orientation: landscape) {
 .az-mayor-stage { min-height: 13rem; height: 13rem; }
 .topbar .nav-button { flex-direction: row; }
}
@media (max-width: 300px) {
 .topbar nav { grid-template-columns: repeat(2,minmax(0,1fr)); }
 .topbar .account-block { flex-wrap: wrap; justify-content: flex-start; }
}

/* Class accents, explicit skill states and existing painted creature previews. */
.az-skill-header { --calling: #d7b786; }
.az-skill-header[data-archetype="Mage"] { --calling: #bbb8ec; }
.az-skill-header[data-archetype="Priest"] { --calling: #e6d6a4; }
.az-skill-header[data-archetype="Archer"] { --calling: #bad194; }
.az-skill-kind { display: inline-block; margin-block: .35rem 0; padding: .2rem .5rem; color: var(--calling); border: 1px solid currentColor; border-radius: .2rem; font-size: .875rem; }
.az-skill-node.available { border-color: var(--calling); }
.az-skill-node.learned .az-skill-kind { color: #c9dfa9; }
.az-skill-node.locked .az-skill-kind { color: #c2bead; }
.az-scenery { position: relative; isolation: isolate; }
.az-creature-preview { position: absolute; bottom: .3rem; right: .5rem; width: 9rem; height: 9rem; max-width: 48%; object-fit: contain; filter: drop-shadow(0 .4rem .4rem #131710aa); }
.rare-unit .unit-name { border-bottom: 1px solid #b29a67; background: #182019cf; border-radius: .25rem; padding: .2rem; }
.rare-unit .unit-name small { color: #e5c486; }
.unit-status { max-width: 100%; line-height: 1.25; overflow-wrap: anywhere; }
@media (max-width: 760px) { .az-creature-preview { width: 8rem; height: 8rem; } }

/* /appearance.css */
/* Cropped views reuse the sprite without editing the artwork or loading another PNG. */
.outfit-portrait { display:block; position:relative; flex:none; width:100%; height:100%; overflow:hidden; font-style:normal; }
.outfit-portrait > img { display:block; width:100%; height:100%; object-fit:cover; border:0; background:none; }
.outfit-portrait.cropped > img { position:absolute; width:var(--portrait-width); max-width:none; height:auto; left:var(--portrait-left); top:var(--portrait-top); object-fit:initial; }
.choice .outfit-portrait { display:block; width:3rem; height:3rem; border:1px solid #5b523d; }
.choice .outfit-portrait > img, .ally-pick .outfit-portrait > img { width:100%; height:100%; }
.choice .outfit-portrait.cropped > img, .ally-pick .outfit-portrait.cropped > img { width:var(--portrait-width); height:auto; }
.ally-pick .outfit-portrait { width:2.5rem; height:2.5rem; }
.party-card .portrait-frame .outfit-portrait { height:3.25rem; }
.party-card .portrait-frame .outfit-portrait > img { height:100%; }
.party-card .portrait-frame .outfit-portrait.cropped > img { height:auto; }
.outfit-label { color:#e8ce98; font-size:1rem; line-height:1.5; overflow-wrap:anywhere; }
.outfit-stages { list-style:none; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.75rem; padding:0; margin:1.25rem 0; }
.outfit-stages li { display:flex; flex-direction:column; align-items:center; padding:.75rem; min-width:0; border:1px solid #444b47; background:#0a1116; text-align:center; }
.outfit-stages li.current { border-color:#c8a568; background:#22251e; }
.outfit-stages img { display:block; width:100%; height:10rem; object-fit:contain; margin-bottom:.5rem; }
.outfit-stages b { font-size:1rem; overflow-wrap:anywhere; }
.outfit-stages span { font-size:.875rem; color:#bfb6a3; margin-top:.375rem; }
@media(max-width:600px) { .outfit-stages { grid-template-columns:repeat(2,minmax(0,1fr)); gap:.5rem; } .outfit-stages img { height:8rem; } .choice .outfit-portrait { width:2.5rem; height:2.5rem; } }
@media(max-width:359px) { .choice .outfit-portrait { width:2rem; height:2rem; } }

/* /equipment.css */
/* Painted fantasy equipment. Content remains readable as space and text size change. */
.salvage-backdrop { z-index:1100; }
.salvage-confirmation { width:min(420px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); overflow:auto; box-sizing:border-box; padding:24px; }
.salvage-confirmation h2 { margin:0 0 16px; }
.salvage-confirmation p { line-height:1.5; margin:0 0 24px; }
.salvage-confirmation .az-actions { display:flex; justify-content:flex-end; gap:12px; flex-wrap:wrap; }
.gear-title { display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.gear-title>div { min-width:0; }
.gear-title h2 { margin:.2rem 0; overflow-wrap:anywhere; }
.gear-title p { margin:.4rem 0; }
.gear-title .eyebrow { letter-spacing:.12em; }
.gear-character-intro { display:grid; grid-template-columns:minmax(180px,.8fr) minmax(0,1.2fr); gap:clamp(1rem,3vw,2.5rem); align-items:center; margin-top:1.25rem; }
.gear-portrait { margin:0; display:flex; align-items:center; justify-content:center; flex-direction:column; border:1px solid #51584a; border-radius:.4rem; padding:1rem; background:radial-gradient(ellipse at 50% 55%,#807b3430,transparent 62%),linear-gradient(180deg,#172421,#0c1419); }
.gear-portrait>img { display:block; height:270px; width:100%; object-fit:contain; filter:drop-shadow(0 .4rem .6rem #0008); }
.gear-portrait figcaption { color:#e6cf9a; text-align:center; margin:.75rem 0 0; font-family:var(--serif); font-size:1.1rem; }
.gear-portrait small { display:block; color:#bdc7bd; margin:.4rem 0 0; font-family:var(--ui); }
.gear-build-overview { min-width:0; }
.gear-essentials { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; margin:1rem 0; }
.gear-essentials>div { border-bottom:1px solid #48564e; padding:.5rem 0 .8rem; min-width:0; }
.gear-essentials dt { font-size:.875rem; color:#c2cbbf; }
.gear-essentials dd { margin:.3rem 0 0; color:#f4dda5; font:1.8rem var(--serif); overflow-wrap:anywhere; font-variant-numeric:tabular-nums; }
.gear-quick-attributes { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:.5rem; margin:1.25rem 0; }
.gear-quick-attributes>div { min-width:0; padding:.65rem .3rem; border:1px solid #4b5a55; border-radius:.25rem; background:#14211f; text-align:center; }
.gear-quick-attributes dt { font-size:.8rem; color:#bdc9c0; }
.gear-quick-attributes abbr { text-decoration:none; }
.gear-quick-attributes dd { font-size:1.2rem; color:#efe2be; margin:.25rem 0 0; overflow-wrap:anywhere; }
.gear-slot-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr)); gap:.8rem; margin:1rem 0; }
.gear-slot { display:flex; flex-direction:column; gap:.65rem; padding:.85rem; border:1px solid #48554d; border-top:2px solid var(--rarity,#acb6b9); border-radius:.3rem; background:linear-gradient(130deg,#1c272b,#101a1f); min-width:0; }
.gear-slot-heading { display:flex; gap:.65rem; align-items:center; }
.gear-slot-heading>div { min-width:0; }
.gear-slot-heading small { color:#e3ddcb; }
.gear-slot-body { min-width:0; flex:1; }
.gear-slot b,.gear-slot-body span,.gear-slot small { display:block; overflow-wrap:anywhere; }
.gear-slot-body b { font-family:var(--serif); font-size:1.05rem; color:var(--rarity,#ecdfbe); margin:0 0 .35rem; font-weight:normal; }
.gear-slot-body span,.gear-slot-state { font-size:.875rem; color:#bcc9c7; line-height:1.5; }
.gear-slot-state { display:block; margin-top:.25rem; }
.gear-slot>button { width:100%; margin:0; }
.gear-slot.is-empty { border-top-style:dashed; border-color:#526257; background:#111c1d; }
.gear-slot.is-empty .gear-icon { filter:grayscale(.9); opacity:.6; }
.gear-slot.is-empty b { color:#c7d0c8; }
.gear-slot.is-empty .text-button { border:1px solid #4c5e55; border-radius:.25rem; color:#e2cea2; }
.gear-icon { display:block; width:64px; height:64px; flex:none; object-fit:contain; border:1px solid #74715a; border-radius:.35rem; background:#10171e; box-shadow:0 2px 6px #0005; }
.gear-rarity { display:inline-flex; align-items:center; max-width:100%; margin:.1rem .4rem .25rem 0; padding:.12rem .45rem; color:var(--rarity,#c6ced2); border:1px solid currentColor; border-radius:.2rem; font-size:.75rem; line-height:1.5; overflow-wrap:anywhere; }
.gear-item-level { color:#c2c9c5; font-size:.8rem; white-space:normal; overflow-wrap:anywhere; }
.gear-attribute-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:.8rem; }
.gear-attribute-grid article { padding:1rem; border:1px solid #44554f; border-top:2px solid #af945d; border-radius:.25rem; background:#152129; min-width:0; overflow-wrap:anywhere; }
.gear-attribute-grid h3 { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.4rem; font-size:1rem; }
.gear-attribute-grid strong { color:#f2db9b; font-size:1.5rem; font-variant-numeric:tabular-nums; }
.gear-attribute-grid p,.gear-attribute-grid small { font-size:.875rem; line-height:1.55; }
.gear-derived { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:1rem; margin:1.5rem 0; }
.gear-derived div { min-width:0; border-bottom:1px solid #46534f; padding-bottom:.6rem; overflow-wrap:anywhere; }
.gear-derived dt { font-size:.875rem; color:#bec9c7; }
.gear-derived dd { font-size:1.2rem; margin:.5rem 0 0; color:#efe5c9; font-variant-numeric:tabular-nums; }
.gear-gain { color:#a1dfb4!important; }.gear-loss { color:#ffc0b0!important; }
.gear-count { display:inline-block; font-family:var(--ui); font-size:1rem; margin-left:.4rem; color:#e6cd97; white-space:nowrap; }
.gear-capacity-label { display:flex; justify-content:space-between; flex-wrap:wrap; gap:.4rem 1rem; margin-top:1rem; color:#c4cdbe; font-size:.875rem; }
.gear-capacity { display:block; appearance:none; -webkit-appearance:none; width:100%; height:.65rem; background:#101a21; border:1px solid #687363; border-radius:1rem; margin:.65rem 0 1.3rem; overflow:hidden; }
.gear-capacity::-webkit-meter-bar { border:0; background:#101a21; border-radius:1rem; height:100%; }
.gear-capacity::-webkit-meter-optimum-value { background:linear-gradient(90deg,#63794b,#adc588); }
.gear-capacity::-webkit-meter-suboptimum-value { background:#d6b36c; }
.gear-capacity::-webkit-meter-even-less-good-value { background:#e29472; }
.gear-capacity::-moz-meter-bar { background:#adc588; }
.gear-capacity:-moz-meter-sub-optimum::-moz-meter-bar { background:#d6b36c; }
.gear-capacity:-moz-meter-sub-sub-optimum::-moz-meter-bar { background:#e29472; }
.gear-supplies { padding:.1rem 1rem 1rem; border:1px solid #536056; border-radius:.3rem; background:#15201f; }
.gear-supplies:not([open]) { padding-bottom:.1rem; }
.gear-supplies>summary { padding:.65rem 0; color:#e9d5a9; cursor:pointer; }
.gear-supplies>summary>span { display:inline-block; margin-left:.5rem; color:#bfcbc3; font-size:.875rem; }
.gear-section-heading { display:flex; justify-content:space-between; align-items:baseline; flex-wrap:wrap; gap:.5rem; margin-top:1.5rem; }
.gear-section-heading h3 { margin:0; }
.gear-section-heading>span { font-size:.875rem; color:#c5cbbd; }
.gear-stacks { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr)); gap:.75rem; margin:1rem 0; }
.gear-stacks>div { display:flex; align-items:center; gap:.65rem; padding:.75rem; border:1px solid #40504b; border-radius:.3rem; background:#101b22; min-width:0; flex-wrap:wrap; }
.gear-stacks span { flex:1; min-width:min(100%,100px); overflow-wrap:anywhere; }
.gear-stacks b,.gear-stacks small { display:block; margin-top:.25rem; }
.gear-stacks b { color:#edd69e; font-weight:normal; font-variant-numeric:tabular-nums; }
.gear-stacks .gear-icon { width:48px; height:48px; }
.gear-bag-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr)); gap:1rem; margin-top:1rem; }
.gear-item { display:flex; flex-direction:column; background:linear-gradient(125deg,#1e2a30,#111b22); border:1px solid #52625c; border-top:3px solid var(--rarity,#acb6b9); border-radius:.4rem; padding:1rem; min-width:0; overflow-wrap:anywhere; }
.gear-item-heading { display:flex; gap:.8rem; align-items:center; padding-bottom:.75rem; border-bottom:1px solid #43544e; }
.gear-item-heading>div { min-width:0; }
.gear-item h3 { color:var(--rarity,#ecdfbe); font-size:1.15rem; margin:.25rem 0 .35rem; }
.gear-item-heading small { color:#c4cfc8; }
.gear-item p,.gear-base { line-height:1.55; font-size:.875rem; }
.gear-label { display:block; color:#c8cdbb; font-size:.8rem; margin-bottom:.45rem; }
.gear-base { margin:1rem 0 .65rem; }
.gear-property-list { display:flex; flex-wrap:wrap; gap:.35rem; }
.gear-property-list>span { padding:.2rem .5rem; border:1px solid #455a54; border-radius:.2rem; color:#e3dfcf; background:#162320; }
.gear-blank { padding:.75rem; border:1px dashed #617262; border-radius:.25rem; background:#111c1b; color:#c2ccc2; }
.gear-blank>span { display:block; color:#e0d3b4; margin-bottom:.25rem; }
.gear-affixes { padding:0; list-style:none; }
.gear-affixes li { color:#d1e0f6; font-size:.9375rem; margin:.5rem 0; }
.gear-affixes span { display:inline-block; text-transform:uppercase; font-size:.75rem; margin-right:.4rem; color:#b8c8c4; }
.gear-affixes b { font-weight:normal; color:#e3eaf9; }
.gear-comparison { padding:.75rem; border-left:2px solid #798874; background:#101b1f; }
.gear-comparison>strong { display:block; font-weight:normal; color:#e2d1aa; }
.gear-replacing { display:block; color:#c0cbc6; margin:.25rem 0; }
.gear-item>.az-actions { margin-top:auto; padding-top:.5rem; }
.gear-item>.az-actions>button { flex:1 1 7rem; }
.gear-item>details { margin-top:.75rem; border-top:1px solid #4b5e54; padding-top:.25rem; }
.gear-item>details>summary { padding:.65rem 0; cursor:pointer; color:#d6c5a1; }
.gear-item>details>button { margin:.5rem .3rem .5rem 0; }
.gear-empty-state { grid-column:1/-1; padding:1.5rem; text-align:center; border:1px dashed #65755c; border-radius:.4rem; background:radial-gradient(ellipse at top,#33422c66,#121d21); }
.gear-empty-state>button { margin:.3rem; }
.rarity-normal { --rarity:#c6ced2; }.rarity-magic { --rarity:#9ae867; }.rarity-rare { --rarity:#76bdff; }.rarity-epic { --rarity:#f2c865; }.rarity-legendary,.rarity-mythic { --rarity:#ff808e; }
.gear-service-status { padding:.4rem .65rem; border:1px solid #7b8662; border-radius:.25rem; font-size:.875rem; color:#d6dfbc; background:#1f2b22; }
.gear-craft-steps { counter-reset:craft; display:flex; flex-wrap:wrap; gap:.75rem 1.5rem; padding:1rem 0; margin:1rem 0; list-style:none; border-block:1px solid #58604d; }
.gear-craft-steps li { counter-increment:craft; display:flex; align-items:center; gap:.5rem; font-size:.875rem; color:#e8d8b9; }
.gear-craft-steps li::before { content:counter(craft); display:grid; place-items:center; flex:none; width:1.7rem; height:1.7rem; border:1px solid #998257; border-radius:50%; color:#ecd098; background:#293023; }
.gear-workpiece { border:1px solid #53625c; border-left:3px solid var(--rarity); border-radius:.3rem; margin:1rem 0; padding:1rem; background:linear-gradient(120deg,#17252a,#101b21); }
.gear-workpiece>summary { display:flex; gap:.8rem; align-items:center; color:var(--rarity); font-family:var(--serif); font-size:1.15rem; min-height:48px; cursor:pointer; list-style:none; }
.gear-workpiece>summary::-webkit-details-marker { display:none; }
.gear-workpiece summary span { flex:1; min-width:0; overflow-wrap:anywhere; }
.gear-workpiece summary small { display:block; color:#c3cec9; font: .875rem/1.5 var(--ui); margin-top:.25rem; }
.gear-workpiece summary::after { content:'+'; font-size:1.5rem; flex:none; width:1.5rem; text-align:center; }
.gear-workpiece[open]>summary { padding-bottom:1rem; border-bottom:1px solid #47564f; }
.gear-workpiece[open]>summary::after { content:'−'; }
.gear-affix-capacity { display:flex; flex-wrap:wrap; gap:.6rem; margin:1rem 0; }
.gear-affix-capacity>span { background:#162520; padding:.4rem .6rem; border:1px solid #54634d; border-radius:.25rem; color:#cbd3bf; font-size:.875rem; }
.gear-affix-capacity b { color:#f0dca5; font-weight:normal; margin-left:.3rem; white-space:nowrap; }
.gear-crafting-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr)); gap:1rem; }
.gear-enchant-form { display:flex; flex-direction:column; padding:1rem; min-width:0; border:1px solid #566354; border-radius:.3rem; background:linear-gradient(155deg,#24302e,#152129); overflow-wrap:anywhere; }
.gear-currency-heading { display:flex; align-items:center; gap:.75rem; }
.gear-currency-heading .gear-icon { width:48px; height:48px; }
.gear-currency-heading>div { min-width:0; }
.gear-enchant-form h4 { color:#eed7a1; font-family:var(--serif); font-size:1.15rem; margin:0; }
.gear-currency-heading span { display:block; font-size:.875rem; color:#c9d3c1; margin-top:.2rem; }
.gear-enchant-form p { font-size:.875rem; line-height:1.5; margin-top:.85rem; }
.gear-enchant-form label,.gear-item label { display:block; margin:.4rem 0 .7rem; font-size:.875rem; }
.gear-enchant-form select,.gear-item input { margin-top:.4rem; width:100%; min-height:44px; font-size:1rem; }
.gear-enchant-footer { margin-top:auto; }
.gear-enchant-footer>button { width:100%; }
.gear-cost { color:#eddbb3; }
.gear-craft-reason { color:#f3c8a8; padding:.65rem; border-left:2px solid #bb8c60; background:#271f1b; }
.gear-table-scroll { overflow-x:auto; }
.gear-table-scroll table { width:100%; border-collapse:collapse; font-size:.875rem; }
.gear-table-scroll td,.gear-table-scroll th { text-align:left; padding:.7rem; border-bottom:1px solid #4c595a; min-width:6rem; }
#enchanter>details { margin:1rem 0; }
#enchanter>details>summary { padding:.65rem .4rem; border-bottom:1px solid #4b5d50; cursor:pointer; color:#ead5a5; }
/* Separate the name from the countdown so truncation never consumes the timer. */
.unit>.unit-cast { position:absolute; top:8px; left:-64px; width:128px; height:1.5rem; border:1px solid #ad9669; border-radius:4px; overflow:hidden; background:#111926; box-shadow:0 2px 5px #000a; pointer-events:none; }
.unit>.unit-cast[hidden] { display:none; }
.unit>.unit-cast>i { background:linear-gradient(90deg,#54416c,#917aa6); opacity:.55; }
.hero-unit>.unit-cast>i { background:linear-gradient(90deg,#66532a,#b49c59); }
.unit>.unit-cast>span { display:flex; align-items:center; justify-content:space-between; gap:.3rem; padding:0 .35rem; font:.75rem/1.4 var(--ui); color:#fff5dc; text-shadow:0 1px 2px #000; }
.cast-name { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:normal; }
.cast-countdown { flex:none; font-style:normal; font-variant-numeric:tabular-nums; }
/* Match the top menus to the warm metal edging used throughout the realm. */
.az-wallet { overflow-wrap:anywhere; }
.topbar .nav-button { font-family:var(--ui); border:1px solid #526051; border-radius:.25rem; background:#101b1cb3; color:#d0c7ae; }
.topbar .nav-button.active { border-color:#ba975d; background:linear-gradient(180deg,#50452b,#293024); box-shadow:inset 0 -2px #c9a261; color:#ffe5ad; }
.topbar .nav-button:focus-visible { outline:2px solid #f6d68c; outline-offset:2px; }
@media(hover:hover) { .gear-item:hover,.gear-workpiece:hover { border-color:var(--rarity); } }
@media(max-width:1000px) {
 .gear-attribute-grid,.gear-derived { grid-template-columns:repeat(3,minmax(0,1fr)); }
 .gear-portrait>img { height:240px; }
}
@media(max-width:600px) {
 .gear-character-intro { grid-template-columns:minmax(0,1fr); gap:1.25rem; }
 .gear-portrait { padding:.6rem; }
 .gear-portrait>img { height:190px; }
 .gear-portrait figcaption { margin:.25rem; }
 .gear-slot-grid,.gear-attribute-grid,.gear-derived { grid-template-columns:repeat(2,minmax(0,1fr)); gap:.6rem; }
 .gear-slot { padding:.65rem; }
 .gear-slot-heading { flex-wrap:wrap; }
 .gear-slot .gear-icon { width:48px; height:48px; }
 .gear-slot-body b { font-size:1rem; }
 .gear-attribute-grid article { padding:.75rem; }
 .gear-workpiece { padding:.75rem; }
 .gear-title>button { width:100%; }
 .gear-crafting-grid,.gear-bag-grid { grid-template-columns:minmax(0,1fr); }
 .gear-empty-state { padding:1rem; }
 .gear-empty-state>button { width:100%; margin:.35rem 0; }
}
@media(max-width:380px) {
 .topbar .nav-button { padding-inline:0; }
 .gear-slot-grid { grid-template-columns:minmax(0,1fr); }
 .gear-slot { display:grid; grid-template-columns:minmax(0,1fr); }
 .gear-slot-heading { flex-wrap:nowrap; }
 .gear-quick-attributes { grid-template-columns:repeat(3,minmax(0,1fr)); }
 .gear-essentials dd { font-size:1.5rem; }
 .gear-workpiece .gear-icon { width:48px; height:48px; }
}
@media(max-width:300px) {
 .gear-essentials,.gear-attribute-grid,.gear-derived { grid-template-columns:minmax(0,1fr); }
 .gear-item-heading,.gear-currency-heading { flex-wrap:wrap; }
}

/* Jade distinguishes raid sets from Heroic drops without changing rarity rules. */
.rarity-legendary:has(.raid-set-art){--rarity:#74d9b1}
.gear-icon.raid-set-art{border:2px solid #74d9b1;box-shadow:inset 0 0 0 1px #173b31,0 0 7px #53b99638;background:radial-gradient(ellipse at center,#214437,#0d191b 75%)}
.raid-set-art .item-tier-badge{color:#c1f6dc;border-color:#4c9b7c;background:#103629;font-size:.5625rem;line-height:1.2;letter-spacing:.02em}

/* Curated owned Legendary presentation; the equipment rarity remains Unique. */
.legendary-owned-icon{outline:1px solid #efd18b;outline-offset:2px;box-shadow:0 0 0 4px #3c2a13,0 0 16px #d9aa4938!important;border-color:#d9ae5c!important;border-radius:5px;--model-rarity:#f4d48b!important}
:is(.item-tile,.workshop-item):has(.legendary-owned-icon){border-color:#e3b763!important;background:linear-gradient(135deg,#382b16,#151c22 52%,#392a16)!important;box-shadow:inset 0 0 0 2px #7f63373d,0 0 10px #e3b76320}
:is(.item-details,.workshop-workpiece):has(.legendary-owned-icon) h2{color:#ffe0a0;text-shadow:0 1px 2px #000}
.legendary-effects{position:relative;margin:18px 0;padding:22px 24px;border:1px solid #be984f;border-radius:9px;background:linear-gradient(135deg,#352a1870,#131c24 38%,#282316);box-shadow:inset 0 0 0 4px #101923,inset 0 0 0 5px #96743b70;color:#f2ead8;overflow-wrap:anywhere}
.legendary-effects:before,.legendary-effects:after{content:'◆';position:absolute;left:50%;transform:translateX(-50%);color:#f0ca7d;font-size:.75rem;line-height:1;background:#1c2123;padding:0 8px}
.legendary-effects:before{top:-6px}.legendary-effects:after{bottom:-6px}
.legendary-effects .legendary-kicker{margin:0 0 6px;color:#e5c98b;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase}
.legendary-effects h3{margin:0 0 14px;color:#ffe1a2;font-family:Georgia,serif;font-size:1.2rem;line-height:1.3}
.legendary-effects ol{display:grid;gap:12px;margin:0;padding-left:24px;list-style:upper-roman}
.legendary-effects li{padding-left:6px;line-height:1.55}.legendary-effects li::marker{color:#f1cf83;font-family:Georgia,serif;font-weight:bold}
.legendary-properties{overflow-wrap:anywhere}.legendary-properties>.gear-label{color:#d8be83;margin-top:16px}
@media(max-width:480px){.legendary-effects{margin:16px 0;padding:18px 16px}.legendary-effects h3{font-size:1.08rem}.legendary-effects ol{padding-left:20px;gap:14px}.legendary-effects li{padding-left:3px}}

/* Legendary frame (owner, 15 Oct: Legendaries get their own border). A molten amber double rail with corner studs, distinct from the pale gold
   Tier 0 frame (the class is repeated to outrank the inventory dialog's frameless card rule) (.tier0-item) these weapons used to borrow. The card gets its own padding so no line sits on the rail at 320 px. */
.item-details.legendary-item.legendary-item.legendary-item{position:relative;padding:14px 12px;border:24px solid #3a1d0a;border-image:url(/assets/legendary/frame-v1.webp) 220 / 64px / 0 round;border-radius:0;background:radial-gradient(ellipse at 50% 0,#4a2a1066,transparent 60%),linear-gradient(180deg,#1d1710,#121619 45%);background-clip:padding-box;box-shadow:0 0 22px 2px #ff8c2a40} /* painted forged-iron frame (16 Oct, Higgsfield art): a 9-slice of 220px corners, drawn 64px wide over a 24px border so the rail sits at the content edge */
.item-details.legendary-item.legendary-item.legendary-item:before,.item-details.legendary-item.legendary-item.legendary-item:after{content:none}
.item-details.legendary-item h2{color:#ffc670;text-shadow:0 1px 2px #000,0 0 10px #ff8c2a55}
.item-details.legendary-item .legendary-properties>p:first-child{margin-top:4px}
.item-details.legendary-item .legendary-effects{border-color:#d9903a;box-shadow:inset 0 0 0 4px #101923,inset 0 0 0 5px #c07a2f80}
.item-details.legendary-item .legendary-effects:before,.item-details.legendary-item .legendary-effects:after{color:#ffb85a;background:#171a1c}
:is(.item-tile,.workshop-item).legendary-item{border-color:#e09a3c!important;box-shadow:inset 0 0 0 1px #2a1606,inset 0 0 0 3px #b3702a80,0 0 12px #ff8c2a40!important}
.legendary-item .legendary-owned-icon{outline-color:#ffbf66;--model-rarity:#ffbf66!important}
.legendary-lines{display:grid;gap:10px;margin:6px 0 14px;padding:0;list-style:none}
.legendary-lines li{padding:10px 12px;border:1px solid #9a6227;border-left:3px solid #ffb85a;border-radius:6px;background:linear-gradient(90deg,#3a230f66,#14181b);color:#f2e6cf;line-height:1.5}
.legendary-lines strong{display:block;color:#ffc670;font-family:Georgia,serif;font-weight:normal;font-size:1.02rem}
.legendary-line-chips{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 0;padding:0}
.legendary-line-chips span{padding:4px 12px;border:1px solid #c07a2f;border-radius:999px;background:#3a230f80;color:#ffc670;font-family:Georgia,serif;font-size:.95rem;line-height:1.4}
.legendary-more>.legendary-properties{padding:2px 14px 12px}.legendary-more>summary{color:#ffc670}
.gear-icon[data-item-tier=LG]{border-color:#e09a3c;box-shadow:inset 0 0 0 1px #2a1606,0 0 10px #ff8c2a55}
@media(max-width:480px){.item-details.legendary-item.legendary-item.legendary-item{padding:10px 6px;border-width:17px;border-image-width:46px}}

/* Preserve Dawnsteel artwork inside the shared material frame. */
.gear-icon.dawnsteel-icon{position:relative;overflow:hidden}.gear-icon.dawnsteel-icon>img{position:absolute;inset:9%;width:82%;height:82%;object-fit:contain;border:0;border-radius:0;background:#0b141b}

/* /expansion.css */
:root{--exp-gold:#d2b576;--exp-border:#625337;--exp-panel:#122026}.exp-page{max-width:1400px;margin:auto;padding:24px 28px 96px;color:#ddd8c9}.exp-page h1,.exp-page h2,.exp-page h3,.inventory-panel h2{font-family:Georgia,serif;color:#f2dfb1;line-height:1.25}.exp-page h1{font-size:clamp(1.8125rem,3vw,2.625rem);margin:6px 0 18px}.exp-page h2{font-size:1.5rem;margin:5px 0 16px}.exp-page h3{font-size:1.1875rem;margin:6px 0}.exp-page p{font-size:1rem;line-height:1.65}.exp-heading{padding:20px 0 4px}.exp-heading .eyebrow{color:var(--exp-gold)}.exp-panel{background:linear-gradient(135deg,#19282e,#101b21);border:1px solid var(--exp-border);border-radius:6px;padding:24px;margin:16px 0;box-shadow:0 9px 30px #0003}.exp-page button,.exp-page select,.exp-page input{min-height:44px}.exp-page select,.exp-page input{font-size:1rem;max-width:100%;width:100%;background:#0b171d;border:1px solid #706142;color:#eee6d0;padding:11px;border-radius:4px}.exp-page label{display:block;font-size:.875rem;line-height:1.7;margin:10px 0}.exp-error{color:#ffb7a1;background:#431f23;border:1px solid #985743;padding:13px 18px;border-radius:4px;font-size:1rem;line-height:1.6}.global-error{max-width:1344px;margin:14px auto}.exp-table{overflow:auto;margin:18px 0;max-width:100%}.exp-table table{border-collapse:collapse;width:100%;font-size:.9375rem;text-align:left;line-height:1.5}.exp-table td,.exp-table th{padding:12px;border-bottom:1px solid #35443f;vertical-align:top}.exp-table th{color:#ead2a0;background:#26302c}.exp-table td:first-child{color:#ddc38e}.equipment-workspace{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:22px;align-items:start}.inventory-panel{background:linear-gradient(145deg,#29291f,#152127 70%);border:1px solid #8a6c3a;border-radius:6px;padding:20px;color:#ddd8c9;min-width:0}.inventory-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.inventory-heading h2{margin:0;font-size:1.5625rem}.inventory-heading>span{color:#d9c38f;font-size:.9375rem}.inventory-gold{margin:8px 0 20px;color:#e8c578;font-size:.9375rem}.item-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:7px;align-items:start}.item-tile{aspect-ratio:1;min-height:52px;min-width:0;border:1px solid #67706b;background:radial-gradient(circle at 50% 40%,#30362e,#10191e);border-radius:4px;position:relative;padding:3px;display:grid;place-items:center;cursor:pointer;width:100%;color:#e3cf9b}.item-tile .gear-icon{width:100%;height:100%;max-height:78px;object-fit:contain;filter:drop-shadow(0 3px 3px #0009)}.item-tile:hover,.item-tile:focus-visible{background:#394137;outline:2px solid #d6bd83;outline-offset:1px}.item-tier,.item-quantity{position:absolute;right:3px;bottom:2px;font-size:.75rem;background:#071117dd;padding:0 3px;border-radius:2px}.item-tile.rarity-magic{border-color:#689ad8}.item-tile.rarity-rare{border-color:#dbc465}.item-tile.rarity-epic{border-color:#b38ce3}.item-tile.rarity-legendary{border-color:#e3a65d}.item-tile.rarity-mythic{border-color:#f0828d;box-shadow:inset 0 0 14px #c8506c30}.item-tile.empty{background:#08141988;border-color:#4a483355;cursor:default}.item-tile.empty .gear-icon{opacity:.23;filter:grayscale(1)}.inventory-panel .small-note{font-size:.875rem;line-height:1.6}.inventory-drawer,.item-inspector{max-width:620px;width:calc(100vw - 24px);max-height:calc(100dvh - 32px);overflow:auto;padding:22px;background:#101c23}.inventory-drawer .inventory-panel{margin-bottom:18px}.item-detail-title{display:flex;align-items:center;gap:16px}.item-detail-title>.gear-icon{width:72px;height:72px;flex-shrink:0}.item-detail-title h2{font:1.5rem Georgia,serif;color:#efdab0;margin:5px 0}.item-detail-title p{font-size:.875rem;line-height:1.5;margin:4px 0}.item-inspector .az-actions{margin:18px 0}.item-details .gear-affixes{font-size:1rem}.item-hover{position:fixed;z-index:80;width:min(355px,calc(100vw - 20px));padding:18px;border:1px solid #b4975d;background:#08151bf7;box-shadow:0 14px 40px #000c;pointer-events:none;max-height:calc(100dvh - 16px);overflow:hidden;color:#ded4bd}.item-hover :is(details,button,.iv-actions,.az-actions){display:none}.item-hover .item-detail-title+.compare-current-summary{margin:10px 0}.item-hover h2{font-size:1.25rem}.item-hover .gear-icon{width:50px;height:50px}.item-hover .item-detail-title{gap:10px}.character-panel{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(240px,1fr);gap:30px;align-items:center}.paper-doll{display:grid;grid-template-columns:70px minmax(120px,1fr) 70px;gap:14px;align-items:center;background:radial-gradient(ellipse at center,#38413966,transparent 65%)}.paper-doll>div{display:grid;gap:13px}.paper-slot>span{display:block;font-size:.75rem;text-align:center;color:#c2b58e;margin-bottom:4px}.paper-slot .item-tile{width:64px;height:64px}.paper-doll figure{margin:0;min-width:0;align-self:stretch;display:flex;flex-direction:column;align-items:center;justify-content:center}.paper-doll figure img{width:100%;height:460px;object-fit:contain;filter:drop-shadow(0 14px 12px #000a)}.paper-doll figcaption{font:.9375rem Georgia,serif;color:#d3b87e;text-align:center}.character-progression h2{font-size:1.8125rem}.character-progression progress{width:100%;height:10px;accent-color:#96bd79}.character-progression button{margin:7px}.town-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:24px;align-items:start}.town-inventory{position:sticky;top:20px;padding-top:35px}.town-services{display:flex;gap:10px;flex-wrap:wrap}.town-services button{flex:1}.town-services .selected{border-color:#d7b676;background:#3d3c2a}.mayor-panel{background:linear-gradient(95deg,#13222aec,#1a292bd9),url('/assets/story/zones/meadow.png') center/cover}.recipe-detail{display:flex;gap:22px;align-items:center;margin-top:20px}.recipe-detail>.gear-icon{width:96px;height:96px;flex-shrink:0}.enchant-operations>details{border:1px solid #435141;background:#0a171e;margin:12px 0;border-radius:4px}.enchant-operations summary{padding:16px;cursor:pointer;color:#d6c296;min-height:48px;font-size:.9375rem}.enchant-operations .gear-enchant-form{margin:0;border:0}.recovery-row{display:flex;gap:16px;align-items:center;justify-content:space-between;padding:12px;border-bottom:1px solid #465043;font-size:.9375rem}.recovery-row small{display:block;line-height:1.6}.auction-entry{padding:16px;border:1px solid #625d40;margin:14px 0}.zone-atlas,.bestiary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.zone-card,.bestiary-card{border:1px solid #78633e;border-radius:7px;overflow:hidden;background:#111e25;box-shadow:0 9px 28px #0004}.zone-image,.beast-image{position:relative;height:230px;background:linear-gradient(0deg,#111e25,transparent 85%),var(--zone-art) center/cover;display:grid;place-items:center}.zone-image img{height:210px;width:100%;object-fit:contain;filter:drop-shadow(0 6px 10px #0008)}.zone-image>div{position:absolute;left:20px;bottom:0;right:10px;text-shadow:0 2px 4px #000}.zone-image h2{font-size:1.625rem}.zone-copy,.beast-copy{padding:4px 22px 22px}.zone-copy progress,.beast-copy progress{width:100%;accent-color:#aab672;height:7px}.party-warning{color:#e4cb8d;font-size:.875rem!important;line-height:1.6}.zone-copy details,.beast-copy details{border-top:1px solid #37443b;margin-top:12px}.zone-copy summary,.beast-copy summary{padding:13px 0;color:#ceb780;cursor:pointer;min-height:46px;font-size:.9375rem}.challenge-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.challenge-grid article{padding:18px;background:#0d191f;border:1px solid #4a4d3b}.battle-inventory-access{display:flex;justify-content:flex-end;gap:10px;margin-bottom:10px}.compact{padding:16px}.compact .item-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.compact .item-tile{min-height:46px}.right-rail>#battleInventory{margin-bottom:20px}.lesson-banner{max-width:1344px;margin:14px auto 0;border:1px solid #617057;border-left:3px solid #bb9f63;border-radius:4px;background:linear-gradient(90deg,#20312d,#14242a);color:#e4d6b7}.lesson-banner summary{display:flex;gap:18px;align-items:center;cursor:pointer;padding:12px 18px;min-height:54px}.lesson-banner summary span{font-size:.75rem;color:#c9b680;letter-spacing:.1em}.lesson-banner summary strong{font:1.125rem Georgia,serif}.lesson-banner summary em{font-size:.875rem;font-style:normal}.lesson-banner summary:after{content:'⌄';margin-left:auto}.lesson-banner>div{padding:0 18px 18px;line-height:1.6;font-size:1rem}.lesson-banner button{margin-right:8px}.guide-search{max-width:660px}.guide-search input{margin:8px 0 18px}.guide-article{margin:12px 0;border:1px solid #5c543d;background:linear-gradient(130deg,#1b2b2e,#101c23);border-radius:5px}.guide-article summary{list-style:none;cursor:pointer;padding:20px 48px 20px 24px;position:relative}.guide-article summary:after{content:'+';position:absolute;right:22px;top:20px;font-size:1.5625rem;color:#d0b67b}.guide-article[open] summary:after{content:'−'}.guide-article summary h2{margin:0;font-size:1.4375rem}.guide-article>div{padding:0 24px 24px}.guide-article p{max-width:90ch;line-height:1.8}.field-lessons ol{list-style:none;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.field-lessons li{display:flex;gap:14px;padding:18px;background:#0b181f;border-left:2px solid #988453}.field-lessons li>span{font-size:1.4375rem;color:#cdb77c}.field-lessons li.complete{border-color:#81b78f}.field-lessons li.complete>span{color:#8bc3a0}.field-lessons button{margin:5px}.beast-image img{height:240px;width:100%;object-fit:contain;filter:drop-shadow(0 10px 10px #000a)}.unknown-beast{font:6rem Georgia,serif;color:#d4c59e66}.research-stage{position:absolute;right:12px;top:12px;background:#0b171deb;padding:8px;border:1px solid #917e49;font-size:.8125rem;color:#d6c088}.beast-copy h2{font-size:1.5625rem}.beast-copy .eyebrow{font-size:.75rem}.beast-copy p{font-size:.9375rem}.discovery-locked{color:#a7b3ae;font-style:italic}.expedition-roster{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:20px 0}.expedition-roster article{display:flex;gap:16px;padding:18px;background:#0b1920;border:1px solid #4b553f;align-items:start;border-radius:5px}.expedition-roster article p{font-size:.875rem;margin:5px 0}.expedition-roster article button{margin:5px 5px 5px 0}.role-medallion{border:1px solid #9b7f44;border-radius:50%;width:45px;height:45px;flex-shrink:0;display:grid;place-items:center;color:#e3c988;background:radial-gradient(#444b36,#16232a);font-size:1.5625rem}.role-accepted{color:#92cdaa}.role-pending{color:#d8ba7b}.party-code{letter-spacing:.1em;color:#e2c27a}.party-invite,.loot-roll{padding:18px;border:1px solid #6b5938;margin:14px 0;background:#0e1a20}.loot-roll{border-top:2px solid #d88280}.chat-access{position:fixed;bottom:max(14px,env(safe-area-inset-bottom));right:max(18px,env(safe-area-inset-right));z-index:40}.chat-access button{background:#14252a;border-color:#bc9957;min-height:44px;box-shadow:0 7px 25px #000a}.community-chat{position:fixed;right:18px;bottom:70px;width:min(420px,calc(100vw - 24px));max-height:calc(100dvh - 105px);z-index:41;border:1px solid #a28950;border-radius:7px;background:#0d1a22;box-shadow:0 18px 60px #000c;overflow:auto;color:#ddd6bf}.chat-heading{display:flex;gap:15px;align-items:center;justify-content:space-between;padding:15px 18px;background:linear-gradient(90deg,#2d362a,#16232b);border-bottom:1px solid #716445}.chat-heading h2{font:1.5rem Georgia,serif;color:#ecd5a2;margin:5px 0}.chat-heading .eyebrow{font-size:.75rem}.community-chat form{padding:14px 16px}.chat-routing{display:flex;gap:10px}.community-chat label{font-size:.875rem;min-width:0;flex:1;display:block}.community-chat input,.community-chat select,.community-chat textarea{display:block;width:100%;min-width:0;font-size:1rem;color:#eee4cb;background:#08151c;border:1px solid #5c5840;border-radius:3px;min-height:44px;padding:10px;margin-top:5px}.community-chat textarea{resize:vertical;max-height:120px}.chat-messages{height:min(260px,32dvh);min-height:75px;overflow:auto;overscroll-behavior:contain;overflow-wrap:anywhere;border-top:1px solid #3c473b;border-bottom:1px solid #3c473b;margin:13px 0;padding:5px 0}.chat-message{border-bottom:1px solid #293a39;padding:8px 0}.chat-message header{display:flex;gap:7px;align-items:center;flex-wrap:wrap;font-size:.8125rem;color:#a5b2a8}.chat-message time{margin-left:auto}.chat-message p{font-size:.9375rem;line-height:1.6;margin:5px 0;white-space:pre-wrap}.chat-name{color:#e1c58b;min-height:44px;border:0;background:transparent;font-size:.875rem;font-weight:bold;padding:5px;text-align:left}.chat-message .text-button{min-height:44px;font-size:.8125rem}.chat-send{display:flex;gap:10px;align-items:end;margin-top:8px}.chat-send label{flex:1}.chat-send>button{flex-shrink:0;min-height:44px}.chat-item{border:1px solid #706344;background:#202a22;border-radius:4px;margin:8px 0;font-size:.875rem;line-height:1.6}.chat-item summary{cursor:pointer;min-height:44px;padding:11px;color:#e3c385;overflow-wrap:anywhere}.chat-item>div{padding:0 12px 14px}.chat-privacy{padding:0 16px;font-size:.875rem;line-height:1.6;border-top:1px solid #454534}.chat-privacy summary{padding:13px 0;min-height:44px;cursor:pointer}#chatError{font-size:.875rem;color:#e7b99a;min-height:18px;margin:8px 0 0}.chat-empty{font-size:.9375rem;color:#aebdaf;padding:16px}.shell>.topbar nav{overflow-x:auto;scrollbar-width:thin;min-width:0}.shell>.topbar .nav-button{flex-shrink:0}.exp-page button:focus-visible,.exp-page summary:focus-visible,.community-chat button:focus-visible{outline:2px solid #e5ca91;outline-offset:3px}
@media(max-width:1100px){.zone-atlas,.bestiary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.town-layout{grid-template-columns:minmax(0,1fr) 260px;gap:18px}.character-panel{grid-template-columns:minmax(0,1fr)}.character-progression{border-top:1px solid #5d5b40;padding-top:14px}.lesson-banner,.global-error{margin-left:20px;margin-right:20px}.topbar .account-name{display:none}}
@media(max-width:800px){.town-layout{grid-template-columns:minmax(0,1fr)}.town-inventory{position:static;padding-top:0;order:-1}.town-inventory .inventory-panel{max-width:none}.town-inventory .item-grid{grid-template-columns:repeat(auto-fill,minmax(48px,1fr))}.town-inventory .small-note{display:none}.equipment-workspace{grid-template-columns:minmax(0,1fr)}.expedition-roster{grid-template-columns:minmax(0,1fr)}#battleInventory{display:none}}
@media(max-width:640px){.exp-page{padding:15px 12px 95px}.exp-panel{padding:18px}.zone-atlas,.bestiary-grid,.field-lessons ol{grid-template-columns:minmax(0,1fr)}.paper-doll{grid-template-columns:56px minmax(90px,1fr) 56px;gap:6px}.paper-slot .item-tile{width:52px;height:52px;min-height:52px}.paper-doll figure img{height:365px}.paper-slot>span{font-size:.75rem}.paper-doll>div{gap:9px}.character-panel{padding:12px}.exp-page h1{font-size:1.875rem}.exp-page h2{font-size:1.4375rem}.recipe-detail{align-items:start;gap:12px}.recipe-detail>.gear-icon{width:64px;height:64px}.guide-article summary{padding:18px 42px 18px 18px}.guide-article summary h2{font-size:1.3125rem}.guide-article>div{padding:0 18px 20px}.lesson-banner,.global-error{margin:10px 12px}.lesson-banner summary{flex-wrap:wrap;gap:6px 12px}.lesson-banner summary span{width:100%}.lesson-banner summary strong{font-size:1.0625rem}.lesson-banner button{margin-top:6px}.town-services button{flex-basis:30%;font-size:.875rem;padding:9px}.exp-table td,.exp-table th{padding:9px;font-size:.875rem}.community-chat{right:6px;width:calc(100vw - 12px);bottom:68px;max-height:calc(100dvh - 90px)}.chat-messages{height:25dvh}.chat-heading{padding:11px 14px}.item-inspector{padding:18px}.item-detail-title>.gear-icon{width:56px;height:56px}.item-grid{grid-template-columns:repeat(auto-fill,minmax(52px,1fr))}.expedition-roster article{padding:14px;gap:12px}.exp-page .az-inline-form{flex-wrap:wrap}.exp-page .az-inline-form label{width:100%;min-width:0}.battle-inventory-access{justify-content:flex-start;flex-wrap:wrap}}
@media(max-height:500px){.community-chat{top:6px;bottom:6px;max-height:none}.chat-messages{height:90px}.chat-heading .eyebrow{display:none}}
@media(prefers-reduced-motion:reduce){.exp-page *,.community-chat *{scroll-behavior:auto!important}}

.phone-inventory-button{display:none}@media(max-width:800px){.town-inventory{display:none}.phone-inventory-button{display:inline-flex}}
/* All destinations share one compact, horizontally scrollable navigation row. */
.shell>.topbar nav{display:flex;flex:1 0 100%;width:100%;gap:4px;justify-content:flex-start;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
.shell>.topbar .nav-button{flex:1 0 88px;min-height:52px;max-width:none;flex-direction:column;padding:6px 8px;gap:3px}
.shell>.topbar .nav-button span{white-space:nowrap;overflow-wrap:normal;font:.875rem Arial,sans-serif}
.shell>.topbar .nav-button svg{width:20px;height:20px}
@media(max-width:640px){.shell>.topbar{gap:6px}.shell>.topbar .wordmark{width:145px}.shell>.topbar .nav-button{flex:0 0 88px;min-height:52px}}

.mayor-panel{display:flow-root}.mayor-portrait{float:right;width:130px;height:180px;object-fit:contain;margin:0 0 12px 18px;filter:drop-shadow(0 8px 9px #0008)}
@media(max-width:640px){.mayor-portrait{width:90px;height:130px;margin-left:12px}}
/* Relic rarity art and shared comparison/upgrade surfaces. */
.gear-icon.rarity-art{display:inline-block;aspect-ratio:1;width:64px;height:64px;flex:none;background-repeat:no-repeat;background-color:#050606;border-radius:3px;vertical-align:middle}
.item-tile .rarity-art{width:100%;height:100%;max-height:none;filter:none}.item-tile:has(.rarity-art){padding:0;overflow:hidden;border-radius:2px;border-color:var(--rarity)}
.item-tile.rarity-magic{border-color:#8fd653}.item-tile.rarity-rare{border-color:#66b8ff}.item-tile.rarity-epic{border-color:#e8b750}.item-tile.rarity-legendary,.item-tile.rarity-mythic{border-color:#f66b7d}
.item-detail-title>.rarity-art{width:96px;height:96px}.item-tier{color:#fff;font-weight:700}.paper-doll figcaption small{display:block;font:.875rem/1.5 var(--ui);margin-top:6px;color:#e3d7bb}
.gear-affixes li{display:block;margin:10px 0;border-left:2px solid var(--rarity,#80909a);padding:8px 12px;background:#071318}.gear-affixes li small{display:block;color:#bfc9c9;font-size:.875rem;line-height:1.5}.gear-affixes li meter{display:block;width:100%;height:6px;margin-top:7px}.mod-tier{font:700 .75rem var(--ui);padding:3px 5px;border:1px solid #7d8994;border-radius:3px;color:#f0d7a2}
.gear-comparison{display:block;margin:20px 0;padding:14px;background:#071318;border:1px solid #52656a;min-width:0}.gear-comparison h3{font-size:1.125rem;margin-top:0}.compare-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.compare-items>div{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:8px;background:#101d24}.compare-items small{color:#ccd8d8;font-size:.75rem}.compare-items b{font-size:.875rem;line-height:1.4;overflow-wrap:anywhere}.compare-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:.875rem;margin-top:14px;font-variant-numeric:tabular-nums}.compare-table th,.compare-table td{padding:9px 4px;border-bottom:1px solid #38474b;text-align:right;white-space:normal;overflow-wrap:anywhere}.compare-table th:first-child{width:40%;text-align:left;font-weight:400}.compare-table thead th:first-child{font-weight:700}.compare-table thead th{color:#ead6a7}.gear-gain{color:#9cddac}.gear-loss{color:#ffacac}
.enhance-hero{display:flex;align-items:center;gap:20px;margin:24px 0}.enhance-hero .rarity-art{width:128px;height:128px;box-shadow:0 0 24px #0008}.enhance-hero strong{font:1.75rem Georgia,serif;color:var(--rarity)}.enhance-result{padding:14px;background:#0a171d;border:1px solid currentColor;border-radius:4px}.enhance-odds{padding:16px;border:1px solid #86724e;background:#101d22}.enhance-odds strong{font:1.5rem Georgia,serif;color:#e8d199}.enhance-odds meter{display:block;width:100%;height:15px;margin:10px 0}.enhance-cost{display:flex;flex-wrap:wrap;gap:10px 22px}.random-pool details{padding:10px;border:1px solid #465356}.random-pool summary{min-height:44px;cursor:pointer}.gear-enchant-form select{width:100%;min-width:0;font-size:1rem;min-height:44px}
@media(max-width:430px){.item-detail-title>.rarity-art{width:68px;height:68px}.gear-comparison{padding:8px}.compare-items{gap:7px}.compare-table{font-size:.8125rem}.compare-table th:first-child{width:37%}.enhance-hero{gap:12px}.enhance-hero .rarity-art{width:88px;height:88px}.enhance-hero h3{font-size:1.125rem}}

.attention-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.1875rem;height:1.1875rem;padding:0 5px;border-radius:20px;background:#b62f39;color:#fff;font:700 .6875rem/1 var(--ui);vertical-align:middle;margin-left:5px;flex:none;border:1px solid #df6870}.nav-button{position:relative}.nav-button>.attention-badge{position:absolute;right:8px;top:6px}.hud-events{min-height:44px;background:#1c252a;border:1px solid #8c794d;color:#f1dfba;padding:8px;font-size:.875rem}.item-new-mark{position:absolute;bottom:2px;left:2px;z-index:2;background:#e4bf6e;color:#1b1509;border:1px solid #fbe3ac;border-radius:3px;box-shadow:0 0 0 1px #0009;font:800 .5rem/1 system-ui;letter-spacing:.03em;padding:1px 2px;writing-mode:horizontal-tb;text-orientation:mixed;pointer-events:none}.item-tile:is(.rarity-charm,.rarity-rune) .item-new-mark{bottom:auto;top:2px;writing-mode:horizontal-tb;padding:0 2px;line-height:1.35}.event-row{display:flex;align-items:start;justify-content:space-between;gap:10px;text-align:left;width:100%;min-height:52px;padding:12px;border:0;border-bottom:1px solid #4d5149;background:#101a20;color:#e9dec7}.event-row span{overflow-wrap:anywhere}.event-row small{white-space:nowrap;color:#bac6bc}.event-row.unread{border-left:3px solid #dfb773}.event-row.read{opacity:.7}.loot-flight{position:fixed;z-index:60;pointer-events:none;width:48px;height:48px;filter:drop-shadow(0 0 9px var(--rarity));will-change:transform,opacity}.loot-flight>.rarity-art{width:48px;height:48px}.loot-flight small{position:absolute;top:52px;left:50%;transform:translateX(-50%);font:700 .75rem/1.3 var(--ui);color:#fff3cf;text-shadow:0 2px 3px #000;background:#081014d9;border-radius:3px;padding:2px 5px;white-space:nowrap}
@media(max-width:600px){.nav-button>.attention-badge{right:4px;top:2px}.event-row{flex-direction:column}.hud-events{padding:7px}}

.enchant-result{padding:12px;margin:16px 0;background:#101b20;border:1px solid #706344}.enchant-result h3{font-size:1.125rem}.compare-scroll{max-width:100%;overflow:auto}.gear-compare-table{table-layout:fixed;width:100%;border-collapse:collapse;font-size:.875rem;line-height:1.5}.gear-compare-table th,.gear-compare-table td{text-align:left;vertical-align:top;overflow-wrap:anywhere;padding:10px 7px;border-bottom:1px solid #344248}.gear-compare-table th{color:#ebd6a5}.enchant-result .small-note{font-size:.8125rem}.auction-entry>.gear-icon{width:72px;height:72px}

.item-grid>p{grid-column:1 / -1;min-width:0}.item-detail-title>div{min-width:0}.item-detail-title h2{overflow-wrap:anywhere}

.compare-base-heading{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;margin-top:14px;padding-top:12px;border-top:2px solid #b9934e}.compare-base-heading strong{color:#edcf8d}.compare-base-heading span{font-size:.75rem;color:#b9c8ce}.compare-table caption{text-align:left;font-size:.75rem;color:#b9c8ce;padding:4px 0}.compare-enhanced{margin-top:12px;border-top:1px solid #8b7343;padding-top:8px}.compare-enhanced summary{min-height:44px;display:list-item;align-content:center;color:#edcf8d;cursor:pointer}

/* Equipped-stat limits: readable without opening tooltips, including phones. */
.character-stats .stat-effective,.character-stats .stat-limit-label,.character-stats .stat-limit-source{display:block}.character-stats .stat-limit-label{font-size:.6875rem;color:#dfc68f;margin-top:3px}.character-stats .stat-limit-source{font-size:.625rem;color:#aabbce;line-height:1.4;margin-top:3px}.character-stats .stat-limit-source b{color:#edb788;font-weight:500}.stat-limit-track{display:block;height:4px;background:#0a111b;border:1px solid #776643;border-radius:2px;overflow:hidden;margin-top:4px}.stat-limit-track i{display:block;height:100%;background:linear-gradient(90deg,#8c6c2d,#e8c772)}.character-limit-details{border-top:2px solid #92733c;margin-top:18px;padding-top:12px}.character-limit-details>summary{min-height:44px;cursor:pointer;color:#e7ce99}.character-limit-details p{color:#b9c9d6;font-size:.75rem}.character-stats .character-stat dd{min-width:0;overflow-wrap:anywhere}.character-stats .character-stat dt{min-width:0}

.recovery-row>button{flex-shrink:0;white-space:nowrap}.recovery-row>span{min-width:0;overflow-wrap:anywhere}
.recovery-pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin:10px 0;padding:8px 10px;border:1px solid var(--exp-border);border-radius:6px;background:#0d171c}.recovery-pager>span{flex:1 1 12em;min-width:0;text-align:center;color:var(--exp-gold);font-size:.88rem;overflow-wrap:anywhere}.recovery-pager>button{flex-shrink:0}.recovery-loading{color:var(--exp-gold)}.salvage-card .salvage-area-hint{margin:8px 0 0}

@media(max-width:600px){.recovery-pager>span{order:-1;flex-basis:100%}.recovery-pager>button{flex:1 1 0}.recovery-row{flex-wrap:wrap}.recovery-row>span{flex-basis:100%}.recovery-row>button{white-space:normal}}
/* Hover card (2026-10-08): name line, wear restriction and stat changes only; the click opens the full card. */
.item-hover .item-hover-card .ih-title{margin-bottom:8px}.item-hover .item-hover-card .item-kind{margin:2px 0;font-size:.85rem}
.item-hover .ih-blocked{margin:6px 0;padding:4px 8px;border-left:3px solid #c0614f;color:#f0b7a8;font-size:.9rem}
.item-hover .ih-head{margin:10px 0 4px;color:#e2d1aa;font-size:.9rem}
.item-hover .ih-changes{list-style:none;margin:0;padding:0;display:grid;gap:2px;font-size:.95rem}
.item-hover .ih-changes .ih-more,.item-hover .ih-same,.item-hover .ih-foot{color:#a9a08c;font-size:.82rem}
.item-hover .ih-foot{margin:10px 0 0}
/* Simpler screens #12 (IRP_UI_PLAIN_VERSION): the one summary line at the top of an item card. One line on wide screens, two at most on a 390px phone. */
.item-verdict{margin:6px 0 8px;padding:4px 8px;border-left:3px solid #8a7a55;font-size:.9rem;line-height:1.35;color:#e2d1aa;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow-wrap:anywhere}
.item-verdict strong{color:#f2e3bd}.item-verdict-upgrade{border-left-color:#6fbf86}.item-verdict-upgrade strong{color:#9cddac}.item-verdict-worse{border-left-color:#c0614f}.item-verdict-worse strong{color:#ffacac}.item-verdict-cant-wear{border-left-color:#c0614f}.item-verdict-more{color:#a9a08c}
@media (max-width:359px){.item-verdict{-webkit-line-clamp:3;line-clamp:3;font-size:.85rem}}

/* /constellation.css */
/* Azdom's navigation, civic progression and connected talent map. */
:root{--copper:#c69a5a;--ink:#0b1119;--muted-ink:#131e2b;--readable:#dce3e8}
.exp-page{color:var(--readable);font-size:1rem;line-height:1.55}.exp-page p{line-height:1.55}.exp-page h1,.exp-page h2,.exp-page h3{line-height:1.2}.exp-page h1{font-size:clamp(1.8rem,3.5vw,2.6rem)}.exp-page .eyebrow{font-size:.75rem;letter-spacing:.13em}.small-note{font-size:.875rem!important}.exp-page button,.exp-page select{min-height:44px}.exp-heading{margin-bottom:20px}
.topbar{display:grid;grid-template-columns:135px minmax(0,1fr) auto;gap:14px;padding:10px 20px}.topbar nav{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr));min-width:0;width:100%;gap:3px;overflow:visible!important}.topbar .nav-button{min-width:0;min-height:52px;padding:8px;justify-content:center;font-size:.875rem;gap:7px}.topbar .nav-button .icon{width:20px;height:20px}.topbar .painted-wordmark img{max-width:130px}.nav-button.active{box-shadow:inset 0 -2px var(--copper);background:linear-gradient(0deg,#c69a5a19,transparent)}
.section-tabs{display:flex;gap:6px;overflow-x:auto;max-width:1500px;margin:0 auto;padding:10px 24px 0;scrollbar-width:thin;border-bottom:1px solid #bfa16b36}.section-tab{min-height:48px;flex:0 0 auto;background:none;color:#aab7c5;border:0;border-bottom:2px solid transparent;border-radius:0;padding:10px 18px;font-size:.9375rem}.section-tab.selected{border-color:#ddb171;color:#ffe0a6}.section-tab:hover{color:white;background:#ffffff08}.section-tab:focus-visible,.tree-node:focus-visible{outline:3px solid #8fdbff;outline-offset:4px}
.quest-ticker{max-width:1452px;margin:8px auto 0;padding:0 24px}.quest-ticker button{display:flex;align-items:center;gap:12px;min-height:44px;background:transparent;color:#b6c2cc;border:0;font-size:.875rem;text-align:left}.quest-ticker strong{color:#e4bd7e}.quest-ticker progress{max-width:120px;height:4px}
.town-panorama{min-height:260px;display:flex;align-items:flex-end;background:linear-gradient(0deg,#0b1119 4%,#0b111944 65%),url('/assets/story/azdom-town-square.webp') center 42%/cover;border-radius:10px 10px 0 0;padding:28px}.town-panorama h1{margin:8px 0 10px;color:#fff0d4}.town-panorama p{margin:0;color:#d3dbe0}.renown-progress{display:grid;grid-template-columns:auto minmax(0,1fr);gap:28px;align-items:center;padding:24px 28px;background:#152231;border-bottom:1px solid #d0a05c4d}.renown-number{display:flex;flex-direction:column;min-width:150px}.renown-number strong{font:2rem Georgia,serif;color:#ffdb98}.renown-number span{font-size:.875rem;color:#a6b5c5}.renown-progress p{margin:0 0 8px}.renown-progress p span{display:block;color:#b1bdc6;font-size:.875rem}.renown-progress progress{width:100%;height:9px;accent-color:#d2a159}.mayor-conversation{display:grid;grid-template-columns:150px minmax(0,1fr);align-items:center;gap:24px;padding:28px 12px}.mayor-conversation img{object-fit:contain;max-height:240px;width:100%;height:auto;filter:drop-shadow(0 10px 18px #0008)}.mayor-conversation h2{font:1.6rem Georgia,serif;color:#f0d9b7}.town-roadmap{padding:20px 12px}.town-roadmap ol{list-style:none;padding:16px 0}.town-roadmap li{display:flex;gap:18px;position:relative;padding:0 0 28px}.town-roadmap li:not(:last-child):before{content:'';position:absolute;left:21px;top:42px;bottom:0;border-left:1px solid #65707b66}.renown-rank{display:grid;place-items:center;flex:0 0 44px;height:44px;border:1px solid #7c858c;border-radius:50%;color:#b6c3ce;font:1.2rem Georgia,serif}.unlocked .renown-rank{color:#ffe3a9;border-color:#d9ab60;background:#8b642924}.next .renown-rank{border-color:#98d7e6;color:#adebfa;box-shadow:0 0 0 4px #83c6da12}.town-roadmap h3{margin:5px 0;color:#e8d4b2}.town-roadmap p{margin:0;color:#b4c1cc}.town-roadmap .locked{opacity:.77}.town-layout>.phone-inventory-button{grid-column:1/-1;justify-self:start}.workshop-header{padding:0 0 20px;border-bottom:1px solid #ffffff12}.locked-recipes{margin:20px 0}.locked-recipes summary{min-height:44px;cursor:pointer;color:#dfbd80}.locked-recipes li{margin:12px 0}.recipe-detail{padding:20px 0!important;border:0!important;background:transparent!important}
.current-lesson{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:24px;border-left:3px solid #c69a5a;background:linear-gradient(90deg,#b8883212,transparent);margin:18px 0 28px}.current-lesson h2{font-size:1.25rem;margin:6px 0 12px;color:#f2dfb9}.current-lesson p{margin:0;max-width:65ch}.lesson-action{flex:0 0 200px}.lesson-action button{width:100%}.quest-focus{padding:32px;background:linear-gradient(90deg,#0a1119f5 30%,#0a1119a8),var(--quest-art) center/cover;border-top:1px solid #d5ad6666;border-bottom:1px solid #d5ad6633;min-height:240px}.quest-focus>div{max-width:640px}.quest-focus h2{font:1.8rem Georgia,serif;color:#ffdf9f;margin:14px 0}.quest-count{display:flex;flex-direction:column;gap:10px;color:#f1dcc3}.quest-count progress{height:7px;max-width:500px;accent-color:#d1a161}.quest-reward{color:#d2bf8f}.quest-records{margin:24px 0;padding:16px 0;border-block:1px solid #d5ad662b}.quest-records>summary{font:1.15rem Georgia,serif;color:#f0d5a6;min-height:44px;cursor:pointer;padding:8px}.quest-records>article{display:flex;gap:18px;padding:20px 8px;border-bottom:1px solid #ffffff0b}.quest-records>article h3,.quest-records>article p{margin:0 0 8px}.completion-mark{color:#a2d8a4}.realm-announcement{display:flex;gap:18px;align-items:center;background:linear-gradient(100deg,#554122,#243340);border-block:1px solid #d8af6b;padding:14px 24px;color:#ffe6b3}.realm-announcement>span{font-size:2rem}.realm-announcement>div{flex:1;min-width:0}.realm-announcement p{margin:5px 0 0}.realm-announcement strong{font-size:.875rem;letter-spacing:.07em}.chat-message.system{border-left:2px solid #d1a363;background:#cea8610b}.chat-message.system strong{color:#efc582}.talent-gain{color:#a9cced}.character-panel{border:0!important;background:radial-gradient(ellipse at 30% 45%,#56798722,transparent 60%),#0d1720!important}.character-panel .paper-doll{background:none!important}.gear-attributes{background:#121d27!important;border:0!important}.gear-attribute-grid article{background:transparent!important;border-width:0 0 1px!important;border-color:#ffffff16!important}.gear-derived{gap:0!important}.gear-derived>div{background:transparent!important;border-bottom:1px solid #ffffff12!important;padding:14px!important}
.tree-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:14px}.tree-heading p{margin:0}.tree-heading strong{color:#ffda9c}.tree-legend{display:flex;align-items:center;gap:8px;font-size:.875rem;color:#c3cfda}.tree-legend i{width:9px;height:9px;border:1px solid #687584;border-radius:50%;background:#162231}.tree-legend i.allocated{border-color:#eec77e;background:#b38940}.tree-legend i.available{border-color:#93d7f5;box-shadow:0 0 5px #59b8e280}.tree-workspace{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:20px}.tree-map{min-width:0;border:1px solid #6d82903b;border-radius:10px;overflow:hidden;background:#0a111b}.tree-toolbar{display:flex;align-items:center;gap:8px;padding:10px;background:#14212c;flex-wrap:wrap}.tree-toolbar button{min-width:44px;padding:8px 12px}.tree-toolbar select{width:auto;min-width:0;flex:1;max-width:180px;font-size:.875rem}.tree-toolbar>span{font-size:.875rem;min-width:40px;text-align:center}.tree-viewport{height:min(67vh,640px);min-height:360px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;position:relative;cursor:grab;background:radial-gradient(ellipse at center,#1a314a45,transparent 70%),#070d16}.tree-canvas{position:relative;isolation:isolate}.tree-links{position:absolute;inset:0;overflow:visible;pointer-events:none}.tree-links line{stroke:#374959;stroke-width:2}.tree-links line.allocated{stroke:#dcaf65;stroke-width:3;filter:drop-shadow(0 0 3px #bd8b38)}.tree-center{position:absolute;transform:translate(-50%,-50%);font:1.5rem Georgia,serif;letter-spacing:.2em;color:#647787;text-align:center;pointer-events:none}.tree-center small{display:block;font: .75rem sans-serif;letter-spacing:.08em;margin-top:6px}.tree-node{position:absolute;transform:translate(-50%,-50%);width:54px;height:54px;min-width:54px;min-height:54px!important;padding:0;display:grid;place-items:center;overflow:visible;border-radius:50%;border:2px solid #43515f;background:radial-gradient(circle at 35% 25%,#273c50,#111b29 72%);color:#b6c9d9;z-index:2;cursor:pointer;box-shadow:0 3px 8px #0008;font-size:.875rem}.tree-node.root{width:74px;height:74px;border:3px double var(--branch);font:1.75rem Georgia,serif;color:var(--branch)}.tree-node.notable,.tree-node.ability{width:64px;height:64px;border:3px double #59687b}.tree-node.ability .node-glyph{font-size:1.7rem}.tree-node.available{border-color:#8ecfe7;box-shadow:0 0 14px #77c3e326}.tree-node.allocated{border-color:#f2c879;color:#ffe5ab;background:radial-gradient(circle,#614620,#1e2022);box-shadow:0 0 16px #d99d393b}.tree-node.foreign{filter:saturate(.25);opacity:.6}.tree-node.selected{outline:2px solid white;outline-offset:5px;z-index:5}.tree-node .node-label{position:absolute;top:100%;margin-top:7px;left:50%;transform:translateX(-50%);font-family:Georgia,serif;font-size:.8125rem;line-height:1.2;width:116px;text-align:center;color:#d4dce3;text-shadow:0 2px 4px #000,0 0 8px #000;pointer-events:none}.tree-node.travel .node-label{font-family:inherit;font-size:.75rem;width:74px}.node-inspector{background:linear-gradient(140deg,#1d2b3a,#101923);padding:24px 20px;border-top:2px solid #d8ad67;border-radius:5px;min-width:0}.node-inspector h2{font:1.65rem Georgia,serif;color:#ffe0a4;margin:10px 0 18px}.node-cost{color:#f0d195}.node-state{color:#a8c9dd}.node-inspector>button{width:100%;margin:8px 0}.node-rules{border-top:1px solid #bfa16b30;margin-top:24px;padding-top:14px;font-size:.875rem;color:#a9b8c7}.node-rules h3{font:1rem Georgia,serif;color:#d7c3a0}.node-inspector details{font-size:.875rem;border-top:1px solid #ffffff14;padding-top:12px}.node-inspector summary{min-height:44px;padding:10px 0;cursor:pointer}.tree-help{padding:12px;margin:0;font-size:.875rem;color:#8fa6b9}.ascension-paths{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px;padding:20px}.ascension-paths article{border-top:1px solid #fff1;padding:15px 0}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:1050px){.topbar{grid-template-columns:110px minmax(0,1fr) auto;gap:8px;padding-inline:12px}.topbar .painted-wordmark img{max-width:105px}.account-name{display:none}.tree-workspace{grid-template-columns:minmax(0,1fr) 260px}.town-layout{grid-template-columns:minmax(0,1fr)!important}.town-inventory{display:none!important}.phone-inventory-button{display:inline-flex!important}}
@media(max-width:760px){.topbar{grid-template-columns:minmax(0,1fr) auto;gap:4px}.topbar nav{grid-column:1/-1;grid-row:2}.topbar .nav-button{flex-direction:column;gap:3px;font-size:.8125rem;padding:5px 2px;min-height:54px}.topbar .nav-button .icon{height:18px;width:18px}.topbar .account-block{gap:4px}.topbar .icon-button{width:44px;height:44px}.section-tabs{padding:4px 12px 0;gap:0}.section-tab{padding:8px 12px;font-size:.875rem}.quest-ticker{padding-inline:12px}.quest-ticker button{gap:8px;flex-wrap:wrap}.quest-ticker progress{display:none}.exp-page{padding:20px 14px!important}.tree-workspace{grid-template-columns:minmax(0,1fr)}.tree-heading{align-items:flex-start;flex-direction:column;gap:10px}.tree-viewport{height:55vh;min-height:340px}.node-inspector{padding:20px}.tree-help{font-size:.8125rem}.town-panorama{min-height:205px;padding:22px 18px}.renown-progress{grid-template-columns:minmax(0,1fr);gap:16px;padding:22px 18px}.renown-number{flex-direction:row;align-items:center;gap:12px;min-width:0}.renown-number strong{font-size:1.8rem}.mayor-conversation{grid-template-columns:80px minmax(0,1fr);gap:12px;padding:24px 0}.mayor-conversation h2{font-size:1.3rem}.mayor-conversation img{align-self:start}.current-lesson{flex-direction:column;align-items:stretch;padding:20px 16px;gap:16px}.lesson-action{flex:auto}.quest-focus{padding:24px 18px}.quest-focus h2{font-size:1.5rem}.town-roadmap{padding-inline:0}.realm-announcement{padding:12px;gap:10px;flex-wrap:wrap}.realm-announcement>span{display:none}.realm-announcement>div{flex-basis:100%}.ascension-paths{grid-template-columns:1fr;padding:12px}.gear-attribute-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.gear-attribute-grid article{padding:14px 8px!important}.gear-attribute-grid article h3{font-size:1rem}.gear-attribute-grid article p{font-size:.875rem}}
@media(max-width:350px){.topbar .nav-button{font-size:.75rem}.section-tab{padding-inline:10px}.tree-toolbar{gap:5px}.tree-toolbar select{max-width:105px}.tree-toolbar button{padding-inline:9px}.gear-attribute-grid{grid-template-columns:1fr!important}}
@media(prefers-reduced-motion:reduce){.tree-viewport{scroll-behavior:auto}.tree-node{transition:none}}

.tree-node.travel .node-label{display:none}.tree-node.travel{font-size:.75rem}.tree-links line{stroke:#7793a7;stroke-width:2;opacity:.8}.tree-links line.allocated{stroke:#e4be79;opacity:1}.topbar>.account-block{grid-column:3;grid-row:1}.topbar>nav{grid-column:2;grid-row:1}.tree-links{max-width:none!important;max-height:none!important;width:auto!important;height:auto!important}
@media(max-width:760px){.topbar>.account-block{grid-column:2;grid-row:1}.topbar>nav{grid-column:1/-1;grid-row:2}}
.tree-node.keystone{width:76px;height:76px;border:3px double #9e8b72;border-radius:30%;color:#d4c2a3}.tree-node.keystone.allocated{border-color:#f2c879}
.account-name b{color:#ecdcc2}.topbar .nav-button span{overflow-wrap:anywhere;line-height:1.15}

.topbar>.wordmark{grid-column:1;grid-row:1;width:100%;min-width:0;max-width:135px;overflow:hidden;pointer-events:none}

/* /clerk-auth.css */
.clerk-entry{width:min(100%,420px);box-sizing:border-box;text-align:left}
.clerk-entry h2{font-size:clamp(1.8rem,5vw,2.4rem);margin:12px 0 18px;color:#f3ddb0}
.clerk-entry button,.clerk-entry input{min-height:44px;font-size:1rem}
.clerk-entry button.full{margin-top:14px;white-space:normal}
.clerk-entry input{box-sizing:border-box;width:100%;min-width:0}
.clerk-entry p{line-height:1.55;overflow-wrap:anywhere}
.clerk-entry label{display:grid;gap:9px;margin-top:20px}
.clerk-benefits{display:grid;gap:12px;padding:24px 0 4px;color:#c8c3b4;font-size:.9rem}
.clerk-benefits span::before{content:'◆';color:#b79858;font-size:.65rem;margin-right:10px}
.clerk-identity{display:flex;align-items:center;gap:12px;color:#b7d3b4;margin:14px 0}
[data-clerk-user]{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;flex-shrink:0}
[data-clerk-user] button{min-width:44px;min-height:44px}
.cl-modalContent{max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto}
@media(max-width:480px){.clerk-entry{padding:24px 18px}.clerk-entry h2{margin-top:8px}.account-block:has([data-clerk-user]){gap:4px}.account-block:has([data-clerk-user]) .account-name{max-width:110px}}

/* Official stable Clerk classes: readable form controls on touch screens. */
.cl-formFieldInput{font-size:max(1rem,1rem);min-height:44px}
.cl-formButtonPrimary,.cl-socialButtonsBlockButton,.cl-socialButtonsIconButton,.cl-modalCloseButton,.cl-formFieldInputShowPasswordButton{min-height:44px;min-width:44px}

/* /release-notice.css */
#release-notice[hidden]{display:none}
#release-notice{position:sticky;top:0;z-index:150;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem 1rem;padding:.65rem max(1rem,env(safe-area-inset-right)) .65rem max(1rem,env(safe-area-inset-left));padding-top:max(.65rem,env(safe-area-inset-top));background:#241b0e;border-bottom:2px solid #b5914e;color:#fff0cb;box-shadow:0 3px 12px #0008;font-size:1rem}
#release-notice p{flex:0 1 auto;margin:0;line-height:1.5;overflow-wrap:anywhere}
#release-notice button{flex:0 0 auto;max-width:100%;min-height:44px;padding:.6rem 1rem;border:1px solid #e6c98f;border-radius:4px;background:linear-gradient(180deg,#d9b873,#c9a468 45%,#8f6f3c);box-shadow:inset 0 1px 0 #fff2c95c,inset 0 0 0 2px #8a682f66;color:#1b1509;font-size:1rem;font-weight:700;white-space:normal}
#release-notice button:focus-visible{outline:3px solid #fff;outline-offset:3px}
@media(max-width:430px){#release-notice{justify-content:flex-start}#release-notice p{flex-basis:100%}}

/* /evermarch.css */
/* A scalable wordmark keeps the new name readable on every game screen. */
.wordmark.evermarch-wordmark{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;max-width:100%;width:100%;padding:0;background:none;border:0;box-shadow:none;clip-path:none;color:#ebcb87;text-align:center}
.evermarch-wordmark .brand-name{display:block;max-width:100%;font-family:Georgia,'Times New Roman',serif;font-size:clamp(.85rem,1.4vw,1.3rem);font-weight:normal;line-height:1.2;letter-spacing:.015em;text-shadow:0 2px 3px #000}
.evermarch-wordmark .brand-tagline{display:none}
.wordmark.large.evermarch-wordmark{width:min(650px,100%);margin-inline:auto}
.wordmark.large.evermarch-wordmark .brand-name{font-size:clamp(2.2rem,5.5vw,5rem);letter-spacing:.035em}
.wordmark.large.evermarch-wordmark .brand-tagline{display:block;margin-top:.75rem;font-size:clamp(.65rem,1.1vw,.95rem);line-height:1.5;letter-spacing:.16em;color:#ead9b4}

/* /entry.css */
/* The approved gateway painting with responsive, real account controls. */
.auth-page.evermarch-entry{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr auto;min-height:100vh;min-height:100svh;overflow:clip;isolation:isolate;background:#172431;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
.evermarch-entry::after{display:none}
.entry-world{position:absolute;inset:0;z-index:-2;pointer-events:none}
.entry-world picture{display:contents}.entry-world img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}/* Phones in portrait get gateway-v1-portrait.webp: columns 580-1286 of the painting at full resolution, cut so the 60% position below shows the same view. */
.entry-world::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#060e1b40,transparent 32%,transparent 66%,#060c1499)}
.entry-brand{text-align:center;min-width:0;padding:clamp(1.25rem,3.5vh,3rem) 1rem 0;filter:drop-shadow(0 3px 3px #080e18)}
.entry-crest{display:flex;align-items:center;justify-content:center;gap:1rem;color:#dfbb74;width:min(30rem,70%);margin:0 auto .125rem}
.entry-crest::before,.entry-crest::after{content:"";height:1px;flex:1;background:linear-gradient(90deg,transparent,#edcd89)}
.entry-crest::after{transform:scaleX(-1)}
.entry-crest svg{display:block;width:clamp(3rem,7vh,5.5rem);height:clamp(3rem,7vh,5.5rem);flex-shrink:0;overflow:visible}
.entry-brand h1{margin:0;color:#edcb83;font:normal clamp(2rem,7.4vw,7.5rem)/1.15 Georgia,'Times New Roman',serif;letter-spacing:.025em;overflow-wrap:anywhere}
@supports (background-clip:text){.entry-brand h1{background:linear-gradient(#fff1c4 7%,#e6bd6b 34%,#a87634 51%,#f7df9e 61%,#d8aa5e 85%);background-clip:text;-webkit-background-clip:text;color:transparent}}
.entry-tagline{display:flex;align-items:center;justify-content:center;gap:1rem;margin:.6rem auto 0;max-width:34rem;color:#f1dfb7;font:normal clamp(.7rem,1.2vw,1.15rem)/1.6 Georgia,serif;letter-spacing:.2em}
.entry-tagline::before,.entry-tagline::after{content:"";width:3rem;min-width:0;height:1px;background:linear-gradient(90deg,transparent,#d0a966);flex-shrink:1}
.entry-tagline::after{transform:scaleX(-1)}
.evermarch-entry .auth-entry{width:100%;min-width:0;display:flex;align-items:flex-end;justify-content:center;padding:clamp(3rem,14vh,10rem) 1rem clamp(1rem,4vh,3rem)}
.evermarch-entry .auth-form{width:min(26rem,100%);max-width:26rem;margin:0;padding:1.4rem clamp(1rem,3vw,2.5rem) 1.5rem;background:linear-gradient(145deg,#182431ef,#080f18f5);border:1px solid #c89f56;box-shadow:inset 0 0 0 3px #101923,inset 0 0 0 4px #6b5738,0 12px 40px #02081088}
.evermarch-entry .auth-form h2{font:normal 1.5rem/1.35 Georgia,serif;color:#f2e3c1;margin:.1rem 0 1.1rem;padding:0;border:0;overflow-wrap:anywhere}
.evermarch-entry .auth-form .frame-gem{display:none}
.evermarch-entry .auth-form>.eyebrow{font-size:.75rem}
.evermarch-entry .auth-form button{min-height:48px;height:auto;white-space:normal;overflow-wrap:anywhere}
.evermarch-entry .auth-form button.full{margin-top:.75rem}
.evermarch-entry .auth-form .red-button{font:normal 1.3rem/1.4 Georgia,serif;letter-spacing:.025em;padding:.6rem 1rem;border-color:#e6c98f;color:#1b1509;text-shadow:0 1px 0 #fff2c966;background:linear-gradient(180deg,#d9b873,#c9a468 45%,#8f6f3c);box-shadow:inset 0 1px 0 #fff2c95c,inset 0 0 0 2px #8a682f66,0 2px 8px #0008}
.evermarch-entry .auth-form .secondary{font:normal 1.05rem/1.4 Georgia,serif;padding:.5rem 1rem;border-color:#b6955c;background:linear-gradient(#1c2a36,#0b131c);box-shadow:inset 0 0 0 2px #101922}
.evermarch-entry .auth-form input{min-height:48px;font-size:1rem;height:auto}
.evermarch-entry .auth-form input[type=checkbox]{min-height:1.25rem;height:1.25rem}
.evermarch-entry .auth-form label{margin:.75rem 0}
.evermarch-entry .auth-form .inline-error{font-size:.875rem;margin-bottom:0}
.evermarch-entry .entry-welcome button:first-of-type{margin-top:0}
.entry-footer{display:flex;justify-content:flex-end;align-items:center;gap:1rem;flex-wrap:wrap;padding:.25rem clamp(1rem,2.5vw,2.5rem) .75rem;color:#e4d6ba}
.entry-footer button{border:0;background:#07111c55;font:normal .95rem/1.5 Georgia,serif;min-height:44px;padding:.5rem .8rem;border-radius:2px;text-shadow:0 1px 3px #000}
.entry-footer button:focus-visible,.evermarch-entry button:focus-visible{outline:2px solid #ffe3a6;outline-offset:4px}
.entry-footer span{height:1rem;width:1px;background:#e2c69077}
.entry-patch-notes{width:min(38rem,100%);max-height:calc(100vh - 2rem);max-height:calc(100dvh - 2rem);overflow:auto;line-height:1.6;overflow-wrap:anywhere}
.entry-patch-notes h3{color:#e8c88d;font-size:1.15rem;margin:1.25rem 0 .5rem}
.entry-patch-notes ul{padding-left:1.25rem}
.entry-patch-notes li+li{margin-top:.7rem}
.entry-patch-notes>button{min-height:44px}
@media(max-width:600px){
 .entry-world img{object-position:60% center}
 .entry-brand{padding-top:1.6rem}
 .entry-brand h1{font-size:clamp(1.9rem,9.8vw,3.7rem)}
 .entry-crest{width:62%;margin-bottom:.6rem}
 .entry-tagline{letter-spacing:.14em;gap:.5rem;font-size:.7rem}
 .entry-tagline::before,.entry-tagline::after{width:1rem}
 .evermarch-entry .auth-entry{padding-top:1.5rem;padding-bottom:1.5rem}
 .entry-footer{justify-content:center;padding-bottom:1rem;gap:.5rem}
}
@media(max-height:540px) and (min-width:601px){
 .entry-brand{padding-top:1rem}
 .entry-crest svg{width:2.5rem;height:2.5rem}
 .entry-brand h1{font-size:clamp(2.25rem,6vw,4rem)}
 .entry-tagline{font-size:.7rem;margin-top:.25rem}
 .evermarch-entry .auth-entry{padding-top:1.5rem;padding-bottom:.75rem}
}

/* /studio-brand.css */
/* Clickbait Studios: a short load splash and a small studio credit. */
.studio-splash{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left));background:#000;cursor:pointer;opacity:1;transition:opacity .35s ease;-webkit-tap-highlight-color:transparent}
.studio-splash img{display:block;width:min(36rem,78vw);height:auto;max-height:70vh;object-fit:contain;opacity:0}
.studio-splash.ready img{opacity:1;animation:studio-splash-in .5s ease-out both}
.studio-splash.leaving{opacity:0;pointer-events:none}
@keyframes studio-splash-in{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.studio-splash{transition:none}.studio-splash.ready img{animation:none}}
.studio-credit{display:flex;align-items:center;margin:0 auto 0 0;line-height:0}
.studio-credit img{display:block;width:10rem;height:auto}
.entry-footer .studio-credit img{padding:.2rem .4rem;border-radius:2px;background:#07111c99}
.entry-footer .studio-credit{min-height:44px}
@media(max-width:600px){.entry-footer .studio-credit{flex-basis:100%;justify-content:center;margin:0;min-height:0;order:1}}
.studio-footer{display:flex;justify-content:center;padding:1.5rem 1rem calc(1.5rem + env(safe-area-inset-bottom))}
.studio-footer .studio-credit{margin:0}

/* /realm-theme.css */
/* Evermarch's gateway palette continues through the playable realm. */
:root{color-scheme:dark;--realm-ink:#e8dfcc;--realm-muted:#b9b5a9;--realm-gold:#d6b477;--realm-edge:#76613d;--realm-panel:#142026}
body{background:#080f13;color:var(--realm-ink);font-family:system-ui,-apple-system,'Segoe UI',sans-serif;line-height:1.5}
.shell{min-height:100dvh;background:radial-gradient(ellipse at 14% 0%,#31455065,transparent 55%),radial-gradient(ellipse at 100% 60%,#5e3c1b25,transparent 65%),#0b1419}
.shell h1,.shell h2,.shell h3,.modal-backdrop h2,.modal-backdrop h3{font-family:Georgia,'Times New Roman',serif;color:#e4c68e;font-weight:500;letter-spacing:.025em;text-wrap:balance}
.shell h1{font-size:clamp(1.65rem,2.8vw,2.65rem);line-height:1.15}.shell h2{line-height:1.3}.shell p{line-height:1.65}
.shell .eyebrow,.shell .micro{letter-spacing:.14em;font-size:.75rem;color:#c5ac7e}
.shell .small-note,.shell .subtle,.shell .chapter-note{color:var(--realm-muted)}
.shell .ornate,.shell .exp-panel,.shell .inventory-panel,.shell .current-lesson,.shell .quest-records{background:linear-gradient(135deg,#25313880,transparent 65%),#121e24;border:1px solid #695838;border-radius:9px;box-shadow:inset 0 0 0 3px #101a20,inset 0 0 0 4px #83704a38,0 7px 20px #0004;color:var(--realm-ink)}
.shell .exp-panel,.shell .inventory-panel{padding:clamp(14px,1.7vw,24px)}
.shell .topbar{background:linear-gradient(180deg,#223039,#101a20);border-bottom:1px solid #ad8850;box-shadow:0 3px 18px #0007}
.topbar .nav-button{border-radius:5px 5px 0 0;background:transparent;color:#bebba9;transition:background .18s,color .18s;min-height:48px}
.topbar .nav-button.active,.topbar .nav-button:hover{background:linear-gradient(0deg,#a27c3340,transparent);color:#f1dba8;box-shadow:inset 0 -3px #c89a53}
.section-tabs{gap:8px;padding-block:12px;border-bottom:1px solid #90754c45}
.section-tab{border-radius:4px;min-height:44px;background:#15232a;color:#c6c5b8;border:1px solid #4f5a55;font-size:.85rem}
.section-tab.selected,.shell .inventory-tabs .secondary.selected,.modal-backdrop .inventory-tabs .secondary.selected{background:linear-gradient(#695133,#3d3024);border-color:#bd955e;color:#ffe5b3;box-shadow:inset 0 0 0 2px #1c161660}
.shell .secondary,.modal-backdrop .secondary{min-height:44px;padding:9px 15px;border:1px solid #67756c;border-radius:5px;background:linear-gradient(#304048,#1b2a31);color:#f0e3c9;box-shadow:inset 0 1px #d4d0a41c;line-height:1.35}
.shell .red-button,.modal-backdrop .red-button{min-height:44px;border:1px solid #c09555;border-radius:5px;background:linear-gradient(#9b3c2b,#64261f);color:#fff0d2;font-family:Georgia,'Times New Roman',serif;font-size:1rem;box-shadow:inset 0 0 0 2px #26161265,0 2px 6px #0004;line-height:1.35;white-space:normal}
.shell button:hover:not(:disabled),.modal-backdrop button:hover:not(:disabled){filter:brightness(1.15)}
button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #f4cd86;outline-offset:3px}
.shell input,.shell select,.shell textarea,.modal-backdrop input{background:#0b171d;color:#eee7d8;border:1px solid #817451;border-radius:5px;min-height:44px;font:inherit;font-size:max(1rem,1rem);padding:9px 12px;max-width:100%}
.shell input[type=checkbox],.modal-backdrop input[type=checkbox]{min-height:22px;width:22px;height:22px;accent-color:#d2ab69;padding:0;flex-shrink:0}
.shell label,.modal-backdrop label{color:#e6dbc4}.checkbox-row{min-height:44px;align-items:center;gap:10px}
.shell .exp-heading{margin:0 0 22px;padding:0 0 15px;border-bottom:1px solid #9a7c494a}.exp-heading p{margin:0 0 5px}
.shell .party-card{background:linear-gradient(110deg,#29373d,#152128);border-color:#6a644b;border-radius:7px;box-shadow:0 3px 10px #0003}
.shell .portrait-frame{border-color:#b18e53;border-radius:6px}.shell .choice{border-radius:7px;background:#142128;border:1px solid #56605a;margin-block:8px}.shell .choice.chosen{border-color:#d7b47c;background:linear-gradient(110deg,#66502e77,#152128)}
.creator .choices{max-height:none;overflow:visible}.creator .choice small{line-height:1.5}
.shell .item-tile{border-radius:5px;background:radial-gradient(ellipse at center,#46525345,#0a151bbf);box-shadow:inset 0 0 8px #0007}.shell .item-tile.empty{opacity:.46;border:1px solid #6b746044}
.shell .zone-card{border-radius:10px;overflow:hidden;border-color:#826b44}.shell .zone-copy{background:linear-gradient(#1d2d34,#101b22);color:#e3dac8}
.npc-welcome{display:grid;grid-template-columns:minmax(150px,36%) 1fr;min-height:250px;border:1px solid #977947;border-radius:10px;overflow:hidden;background:radial-gradient(ellipse at left,#73502244,transparent 80%),#172229;box-shadow:0 8px 26px #0005;margin-bottom:22px}
.npc-portrait{min-height:270px;background-image:url('/assets/evermarch/town-artisans.webp');background-size:300% auto;background-position:var(--npc-position) 22%;background-repeat:no-repeat;mask-image:linear-gradient(90deg,#000 88%,transparent)}
.npc-greeting{min-width:0;overflow-wrap:anywhere;padding:clamp(18px,3vw,40px);align-self:center}.npc-greeting h2{font-size:clamp(1.4rem,2.3vw,2rem);margin:6px 0 16px}.npc-greeting p:last-child{font-family:Georgia,serif;font-size:1.1rem;color:#e4d2b1;font-style:italic}
.inventory-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.inventory-tabs button{flex:1 1 110px}.inventory-panel .az-card{box-shadow:none;border:0;background:transparent;padding:0}
.modal-backdrop{color:var(--realm-ink);background:#03090ec4;backdrop-filter:blur(7px)}
.modal-backdrop .ornate{color:var(--realm-ink);background:linear-gradient(135deg,#27343b,#152129 72%);border:1px solid #c39a60;border-radius:9px;box-shadow:inset 0 0 0 4px #101a20,inset 0 0 0 5px #776542,0 16px 70px #000b;max-height:calc(100dvh - 32px);overflow:auto}
.modal-backdrop p,.modal-backdrop label,.modal-backdrop li{color:#e1d9c9}.modal-backdrop .small-note{color:#bebcb0}.modal-backdrop .item-inspector{padding:24px}.modal-backdrop .item-inspector h2{margin-top:0}.item-inspector>button{margin-top:12px}
.item-hover{color:#eee2cc;background:#132129;border:1px solid #b4945b}
.character-reset{border-top:1px solid #9b6851;margin-top:22px;padding-top:12px;margin-bottom:22px}.character-reset .danger{border-color:#c48972}.deletion-warning{padding:14px;background:#55271f66;border-left:3px solid #d39573;border-radius:4px}.character-reset form label{display:grid;gap:7px;margin-block:12px}.character-reset form button{margin-top:12px}
.bound-imp{position:absolute;max-width:none;pointer-events:none;filter:drop-shadow(0 2px 3px #0008)}
.formation-status[hidden]{display:none!important}.respawn-clock:empty{display:none}
@media(max-width:700px){.npc-welcome{grid-template-columns:42% 1fr;min-height:220px}.npc-portrait{min-height:220px}.npc-greeting{min-width:0;overflow-wrap:anywhere;padding:15px}.npc-greeting p:last-child{font-size:.95rem}.npc-greeting h2{font-size:1.35rem}.shell .exp-heading{margin-bottom:16px}.modal-backdrop .item-inspector{padding:20px}.settings-modal{width:min(560px,calc(100vw - 24px))}.inventory-tabs .secondary{padding-inline:9px}.section-tabs{gap:5px}.section-tab{padding-inline:10px}}
@media(max-width:360px){.npc-welcome{grid-template-columns:1fr}.npc-portrait{height:180px;min-height:180px;background-size:300% auto;background-position:var(--npc-position) 26%;mask-image:linear-gradient(#000 88%,transparent)}.npc-greeting{min-width:0;overflow-wrap:anywhere;padding:16px}.modal-backdrop .ornate{padding:18px}}
@media(prefers-reduced-motion:reduce){.topbar .nav-button{transition:none}}

/* Keep long names, enlarged text and narrow panels inside their own layout. */
.shell .quest-focus{border-radius:9px;background:linear-gradient(90deg,#0a1119f5 30%,#0a1119a8),var(--quest-art,none) center/cover,#121e24}
.exp-page>*,.expedition-roster article>div,.recipe-detail>div,.item-detail-title>div,.character-progression{min-width:0;overflow-wrap:anywhere}
.inventory-heading,.renown-progress>div>p{flex-wrap:wrap}
.inventory-heading h2{font-size:clamp(1.25rem,2vw,1.5625rem)}
.item-detail-title{flex-wrap:wrap}.item-detail-title>div{flex:1 1 12rem}
.shell .exp-page p:not(.eyebrow):not(.small-note){font-size:1rem}
.shell .exp-page .small-note{font-size:.875rem}
@media(max-width:480px){.npc-welcome{grid-template-columns:1fr}.npc-portrait{height:200px;min-height:200px;mask-image:linear-gradient(#000 88%,transparent)}.npc-greeting{padding:18px}.expedition-roster article{flex-wrap:wrap}.expedition-roster article>div{flex:1 1 10rem}.recipe-detail{flex-wrap:wrap}.recipe-detail>div{flex:1 1 10rem}.tree-toolbar{gap:6px}.tree-toolbar select{flex:1 1 9rem;width:auto;min-width:0}}

.shell>.topbar nav{grid-template-columns:repeat(5,minmax(44px,1fr));overflow-x:auto!important;overflow-y:hidden!important}
.shell>.topbar .nav-button span{font:inherit;white-space:normal;overflow-wrap:anywhere}
@media(max-width:350px){.paper-doll{grid-template-columns:52px minmax(0,1fr) 52px}.challenge-grid{grid-template-columns:minmax(0,1fr)}.tree-legend{flex-wrap:wrap}.renown-number{flex-wrap:wrap}}

.shell .quest-count{display:flex;flex-direction:column;gap:10px}.shell .quest-count progress{width:100%;max-width:500px}

/* Charm slots carry a readable label, unlike decorative empty inventory tiles. */
.shell .charm-equipment .item-tile.empty{opacity:1;color:#e9dfc6}

/* Auto-salvage card: one compact block at the top of the bag. Pills stay 44px tall for touch. */
.salvage-card{margin:0 0 12px;padding:10px 12px;border:1px solid var(--realm-edge);border-radius:6px;background:linear-gradient(145deg,#2b281e,#142026 78%);box-shadow:inset 0 0 0 2px #0c1215b0;min-width:0}
.salvage-card.is-on{border-color:var(--realm-gold)}
.salvage-card-head{display:flex;align-items:center;justify-content:space-between;gap:6px 10px}
.salvage-card .salvage-switch{flex:none;white-space:nowrap;text-align:left;display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0;border:0;border-radius:6px;background:none;box-shadow:none;color:#f2dfb1;font:700 1rem Georgia,serif;cursor:pointer}
.salvage-track{position:relative;flex:none;width:46px;height:26px;border:1px solid #67756c;border-radius:13px;background:#0f181c;transition:background .15s,border-color .15s}
.salvage-track i{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#9b9788;transition:transform .15s,background .15s}
.salvage-switch[aria-checked="true"] .salvage-track{border-color:var(--realm-gold);background:linear-gradient(#a3813f,#6f5528)}
.salvage-switch[aria-checked="true"] .salvage-track i{transform:translateX(20px);background:#fff1c9}
.salvage-card .salvage-edit{flex:none;min-height:44px;padding:6px 14px;font-size:.85rem}
.salvage-summary{margin:2px 0 0;color:var(--realm-ink);font-size:.86rem;line-height:1.4;overflow-wrap:anywhere}
.salvage-card.is-off .salvage-summary{color:var(--realm-muted)}
.salvage-summary small{display:block;margin-top:2px;color:var(--realm-muted);font-size:.76rem}
.salvage-editor{margin-top:10px;padding-top:8px;border-top:1px solid #76613d80}
.salvage-row{margin:0 0 10px}
.salvage-row-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 4px;color:var(--realm-gold);font-size:.85rem}
.salvage-links{display:flex;gap:2px}
.salvage-card .salvage-link{min-height:44px;min-width:44px;padding:0 8px;border:0;background:none;box-shadow:none;color:#ffe5b3;font-size:.8rem;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.salvage-pills{display:flex;flex-wrap:wrap;gap:6px}
.salvage-pills.salvage-tiers{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr))}
.salvage-card .salvage-pill.tier{--rarity:var(--realm-gold)}
.salvage-card .salvage-pill{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;min-width:44px;padding:0 12px;border:1px solid #4d5c5c;border-radius:22px;background:#0f181c;box-shadow:none;color:#b9b5a9;font-size:.86rem;line-height:1;cursor:pointer}
.salvage-card .salvage-pill.tier{padding:0 4px;gap:3px}
.salvage-card .salvage-pill.offclass{--rarity:var(--realm-gold);text-align:left}
.salvage-card .salvage-pill[class*="rarity-"]{color:var(--rarity)}
.salvage-check{display:inline-flex;align-items:center;justify-content:center;flex:none;width:16px;height:16px;border:2px solid currentColor;border-radius:50%;font-size:.65rem;font-weight:700;opacity:.55}
.salvage-pill.tier .salvage-check{display:none;width:auto;height:auto;border:0;border-radius:0;opacity:1;font-size:.8rem}
.salvage-card .salvage-pill[aria-pressed="true"]{border-color:var(--rarity);background:color-mix(in srgb,var(--rarity) 20%,#0f181c);color:#fff3d0;font-weight:700;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--rarity) 55%,transparent)}
.salvage-card .salvage-pill[class*="rarity-"][aria-pressed="true"]{color:var(--rarity)}
.salvage-pill[aria-pressed="true"] .salvage-check{opacity:1;background:var(--rarity);border-color:var(--rarity);color:#101418}
.salvage-pill.tier[aria-pressed="true"] .salvage-check{display:inline;background:none;color:var(--rarity)}
.salvage-card button:disabled,.salvage-card button[aria-disabled="true"]{opacity:.75;cursor:default}
.salvage-help{margin:0 0 8px;color:#ccc4b7;font-size:.8rem;line-height:1.45}
.salvage-warn{margin:0 0 8px;padding:7px 10px;border:1px solid #c98a4a;border-left-width:3px;border-radius:4px;background:#4a2f1a80;color:#ffd9a6;font-size:.8rem;line-height:1.4}
.salvage-info{margin:0;font-size:.8rem;color:#ccc4b7}
.salvage-info summary{min-height:44px;display:flex;align-items:center;gap:8px;color:var(--realm-gold);cursor:pointer;list-style:none}
.salvage-info summary::-webkit-details-marker{display:none}
.salvage-info summary::before{content:"i";display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:1px solid currentColor;border-radius:50%;font:italic 700 .7rem Georgia,serif}
.salvage-info p{margin:0 0 4px;line-height:1.45}
.salvage-count{margin:8px 0 0;color:var(--realm-muted);font-size:.8rem}
.salvage-bag-prompt{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin:10px 0 0;padding:8px 10px;border:1px solid #9b7950;border-left:3px solid #d2ae68;border-radius:4px;background:#352b1e80}
.salvage-bag-prompt p{flex:1 1 150px;margin:0;font-size:.83rem;line-height:1.4}
.salvage-bag-prompt strong{display:block;color:#ffe5b3}
.salvage-bag-prompt small{display:block;font-size:.75rem;color:#ddc89c}
.salvage-bag-prompt button{flex:0 1 auto;margin:0;font-size:.82rem}
@media(max-width:380px){.salvage-card{padding:8px 10px}.salvage-bag-prompt button{width:100%}}

/* Salvage confirmation: the buttons stay in view and a long list scrolls inside the card. */
.salvage-confirmation.salvage-review{display:flex;flex-direction:column;overflow:hidden;padding:20px}
.salvage-review>*{flex:none}
.salvage-review h2{margin:0 0 8px}
.salvage-review p{margin:0 0 10px;line-height:1.45}
.salvage-review .salvage-item-list{flex:0 1 auto;min-height:0;max-height:none;overflow:auto;margin:0 0 10px;padding:0;list-style:none;border:1px solid #76613d80;border-radius:5px;background:#0d151a}
.salvage-review .salvage-item-list:has(li:nth-child(2)){min-height:96px}
.salvage-review .salvage-item-list li{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:7px 10px;border-bottom:1px solid #ffffff14;color:var(--rarity,#ddd8c9);font-size:.88rem;line-height:1.3}
.salvage-review .salvage-item-list li:last-child{border-bottom:0}
.salvage-item-name{min-width:0;overflow-wrap:anywhere}
.salvage-review .salvage-rare-warning{padding:8px 10px;border:1px solid #c98a4a;border-left-width:3px;border-radius:4px;background:#3a2414;color:#ffd9a8;font-weight:600}
.salvage-item-plus{flex:none;color:#f0cc78;font-weight:700}
.salvage-review .salvage-rewards{margin:0 0 10px;padding:10px 0}
.salvage-review .small-note{color:#ccc4b7;font-size:.78rem}
@media(max-width:380px){.salvage-confirmation.salvage-review{padding:16px}.salvage-review .az-actions>button{flex:1 1 110px;min-height:44px}}
/* Per-tier salvage rules (IRP_TIER_SALVAGE_VERSION): tier chips are small plaques with a five-segment bar, one segment per rarity salvaged; the chip being edited is gold. Seven to a row so thirteen tiers split 7 + 6. */
.salvage-card .salvage-tiers.salvage-tier-chips{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.salvage-card .salvage-pill.tier-chip{flex-direction:column;gap:2px;padding:5px 3px 6px;min-height:50px;border-radius:8px;background:linear-gradient(#18232a,#0f181c);color:#b9b5a9;border-color:#4d5c5c;box-shadow:none}
.salvage-card .salvage-pill.tier-chip small{font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;opacity:.7;line-height:1}
.salvage-card .salvage-pill.tier-chip b{font-size:1.05rem;line-height:1;font-family:Georgia,serif;color:inherit}
.salvage-card .salvage-pill.tier-chip.is-current{border-color:var(--realm-gold);background:linear-gradient(#4a3d22,#241f16);color:#fff3d0;box-shadow:0 0 0 1px var(--realm-gold),0 0 10px #d2b57655}
.tier-bar{display:flex;gap:2px;width:78%}
.tier-bar i{flex:1;height:4px;border-radius:2px;background:#2b3a3f}
.tier-bar i.on{background:var(--rarity);box-shadow:0 0 4px color-mix(in srgb,var(--rarity) 60%,transparent)}
.salvage-groups{display:flex;flex-direction:column;gap:3px;margin-top:5px}
.salvage-group{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;padding:3px 8px;border-left:3px solid var(--realm-gold);background:#0f181c99;border-radius:0 4px 4px 0;font-size:.8rem;color:var(--realm-ink)}
.salvage-group b{color:var(--realm-gold);font-weight:700}
.salvage-group-dots{display:inline-flex;gap:3px}
.salvage-group-dots i{width:8px;height:8px;border-radius:50%;background:var(--rarity)}

/* /mmo-ui.css */
/* Compact Evermarch navigation. All actions remain real, labeled controls. */
.nav-brand,.hero-hud{display:none}
.mmo-shell{--mmo-gold:#d9b471;--mmo-edge:#65563e;background:linear-gradient(120deg,#101c24e8,#080f16f5),url('/assets/evermarch/gateway-v1.webp') center top/cover fixed}
.mmo-shell>.topbar{position:sticky;top:0;z-index:45;border-bottom:1px solid #8b7046;background:#0c151df7;box-shadow:0 6px 22px #0006}
.mmo-shell .hero-hud{display:flex;min-width:0;gap:20px;align-items:center}
.hero-hud>div:first-child{min-width:0}.hero-hud strong{display:block;font:1.3rem Georgia,serif;color:#f4dbab;overflow-wrap:anywhere}.hero-hud span,.hero-hud small{display:block;color:#b8bdae;font-size:.8rem}
.hero-hud .hud-progress{min-width:75px;flex:1;max-width:220px}.hud-progress progress{display:block;width:100%;height:6px;margin-bottom:6px;accent-color:#9abd94}
.hero-hud button{min-height:44px;flex-shrink:0;padding:6px 12px;background:#273030;border:1px solid #74613d;border-radius:4px;color:#f4dbab}
.hero-hud .hud-skill-points{font:bold 1.25rem Georgia,serif}.hero-hud .hud-skill-points span{font: .72rem system-ui}.hero-hud .hud-bag{display:flex;gap:8px;align-items:center}.hero-hud .hud-bag .icon{width:20px;height:20px}
.mmo-shell>.topbar>.account-block{grid-column:3;grid-row:1}.mmo-shell .account-name{display:none}
.mmo-shell .section-tabs{max-width:none;background:#101b22cc;margin:0;padding:8px 24px;gap:6px;scroll-padding:12px}.mmo-shell .section-tab{border:0;border-radius:3px;background:transparent;color:#aebcbf;padding:8px 16px;min-height:44px}.mmo-shell .section-tab.selected{color:#f7dcaa;background:#71563245;box-shadow:inset 0 -2px #ddba74}
.mmo-shell .exp-page{padding:22px clamp(16px,3vw,42px) 80px;max-width:1500px}.mmo-shell .exp-heading{padding-top:4px;display:flex;flex-direction:column;gap:3px;margin-bottom:18px}.mmo-shell .exp-heading h1{margin:0;font-size:clamp(1.8rem,3vw,2.6rem)}.mmo-shell .exp-heading .eyebrow{margin:0;color:#b9a47e;font-size:.7rem;letter-spacing:.2em}
.mmo-shell .exp-panel,.mmo-shell .inventory-panel,.mmo-shell .ornate{border-radius:4px;background:linear-gradient(145deg,#1d2b33dd,#111c23f5);box-shadow:inset 0 1px #d3b87a20,0 12px 28px #0003;border-color:var(--mmo-edge)}
.mmo-shell .exp-panel h2,.mmo-shell .inventory-panel h2{font-size:1.2rem}.mmo-shell .inventory-panel{padding:16px}.inventory-panel .inventory-tabs{gap:0;margin:-16px -16px 16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:1px solid #695b40}.inventory-tabs>button{min-width:0;border-radius:0!important;border:0!important;background:transparent!important;font-size:.85rem}.inventory-tabs>button.selected{color:#ffe1a6!important;background:#7d603534!important;box-shadow:inset 0 -2px #d9b471!important}
.inventory-heading>span{white-space:nowrap;font-variant-numeric:tabular-nums;border:1px solid #596250;padding:3px 7px;border-radius:3px}.inventory-gold{display:flex;justify-content:space-between;gap:8px;margin-bottom:10px}.inventory-gold>span{font-size:.75rem;color:#aebbbd}
.inventory-panel .item-grid{grid-template-columns:repeat(5,minmax(44px,1fr));gap:5px}.inventory-panel:not(.compact) .item-grid{grid-template-columns:repeat(10,minmax(44px,1fr))}.inventory-panel .item-tile{min-height:44px;max-height:76px;border-radius:3px;padding:2px}.inventory-panel .item-tile.empty{box-shadow:inset 0 1px 5px #0005;background:#09121899}.inventory-panel .item-tile .gear-icon{max-height:72px}
.equipment-workspace{grid-template-columns:minmax(0,1.5fr) minmax(240px,1fr)}.mmo-shell .equipment-workspace>.exp-panel{margin:0}.mmo-shell .town-layout{grid-template-columns:minmax(0,1fr) 300px}.mmo-shell .town-inventory{top:105px;padding-top:0}.mmo-shell .right-rail{min-width:0}.mmo-shell .right-rail .inventory-panel .item-grid{max-height:272px;overflow-y:auto;padding:0;scrollbar-width:thin}
.armor-update{font-size:.8rem;margin-bottom:10px}.armor-update summary{min-height:44px;cursor:pointer;padding:10px 0}.armor-update p{font-size:.85rem!important}
.party-bound{border-color:#9a824e!important}.bound-mark{position:absolute;top:2px;left:5px;color:#ffe1a0;font-size:.75rem;text-shadow:0 1px #000}.bound-label{color:#e2c489}.party-bag>.small-note{font-size:.8rem;line-height:1.5}.transfer-form{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:18px 0}.transfer-form label{flex:1;min-width:100px}.transfer-form input[type=number]{display:block;width:100%;font-size:1rem;min-height:44px;background:#09151b;color:#fff;border:1px solid #8b744b;padding:8px}.resurrection-status{color:#e6d2aa;border:1px solid #897249;background:#172530;padding:10px 14px;margin:0 0 10px;font-size:.9rem}
.reachable-nodes{border:1px solid #5a695d;border-left:3px solid #bfc58f;background:#14262ad9;padding:14px 18px;margin:0 0 18px}.reachable-nodes h2{margin:0 0 4px!important;font-size:1.15rem!important}.reachable-nodes p{font-size:.85rem!important;margin:4px 0 12px}.reachable-nodes>div{display:flex;gap:8px;overflow-x:auto;padding:3px;scrollbar-width:thin}.reachable-nodes button{flex:0 0 min(245px,85%);text-align:left;white-space:normal;font-size:.9rem;min-height:60px}.reachable-nodes button small{display:block;font-size:.75rem;color:#b8c7bc;margin-top:3px}.reachable-nodes button.selected{border-color:#dfbd7c;background:#534329}.mmo-shell .node-inspector{background:#111d26;border:1px solid #7b643f;border-top:3px solid #d8b275;border-radius:4px}.mmo-shell .tree-toolbar{background:#111c25}.mmo-shell .tree-viewport{background:radial-gradient(ellipse,#26313c,#0b111a 70%)}
@media(min-width:1180px){
 .mmo-shell{padding-left:156px}.mmo-shell>.topbar{grid-template-columns:minmax(0,1fr) auto;min-height:78px;padding:10px 24px}.mmo-shell>.topbar>.wordmark{display:none}.mmo-shell>.topbar>.hero-hud{grid-column:1;grid-row:1}.mmo-shell>.topbar>.account-block{grid-column:2}
 .mmo-shell>.topbar>nav{position:fixed;inset:0 auto 0 0;width:156px;height:100dvh;display:flex!important;flex-direction:column;padding:20px 10px;background:linear-gradient(#1d2a31,#0b141bcc),url('/assets/evermarch/gateway-v1.webp') 42% center/auto 100%;border-right:1px solid #80633f;overflow-y:auto!important;gap:7px}
 .mmo-shell .nav-brand{display:block;margin:0 0 24px;text-align:center}.nav-brand .wordmark{width:100%;max-width:136px}.nav-brand .wordmark img{max-width:100%}.nav-brand>span{display:block;color:#aa956f;font-size:.5rem;letter-spacing:.14em;margin-top:10px}.mmo-shell>.topbar>nav .nav-button{flex:none;display:flex;flex-direction:column;gap:7px;min-height:72px;width:100%;font-size:.9rem;border:1px solid transparent;border-radius:4px}.mmo-shell>.topbar>nav .nav-button .icon{width:25px;height:25px}.mmo-shell>.topbar>nav .nav-button.active{border-color:#a9874a;background:#6b573840;box-shadow:inset 3px 0 #d6b075;color:#ffe2b1}.mmo-shell .combat-grid{grid-template-columns:minmax(180px,16%) minmax(0,1fr) 300px;height:calc(100dvh - 140px);min-height:44rem}
}
@media(min-width:761px) and (max-width:1179px){.mmo-shell>.topbar{grid-template-columns:105px minmax(0,1fr) auto}.mmo-shell>.topbar>.hero-hud{grid-column:2;grid-row:1}.mmo-shell>.topbar>nav{grid-row:2;grid-column:1/-1}.hero-hud{gap:10px!important}.hero-hud .hud-progress{display:none}}
@media(max-width:760px){
 .mmo-shell{padding-bottom:calc(86px + env(safe-area-inset-bottom))}.mmo-shell>.topbar{position:relative;padding:8px 12px;grid-template-columns:minmax(0,1fr) auto}.mmo-shell>.topbar>.account-block{grid-column:2}.mmo-shell>.topbar>.hero-hud{grid-column:1/-1;grid-row:2;gap:8px;padding:8px 0 0;border-top:1px solid #67563855}.hero-hud>div:first-child{flex:1}.hero-hud strong{font-size:1.05rem}.hero-hud span{font-size:.72rem}.hero-hud .hud-progress{display:none}.hero-hud button{padding:5px 8px}.hero-hud .hud-bag .icon{display:none}
 .mmo-shell>.topbar>nav{position:fixed;inset:auto 0 0;z-index:50;width:100%;display:grid!important;grid-template-columns:repeat(5,minmax(44px,1fr));gap:2px;padding:6px max(6px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));background:#0c1721f7;border-top:1px solid #aa874e;box-shadow:0 -6px 24px #0006;overflow-x:auto!important}.mmo-shell>.topbar>nav .nav-button{border-radius:4px;min-height:58px;font-size:.72rem;padding:4px 2px;gap:5px}.mmo-shell>.topbar>nav .nav-button.active{background:#81643955;box-shadow:inset 0 2px #dcb774}.mmo-shell .section-tabs{padding:6px 10px}.mmo-shell .section-tab{padding:7px 12px;font-size:.85rem}.mmo-shell .chat-access{bottom:calc(86px + env(safe-area-inset-bottom))}.mmo-shell .community-chat{bottom:calc(84px + env(safe-area-inset-bottom));max-height:calc(100dvh - 110px)}
 .inventory-panel:not(.compact) .item-grid{grid-template-columns:repeat(5,minmax(44px,1fr))}.inventory-panel .item-tile{max-height:none}.equipment-workspace{grid-template-columns:minmax(0,1fr)}.mmo-shell .exp-page{padding-bottom:36px!important}.mmo-shell .inventory-panel{padding:12px}.inventory-panel .inventory-tabs{margin:-12px -12px 12px}.reachable-nodes{padding:12px}.mmo-shell .right-rail .inventory-panel .item-grid{max-height:none}.mmo-shell .exp-heading{margin-bottom:12px}.mmo-shell .exp-panel{padding:16px}.item-inspector{padding:16px}.inventory-drawer{padding:8px}.inventory-drawer .inventory-panel{padding:10px}.inventory-drawer .inventory-tabs{margin:-10px -10px 12px}
}
@media(min-width:761px) and (max-width:1050px){.inventory-panel:not(.compact) .item-grid{grid-template-columns:repeat(5,minmax(44px,1fr))}}
@media(prefers-reduced-motion:reduce){.mmo-shell *{scroll-behavior:auto!important}}

@media(min-width:1101px){.mmo-shell .right-rail .inventory-panel{padding:10px}.mmo-shell .right-rail .inventory-tabs{margin:-10px -10px 12px}}

.mmo-shell .right-rail .item-tile:focus-visible{outline-offset:-2px}

/* /journey.css */
.journey-goal{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;padding:20px;border:1px solid #76623b;background:linear-gradient(110deg,rgba(46,39,26,.95),rgba(15,24,28,.96));margin:0 0 20px;color:#ede2c8}
.journey-goal h2{font-size:1.2rem;margin:3px 0 8px}.journey-goal p{margin:5px 0;line-height:1.55}.journey-goal-actions{display:flex;flex-direction:column;justify-content:center;gap:8px}
.journey-goal.compact{display:block;padding:14px;margin:14px 0}.journey-goal.compact h2{font-size:1rem}.journey-goal.compact .journey-goal-actions{margin-top:10px}
.journey-goal button,.equipment-sets button,.milestones-panel button,.journey-summary button{min-height:44px;white-space:normal;overflow-wrap:anywhere}
.pinned-milestone{grid-column:1/-1;display:grid;gap:6px;border-top:1px solid #645438;padding-top:12px}.pinned-milestone span{font-size:.8rem;color:#d3b876}.pinned-milestone progress,.milestone-row progress{display:block;width:100%;margin-top:5px}
.journey-section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.journey-section-heading span{color:#c7b894}
.milestones-panel>details>summary,.equipment-sets>summary{font-size:1.05rem;color:#e7cb8b;min-height:44px;cursor:pointer;padding:12px 0}
.milestone-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;padding:16px 0;border-top:1px solid #4c493c;overflow-wrap:anywhere}.milestone-row h3{font-size:1rem;margin:5px 0}.milestone-row p{font-size:.87rem;margin:5px 0}.milestone-row label{font-size:.8rem;color:#c6bda8}.milestone-row.ready{border-color:#a38b48}.milestone-actions{display:flex;align-items:center;gap:8px}.milestone-earned{color:#b4d2a7}
.equipment-sets{margin-top:20px}.equipment-set-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.equipment-set{min-width:0;padding:14px;border:1px solid #615237;background:rgba(0,0,0,.16)}.equipment-set h3{overflow-wrap:anywhere}.equipment-set form{display:grid;gap:10px;margin:14px 0}.equipment-set input{width:100%;min-height:44px;font-size:1rem;box-sizing:border-box}.equipment-set label{display:grid;gap:6px}.equipment-set .az-actions{display:grid}.equipment-set li{overflow-wrap:anywhere}.equipment-set summary{min-height:44px;cursor:pointer;padding:10px 0}
.item-protected-mark{position:absolute;left:3px;top:3px;padding:1px 3px;font-size:.6875rem;line-height:.875rem;background:#121a1e;color:#f1d28b;border:1px solid #9a8454}.item-protection-note{color:#e4cb8e;font-size:.85rem;border-left:2px solid #b09c65;padding:8px 12px}
.journey-summary{margin:20px 0}.journey-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.journey-stat-grid>div{border-bottom:1px solid #514937;padding:8px 0}.journey-stat-grid dt{font-size:.82rem;color:#c1b69d}.journey-stat-grid dd{font-size:1.3rem;margin:6px 0;color:#eee0b4}.journey-summary details summary{min-height:44px;padding:12px 0;cursor:pointer}.party-preparation li{margin:8px 0;line-height:1.5}
@media(max-width:900px){.equipment-set-grid{grid-template-columns:1fr}.journey-goal{grid-template-columns:1fr}.journey-goal-actions{flex-direction:row;flex-wrap:wrap;justify-content:flex-start}.journey-goal-actions>*{flex:1 1 150px}}
@media(max-width:520px){.journey-goal{padding:14px}.milestone-row{grid-template-columns:1fr;gap:8px}.milestone-actions{flex-wrap:wrap}.milestone-actions button{flex:1}.journey-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.equipment-set{padding:12px}.journey-summary,.milestones-panel,.equipment-sets{padding:14px;min-width:0}.journey-goal.compact .journey-goal-actions{flex-direction:column}}

.mastery-panel{margin-top:20px}.mastery-panel h3{font-size:1rem}.mastery-panel strong{font-size:.88rem;line-height:1.4;display:block}.mastery-panel progress{display:block;width:100%;margin-top:12px}.mastery-panel p{line-height:1.5}
@media(max-width:600px){.mastery-panel .journey-stat-grid{grid-template-columns:1fr}}

/* Vision gaps #5-#7 (9 Oct): the battle screen's next-step line, the level-up / upgrade prompt and the bag tile fit marks. */
.battle-goals{margin:4px 0 0;flex-basis:100%;min-width:0}
.arena-heading>.battle-goals{grid-column:1/-1}
.next-step{display:flex;align-items:center;gap:10px;padding:4px 6px 4px 12px;border:1px solid #8d7547;border-left:3px solid #e0b860;border-radius:4px;background:#14212be0;color:#efe1c1;font:.875rem/1.3 var(--ui)}
.next-step p{margin:0;flex:1;min-width:0;overflow-wrap:anywhere}
.next-step .next-step-go{flex:none;min-height:44px;min-width:72px;padding:0 14px}
.next-step-upgrade{border-left-color:#7ee08a}
.next-prompt-host{position:fixed;right:20px;bottom:24px;z-index:1990;width:min(360px,calc(100vw - 32px))}
.next-prompt{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 14px;background:linear-gradient(180deg,#1a2a36,#111c25);border:1px solid #c9a55a;border-radius:6px;box-shadow:0 6px 30px #000a;color:#efe1c1;font:.875rem/1.3 var(--ui)}
.next-prompt{flex-wrap:wrap}
.next-prompt p{margin:0;flex:1 1 140px;min-width:0;display:flex;flex-direction:column;gap:2px;overflow-wrap:anywhere}
.next-prompt strong{color:#ffe2a0;font-size:1rem}
.next-prompt-upgrade strong{color:#8fe39a}
.next-prompt span{color:#d8cbb0}
.next-prompt button{flex:none;min-height:44px}
.next-prompt .red-button{padding:0 14px}
/* Second fix (14 Oct): the upgrade prompt's Equip is the standard gold main button (public/ui-kit.css .red-button / .uk-btn-primary). The host sits
   on <body>, outside the kit's containers, so the kit rule does not reach it. Only the upgrade prompt changes here. */
.next-prompt-upgrade .red-button{border:1px solid #e6c98f;border-radius:4px;background:linear-gradient(180deg,#c9a468,#8f6f3c);color:#1b1509;font:700 .875rem/1.3 system-ui;letter-spacing:0;box-shadow:inset 0 1px 0 #fff2c95c,inset 0 0 0 2px #8a682f66,0 2px 5px #0005;text-shadow:none}
.next-prompt-upgrade .red-button:hover:not(:disabled){border-color:#fbe3ac;background:linear-gradient(180deg,#d8b674,#9c7a44)}
.next-prompt-upgrade .red-button:focus-visible{outline:2px solid #fbe3ac;outline-offset:2px}
.next-prompt .next-prompt-close{min-width:44px;padding:0;font-size:1rem}
.next-prompt-host.animate .next-prompt{animation:next-prompt-in .3s ease-out}
.next-prompt-host.animate .next-prompt-level{animation:next-prompt-in .3s ease-out,next-prompt-glow 1.6s ease-out}
body.level-up-flash :is(.sidebar-character-portrait,.party-status-portrait,.nav-button[data-page="overview"]){animation:level-up-flash 1.6s ease-out}
@keyframes next-prompt-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes next-prompt-glow{0%{box-shadow:0 0 0 0 #ffd76acc}50%{box-shadow:0 0 26px 6px #ffd76a77}100%{box-shadow:0 6px 30px #000a}}
@keyframes level-up-flash{0%{filter:none}25%{filter:brightness(1.7) drop-shadow(0 0 10px #ffd76a)}100%{filter:none}}
@media (prefers-reduced-motion:reduce){.next-prompt-host.animate .next-prompt,body.level-up-flash :is(.sidebar-character-portrait,.party-status-portrait,.nav-button){animation:none}}
/* The prompt keeps clear of the toast (it moves up while one shows) and, on phones, of the bottom bar and the battle action row, like #toast. */
.next-prompt-host{transition:transform .2s ease-out}
body:has(#toast.visible) .next-prompt-host{transform:translateY(-76px)}
@media (max-width:760px){.next-prompt-host{left:16px;right:16px;width:auto;bottom:calc(var(--mobile-nav-height,84px) + 12px)}body:has(.combat-grid .field-action-controls:not([hidden])) .next-prompt-host{bottom:calc(var(--mobile-nav-height,84px) + 76px)}}
/* Top left: the tier badge holds the top right, NEW the bottom left and the rank the bottom right. */
.item-upgrade-mark,.item-cant-wear-mark{position:absolute;top:2px;left:3px;z-index:3;font:700 .8125rem/1 var(--ui);text-shadow:0 0 3px #000,0 0 2px #000,0 0 1px #000;pointer-events:none}
.item-tile:is([data-favorite],:has(.item-protected-mark)) :is(.item-upgrade-mark,.item-cant-wear-mark){top:auto;bottom:2px;left:auto;right:30px}
.item-upgrade-mark{color:#7ee08a}
.item-cant-wear-mark{color:#ff8a7a}
/* Friction sweep follow-up (10 Oct, P7): Equip best sits at the top of the bag; a 44px touch target, full width on phones. */
.equip-best-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:10px 0}.equip-best-row .small-note{margin:0}.equip-best-button{min-height:44px;min-width:44px;padding:8px 16px}
@media (max-width:560px){.equip-best-button{flex:1 1 100%}}
.item-tile.fit-cant-wear>:is(img,svg,.rarity-art,picture){opacity:.5}
/* The wipe note (public/review-view.js) already gives one next step; the line hides while it shows, so only one step is on screen. */
.arena-heading:has(#wipeNote)>.battle-goals{display:none}

/* /nameplates.css */
/* Labels clear the visible painting and remain above their own animated model. */
.unit .model-wrap { z-index: 1; }
.unit .unit-name { z-index: 3; }
.rare-unit .unit-name { padding: 4px 6px; background: #101b20ee; border: 1px solid #b29a67; box-shadow: 0 2px 5px #0008; }
.rare-unit .unit-name b { white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: anywhere; line-height: 1.25; }
.rare-unit .unit-name small { line-height: 1.25; margin: 3px 0; }
.rare-unit .unit-hp { height: 9px; margin: 4px 3px 0; border-color: #b49b72; }
.rare-unit .unit-status:empty { display: none; }
/* Second fix (14 Oct): a boss's mechanic timers (for example RIME SURGE 3.4s) sit above its name instead of between its health bar and its
   art, so the name, level and health bar end just above the visible model (public/ui-layout.js nameplate() still places the whole plate). */
.boss-unit .unit-name { display: flex; flex-direction: column; }
.boss-unit .unit-name > .unit-status { order: -1; margin: 0 0 2px; }
.boss-unit .unit-status:empty { display: none; }

/* /callings.css */
/* The class map keeps the painted realm palette while giving every skill a distinct silhouette. */
.calling-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:4px 0 24px}.calling-heading h1{font:clamp(1.9rem,3vw,2.75rem) Georgia,serif;color:#f4e4c6;margin:8px 0 12px}.calling-heading p{margin:0;color:#b3bdc8}.calling-heading .eyebrow{color:var(--calling);letter-spacing:.14em;font-size:.75rem}.skill-point-counter{display:flex;gap:16px;align-items:center;padding:18px 24px;background:linear-gradient(125deg,#a5834526,#13202a);border:1px solid #ad92575c;border-radius:9px;flex-shrink:0}.skill-point-counter>strong{font:2.7rem Georgia,serif;color:#efd49a}.skill-point-counter span{font-size:.9375rem;color:#f0dbb3}.skill-point-counter small{display:block;font-size:.75rem;color:#aab9c6;margin-top:6px}.ability-lineup{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:10px;margin-bottom:24px}.ability-card{display:flex;align-items:center;gap:12px;min-height:83px;padding:13px;text-align:left;border:1px solid #c2ae7b25;background:linear-gradient(125deg,#283541,#121c27);border-radius:8px;color:#d4dbe1}.ability-card strong{display:block;font:1rem Georgia,serif;line-height:1.35}.ability-card small{display:block;margin-top:5px;color:#9daebb;font-size:.75rem;line-height:1.35}.ability-emblem{display:grid;place-items:center;flex:0 0 40px;color:var(--calling)}.ability-icon{width:32px;height:32px;display:block;max-width:none!important;max-height:none!important}.ability-card.selected{border-color:var(--calling);background:linear-gradient(120deg,#3c3b43,#192938)}.ability-card.learned small{color:#d7c084}.ability-card:hover{border-color:#e5d3a4}.calling-page .tree-workspace{grid-template-columns:minmax(0,1fr) 300px;align-items:start}.calling-page .tree-toolbar{display:block;padding:12px;background:#17232e;border-bottom:1px solid #b5a5742b}.tree-view-switch,.tree-map-tools{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.tree-view-switch{margin-bottom:12px}.tree-view-switch button{border:0;background:#0d1721;color:#a5b8c9;border-radius:5px;font-size:.8125rem;min-height:44px}.tree-view-switch button.selected{background:#3d3b35;color:#f1ddaf;box-shadow:inset 0 -2px #bba169}.tree-map-tools select{flex:1;max-width:none!important;background:#0e1823;min-height:44px}.tree-map-tools output{font-size:.75rem;color:#b9c6d1;min-width:37px;text-align:center}.calling-page .tree-viewport{touch-action:pinch-zoom;user-select:none;-webkit-user-select:none;height:min(69vh,690px);min-height:390px;background:radial-gradient(ellipse at 45% 20%,#35506a32,transparent 70%),radial-gradient(circle,#aaa5821b 1px,transparent 1px),#080f18;background-size:auto,24px 24px,auto}.tree-viewport.dragging,.tree-viewport.dragging *{cursor:grabbing!important}.tree-lane-title{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;font-size:.625rem;letter-spacing:.12em;color:#a4b4c2;padding:7px 9px;background:#101b27e8;border:1px solid #9caaac24;border-radius:4px;pointer-events:none}.calling-page .tree-node{min-height:48px!important;min-width:48px;width:48px;height:48px;background:radial-gradient(circle at 35% 20%,#3a4655,#15212d 70%);border-color:#617083}.calling-page .tree-node .node-glyph{display:grid;place-items:center}.calling-page .tree-node.ability{width:64px;height:64px;border-radius:14px;color:var(--branch);border:2px solid #798594;background:radial-gradient(circle at 35% 20%,#465164,#182432 70%)}.calling-page .tree-node.notable{width:54px;height:54px;border-radius:50%}.calling-page .tree-node.notable .ability-icon{width:26px;height:26px;color:#c1ced8}.calling-page .tree-node.travel{width:44px;height:44px;min-width:44px;min-height:44px!important;border-width:1px;font-size:.6875rem}.calling-page .tree-node.root{width:70px;height:70px;color:var(--branch);border:3px double var(--branch)}.calling-page .tree-node.allocated{border-color:#e9c57d;background:radial-gradient(circle at 35% 20%,#68532e,#252a2b 75%);color:#ffe1a0}.calling-page .tree-node.available{border-color:#86d5f8;box-shadow:0 0 0 3px #72cef016,0 0 16px #72cef033}.calling-page .tree-node.locked{opacity:.83}.calling-page .tree-node.foreign{opacity:.6}.calling-page .tree-node .node-label{font-size:.8125rem;line-height:1.3;width:132px;margin-top:12px;background:#09131bea;padding:3px 4px;border-radius:3px}.node-type{position:absolute;bottom:-7px;left:50%;transform:translateX(-50%);font:600 .5rem system-ui,sans-serif;letter-spacing:.1em;padding:2px 5px;border-radius:3px;color:#d3dce2;background:#253341;border:1px solid #657688}.calling-page .tree-node.allocated .node-type{color:#ffdda2;border-color:#b39056;background:#4a3a25}.calling-page .tree-links line{stroke:#597187;opacity:.6;stroke-width:2}.calling-page .tree-links line.allocated{stroke:#d6b071;opacity:1}.calling-page .tree-help{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:.75rem;background:#101b25}.calling-page .node-inspector{position:sticky;top:14px;padding:22px;background:linear-gradient(150deg,#263340,#121e29);border:1px solid #a694684d;border-top:2px solid var(--calling);border-radius:8px}.inspector-emblem{display:grid;place-items:center;width:60px;height:60px;margin-bottom:18px;border:1px solid #c1c7bb59;border-radius:12px;background:#0e1b26;color:var(--calling)}.inspector-emblem .ability-icon{width:38px;height:38px}.calling-page .node-inspector h2{margin:8px 0 14px;font-size:1.6rem;line-height:1.2}.calling-page .node-inspector p{line-height:1.6;font-size:.875rem}.calling-page .node-inspector .eyebrow{font-size:.6875rem;letter-spacing:.08em}.ability-trigger{background:#0e1c28;padding:12px;border-left:2px solid var(--calling);margin:18px 0}.ability-trigger strong{font-size:.625rem;letter-spacing:.07em;color:var(--calling)}.ability-trigger p{margin:6px 0 0}.ability-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.ability-stats dt{font-size:.6875rem;color:#99adbc}.ability-stats dd{font-size:.8125rem;margin:5px 0;color:#ecd8b0}.calling-page .node-inspector>button{white-space:normal;min-height:48px}.ready-paths button{display:block;width:100%;white-space:normal;margin:6px 0;text-align:left;font-size:.8125rem}.calling-page .node-inspector summary{font-size:.8125rem;color:#c5cfd6}.calling-page button:focus-visible,.calling-page select:focus-visible,.tree-viewport:focus-visible{outline:3px solid #9bdbfa;outline-offset:3px}
@media(max-width:1050px){.calling-page .tree-workspace{grid-template-columns:minmax(0,1fr) 270px}.skill-point-counter{padding:14px}.calling-heading{gap:16px}.ability-lineup{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.calling-heading{align-items:stretch;flex-direction:column;gap:18px}.skill-point-counter{padding:12px 18px}.skill-point-counter>strong{font-size:2rem}.calling-page .tree-workspace{grid-template-columns:minmax(0,1fr);gap:16px}.calling-page .node-inspector{position:static}.ability-card{padding:10px;gap:8px;min-height:88px}.ability-emblem{flex-basis:30px}.ability-card .ability-icon{width:27px;height:27px}.ability-card strong{font-size:.9375rem}.calling-page .tree-viewport{height:54vh;min-height:340px}.tree-view-switch{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.tree-view-switch button{padding:7px 5px;white-space:normal;line-height:1.25}.tree-map-tools{gap:4px}.tree-map-tools select{flex-basis:100%;max-width:100%!important}.tree-map-tools button[data-tree-focus]{flex:1}.calling-page .tree-toolbar{padding:9px}.calling-page .tree-help{font-size:.6875rem}.calling-page .node-inspector h2{font-size:1.5rem}}

/* Keep labels legible at minimum map zoom and under inherited button wrapping rules. */
.calling-page .node-type{white-space:nowrap;min-width:34px;line-height:1;height:auto}
.calling-page .tree-node.root .node-label{top:auto;bottom:calc(100% + 10px);margin-top:0}
.calling-page .tree-lane-title{padding:4px 7px;line-height:1.25}

/* /inventory-mobile.css */
/* One visible dialog layer, one scrolling body, and a reachable way back. */
/* Visual and simple: the painting and current stats lead; roll detail opens on demand. */
.inventory-dialog>.ornate.item-inspector{background:linear-gradient(145deg,#25221e,#151719 65%);border:1px solid #92754b;border-radius:10px;box-shadow:0 20px 70px #000b,inset 0 0 0 3px #0f1011}
.inventory-dialog .item-inspector .inventory-dialog-header,.inventory-dialog .item-inspector .inventory-primary-actions{background:#211f1b;border-color:#756044}
.inventory-dialog .item-inspector .inventory-scroll{padding:24px}
.inventory-dialog .item-detail-title{display:flex;flex-wrap:wrap;gap:22px;margin:0 0 22px;padding-bottom:22px;border-bottom:1px solid #78613b88;align-items:center}
.inventory-dialog .inventory-scroll .item-detail-title>.gear-icon{width:128px;height:128px;margin:0;border-radius:6px;box-shadow:0 7px 22px #0005}
.inventory-dialog .inventory-scroll .item-detail-title h2{font:1.8rem/1.2 Georgia,serif;color:#f3dfb9;margin:7px 0 10px;overflow-wrap:anywhere}
.inventory-dialog .item-detail-title .eyebrow{font:.76rem/1.5 system-ui;letter-spacing:.08em;color:var(--rarity,#d9b777);margin:0}
.inventory-dialog .item-kind{font:.9rem/1.5 system-ui;color:#d0c6b6;margin:0 0 4px}
.inventory-dialog .item-model-name{font:.76rem/1.5 system-ui;color:#afa590;margin:0}
.item-requirements{display:flex;gap:12px 24px;flex-wrap:wrap;margin:14px 0 0;font:.78rem/1.4 system-ui}
.item-requirements>div{display:grid;gap:3px}.item-requirements dt{color:#aaa18f}.item-requirements dd{margin:0;color:#eadbbe;font-weight:600}.item-requirements .item-equipped dd{color:#b3d4a2}
.inventory-dialog .gear-base{border:1px solid #68563c;background:#30291d55;border-radius:5px;padding:14px 16px;margin:12px 0}
.inventory-dialog .gear-base .gear-label{color:#b9a889;font:.73rem/1.5 system-ui;letter-spacing:.03em}.inventory-dialog .gear-base p{font:600 1rem/1.6 system-ui;color:#f0e3c8;margin:8px 0 0}.inventory-dialog .gear-base p.gear-gain{font:400 .8rem/1.5 system-ui;color:#b7cfaa}
.inventory-dialog .gear-affixes{display:grid;gap:0;padding:0;margin:16px 0;list-style:none}
.inventory-dialog .gear-affixes>li{padding:12px 0;margin:0;background:none;border:0;border-bottom:1px solid #6d60443f;border-radius:0;font:.95rem/1.5 system-ui;color:#e3d8c1}
.inventory-dialog .gear-affixes>li:first-child{border-top:1px solid #6d60443f}.inventory-dialog .affix-main strong{font-weight:500;color:#e9dec4}
.affix-roll-details{margin-top:3px}.affix-roll-details>summary{min-height:44px;align-content:center;cursor:pointer;color:#b9ab8e;font:.76rem/1.5 system-ui}.affix-roll-details small{display:block;color:#a9a699;line-height:1.6;margin:4px 0}.affix-roll-details meter{display:block;width:100%;height:8px;margin:8px 0}
.inventory-dialog .item-details>.small-note{font:.75rem/1.6 system-ui;color:#aaa18f}.inventory-dialog .item-details>.text-button{min-height:44px;padding:8px 0;color:#d8ba7a}
.inventory-dialog .item-details .unique-power{padding:14px 16px;border-left:2px solid #bb9458;background:#352b1b66;color:#eddcbb;line-height:1.65}
.inventory-dialog .item-details .az-actions{padding-top:14px;border-top:1px solid #78613b66;gap:10px}.inventory-dialog .item-details .az-actions button{min-height:44px}
.inventory-dialog .inventory-scroll>.item-details{padding:0;border:0;background:none;box-shadow:none}.inventory-dialog .item-detail-title h2{padding:0;border:0}.inventory-dialog .gear-affixes>li{padding:9px 0}.inventory-dialog .gear-affixes>li strong{font-weight:500}.inventory-dialog .affix-roll-details{padding:4px 12px;border:1px solid #75604466;border-radius:4px;background:#332b1e44}.inventory-dialog .affix-roll-details .gear-affix-rolls{list-style:none;margin:0;padding:0}.inventory-dialog .gear-affix-rolls>li{border-top:1px solid #6d604455;padding:12px 0;font:.8rem/1.6 system-ui}.inventory-dialog .gear-affix-rolls .mod-tier{display:inline-block;margin:6px 0;color:#c8b184;font-size:.72rem}.inventory-dialog .item-details>.text-button{margin:0;padding-block:8px;min-height:44px}
.inventory-dialog .item-details button{min-height:44px}.inventory-dialog .item-details .az-inline-form{padding-top:14px;margin-top:14px;border-top:1px solid #78613b66}
.inventory-dialog .item-inspector :is(button,summary):focus-visible{outline:2px solid #f2ce85;outline-offset:-2px}
@media(max-width:600px){.inventory-dialog .item-inspector .inventory-scroll{padding:16px}.inventory-dialog .inventory-scroll .item-detail-title{gap:14px;padding-bottom:16px;margin-bottom:16px}.inventory-dialog .inventory-scroll .item-detail-title>.gear-icon{width:88px;height:88px}.inventory-dialog .inventory-scroll .item-detail-title h2{font-size:1.35rem}.item-requirements{gap:10px 16px}.inventory-dialog .item-kind{font-size:.8rem}}
@media(max-width:360px){.inventory-dialog .inventory-scroll .item-detail-title{display:flex;gap:12px}.inventory-dialog .inventory-scroll .item-detail-title>.gear-icon{width:72px;height:72px}.inventory-dialog .inventory-scroll .item-detail-title h2{font-size:1.2rem}.inventory-dialog .item-model-name{font-size:.7rem}.item-requirements{gap:8px 12px}}
@media(max-width:760px){
 .mmo-shell .section-tabs[aria-label="Character sections"]{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;scrollbar-width:thin;min-height:50px;padding:0 8px 4px}
 .mmo-shell .section-tabs[aria-label="Character sections"]>button{flex:0 0 auto;min-height:44px;white-space:nowrap}
 .mmo-shell .equipment-page>.painted-page-heading{min-height:64px;padding:12px 16px;margin-bottom:12px}
 .equipment-page>.painted-page-heading .eyebrow{display:none}
 .equipment-page>.painted-page-heading h1{font-size:1.5rem;margin:0}
 .equipment-page .inventory-heading{margin:0;align-items:center}
 .equipment-page .inventory-heading h2{margin:0;font-size:1rem}
 .equipment-page .inventory-gold{margin:6px 0 8px}
 .equipment-page .salvage-card{margin-bottom:6px}
 .equipment-page .bag-layout-toolbar{margin:4px 0;padding-top:4px}
 .equipment-page .bag-layout-toolbar .checkbox-row{margin:0;min-height:44px;display:flex;align-items:center;gap:8px}
 .equipment-page [data-bag-status]{margin:6px 0 8px;font-size:.75rem}
}
.inventory-dialog{padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));overflow:hidden}
.inventory-dialog>.inventory-drawer,.inventory-dialog>.item-inspector{display:flex;flex-direction:column;min-width:0;width:min(620px,100%);max-width:100%;max-height:calc(100dvh - max(8px,env(safe-area-inset-top)) - max(8px,env(safe-area-inset-bottom)));padding:0;overflow:hidden}
.inventory-dialog-header{display:flex;flex:none;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid #806844;background:#172630;min-width:0}
.inventory-dialog-header h2{font-size:1.2rem;margin:0;min-width:0;overflow-wrap:anywhere}
.inventory-dialog-header>span{font-size:.75rem;color:#c4b58f;text-align:right}
.inventory-dialog-header button{min-height:44px;min-width:44px;white-space:normal;flex-shrink:0;margin:0}
.inventory-dialog-header .inventory-back{flex-shrink:1;text-align:left;display:flex;gap:8px;align-items:center}
.inventory-dialog-tabs{flex:none;min-width:0;padding:0 16px;background:#172630;border-bottom:1px solid #695b40}
.inventory-dialog-tabs .inventory-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:0}
.inventory-dialog-tabs .inventory-tabs>button:only-child{grid-column:1/-1}
.inventory-scroll{min-height:0;min-width:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:16px;scroll-padding-block:12px;-webkit-overflow-scrolling:touch}
.inventory-primary-actions{display:flex;flex:none;gap:10px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid #806844;background:#172630}
.modal-backdrop.inventory-dialog .inventory-primary-actions>button{flex:1;min-height:44px;min-width:100px;margin:0;border-color:#b69b61;color:#f2dca7}
.modal-backdrop.inventory-dialog .inventory-primary-actions>button:not(:disabled){background:linear-gradient(#bca16d,#957340);color:#10151e}
.modal-backdrop.inventory-dialog .inventory-dialog-header button{min-height:44px}
.inventory-scroll>.inventory-panel{padding:0;margin:0;border:0;box-shadow:none;background:none}
.inventory-scroll .inventory-panel .inventory-tabs{margin:0 0 14px}
.inventory-scroll .inventory-panel:not(.compact) .item-grid{grid-template-columns:repeat(10,minmax(44px,1fr))}
.inventory-scroll .item-detail-title{align-items:flex-start;min-width:0}
.inventory-scroll .item-detail-title>div,.inventory-scroll .item-details,.inventory-scroll .transfer-form{min-width:0;overflow-wrap:anywhere}
.inventory-scroll .item-detail-title h2{font-size:1.4rem;line-height:1.3}
@media(max-width:360px){.inventory-scroll .item-detail-title{display:block}.inventory-scroll .item-detail-title>.gear-icon{display:block;margin-bottom:12px}.inventory-scroll .item-detail-title>div{width:100%}}
.inventory-scroll .az-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.inventory-scroll .az-actions>button{min-width:0;white-space:normal;margin:0}
.inventory-scroll .transfer-form input{max-width:100%;min-width:0}
.inventory-scroll .transfer-form button{min-width:0;white-space:normal}
.inventory-scroll button:focus-visible{outline:2px solid #edcc91;outline-offset:-3px}
@media(max-width:760px){
 .mmo-shell .section-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible;gap:4px;padding:6px 10px}
 .mmo-shell .section-tab{min-width:0;min-height:44px;padding:8px;white-space:normal;line-height:1.35;text-align:center;overflow-wrap:anywhere}
 .inventory-dialog-header{padding:10px 12px;gap:8px}
 .inventory-dialog-tabs{padding-inline:12px}
 .inventory-scroll{padding:12px}
 .inventory-scroll .item-detail-title{gap:12px}
 .inventory-scroll .item-detail-title>.gear-icon{width:48px;height:48px}
 .inventory-scroll .inventory-panel:not(.compact) .item-grid{grid-template-columns:repeat(5,minmax(44px,1fr))}
}
@media(max-height:430px){.inventory-dialog-header{padding-block:6px}.inventory-scroll{padding-block:10px}}
.bag-layout-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0 6px;border-top:1px solid #b7975766;padding-top:12px}.bag-layout-toolbar button{min-height:44px}.bag-slot-grid .item-tile{touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.bag-slot-grid.is-arranging .item-tile{touch-action:none;cursor:grab}.bag-slot-grid.is-arranging{outline:1px solid #c5a260;outline-offset:5px}.bag-slot-grid .bag-drag-source{opacity:.25}.bag-slot-grid .bag-drop-target,.bag-slot-grid .bag-picked{outline:2px solid #ffdc89;outline-offset:-2px;background:#88703655!important}.bag-drag-ghost{position:fixed!important;z-index:99999!important;pointer-events:none!important;margin:0!important;opacity:.94;box-shadow:0 8px 22px #000a!important;border:2px solid #f0c97c!important;transform:scale(1.06)}.bag-slot-grid [data-bag-slot]:focus-visible{outline:2px solid #f1cf84;outline-offset:0}.salvage-rewards{display:flex;flex-wrap:wrap;gap:10px;padding:15px 0;border-block:1px solid #a58b5166}.salvage-rewards>strong{color:#f0cc78;width:100%;font-size:1.35rem}.salvage-rewards>span{color:#d5e4d4}
@media(max-width:760px){.inventory-panel .bag-slot-grid,.inventory-scroll .inventory-panel .bag-slot-grid{grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:5px}.bag-slot-grid .item-tile{min-width:0;width:100%;height:auto;aspect-ratio:1}.bag-slot-grid .item-tile .gear-icon{max-width:100%;max-height:100%}}

.bag-selection-toolbar{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.bag-selection-toolbar button{min-height:44px}.bag-selection-toolbar small,.bag-selection-toolbar [role=status]{flex-basis:100%}.bag-item-selected:after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;border-radius:inherit;background:rgba(255,216,106,.15);box-shadow:inset 0 0 0 2px #efd18b}.salvage-item-list{max-height:25dvh;overflow:auto;text-align:left}
/* Until Select items is pressed, only that button shows (all widths since 2026-10-07; new-player QA found four salvage buttons above an empty bag). */.bag-selection-toolbar:not(.is-selecting)>:not([data-selection-mode]){display:none}@media(max-width:480px){.inventory-panel:has(.bag-selection-toolbar:not(.is-selecting)) [data-bag-status]{display:none}}

/* Let enlarged text use the whole header instead of breaking item names into narrow columns. */
.inventory-dialog .inventory-scroll .item-detail-title>div{flex:1 1 10rem;min-width:0;width:auto}.inventory-dialog .inventory-scroll .item-detail-title>.gear-icon{flex:none}
@media(max-width:360px){.inventory-dialog .inventory-scroll .item-detail-title{flex-direction:column;align-items:flex-start}.inventory-dialog .inventory-scroll .item-detail-title>div{flex:none;width:100%}.inventory-dialog .inventory-scroll .item-detail-title h2{overflow-wrap:break-word}}

/* Party bag Sort: a pressed button shows the bag is sorted. */
.party-bag-sort[aria-pressed="true"]{box-shadow:inset 0 2px #e6c889;border-color:#bd995e}
/* 320-360 px: the three Character sections fit without scrolling, so the selected Skill tree tab is never cut off. */
@media(max-width:360px){.mmo-shell .section-tabs[aria-label="Character sections"]>button.section-tab{padding-inline:8px}}
/* Capped affix lines (public/equipment-view.js capTag/limitNote): what counts toward the cap reads normally, the part above it is greyed. */
.affix-cap-tag{color:#e3b866;font-weight:400;white-space:nowrap}.affix-limit{display:block;margin-top:2px;color:#d8c69b;font:.78rem/1.5 system-ui}.affix-excess{color:#8d877c}
/* Gem bag and material bag tabs (IRP_STORAGE_BAGS_VERSION, default off): room between the grid and the note under it. */
.special-bag-grid{margin-bottom:12px}
/* Materials wallet (IRP_MATERIAL_WALLET_VERSION, default off): one row per currency or material, icon, name and count; 44px tiles. */
.wallet-title{margin:14px 0 6px;font-size:1rem;color:#d2b576}.wallet-list{list-style:none;margin:0 0 8px;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px}.wallet-row{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:10px;padding:4px 8px;border:1px solid #b7975740;border-radius:6px}.wallet-row .item-tile{width:48px;height:48px;min-width:44px;min-height:44px;margin:0}.wallet-row span{overflow-wrap:anywhere}.wallet-row b{font-variant-numeric:tabular-nums}.wallet-note{margin:2px 0 8px}@media(max-width:400px){.wallet-list{grid-template-columns:minmax(0,1fr)}}

/* /wayfarer-ui.css */
/* Wayfarer: one hierarchy across the five destinations. Original paintings remain intact. */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.wayfarer-shell{--ink:#eee9df;--muted:#b4b4ad;--gold:#e6bb73;--panel:#22252b;--line:#434347;background:#17191f;color:var(--ink);font-family:system-ui,-apple-system,'Segoe UI',sans-serif}
.wayfarer-shell>.topbar{background:#15171cf7;border-bottom:1px solid #424146;box-shadow:none}
.wayfarer-shell .hero-hud strong{color:#f6eddd;font:600 1.05rem system-ui}.wayfarer-shell .hero-hud span,.wayfarer-shell .hero-hud small{color:#bfc0ba}.wayfarer-shell .hero-hud button{background:#272a30;border-color:#4b4a4c;color:#efdfbf;border-radius:8px}.wayfarer-shell .hero-hud .hud-skill-points{color:#efc37c}
.wayfarer-shell .exp-page{max-width:1500px;padding:24px clamp(14px,3vw,38px) 90px;margin:0 auto}
.wayfarer-shell .exp-heading{position:relative;display:flex;justify-content:center;min-height:112px;padding:22px 26px;margin:0 0 24px;border:1px solid #645442;border-left:4px solid #e3b775;border-radius:8px;background:linear-gradient(90deg,#252329 10%,#252329ef 40%,#25232955),url('/assets/evermarch/gateway-v1.webp') center 43%/cover;box-shadow:none;overflow:hidden}
.wayfarer-shell .exp-heading h1{color:#fff0d6;font:normal clamp(1.9rem,3vw,2.7rem)/1.15 Georgia,serif;overflow-wrap:anywhere}.wayfarer-shell .exp-heading .eyebrow{color:#e5bf85;font:600 .68rem/1.5 system-ui;letter-spacing:.17em;margin:0 0 7px}
.wayfarer-shell .section-tabs{background:#1d2026;border-bottom:1px solid #414249;gap:8px;padding:10px 28px}.wayfarer-shell .section-tab{background:#272a31;border:1px solid #42454f;border-radius:6px;color:#bfc2c8;font:500 .86rem system-ui;padding:8px 18px;white-space:normal}.wayfarer-shell .section-tab.selected{background:#e5bd80;color:#211d17;box-shadow:none;border-color:#f4d8a8;font-weight:700}
.wayfarer-shell .exp-panel,.wayfarer-shell .inventory-panel,.wayfarer-shell .ornate{background:#22252c;border:1px solid #44464e;border-radius:8px;box-shadow:none}.wayfarer-shell .ornate:before,.wayfarer-shell .ornate:after{display:none}
.wayfarer-shell .exp-panel h2,.wayfarer-shell .inventory-panel h2,.wayfarer-shell .ornate h2{font:600 1.08rem/1.4 system-ui;color:#f0dfc3;letter-spacing:0}.wayfarer-shell .exp-panel p,.wayfarer-shell .small-note{color:#c0c0b9;line-height:1.6}
.wayfarer-shell .secondary{background:#30333b;border:1px solid #595b64;box-shadow:none;border-radius:6px;color:#eee8dc;font:500 .88rem/1.4 system-ui;min-height:44px;white-space:normal}.wayfarer-shell .red-button{background:#e3b978;border:1px solid #f4d5a5;box-shadow:none;border-radius:6px;color:#251d13;font:700 .88rem/1.4 system-ui;letter-spacing:0;min-height:44px;white-space:normal}
.wayfarer-shell input:not([type=checkbox]),.wayfarer-shell select,.wayfarer-shell textarea{background:#16191f;border:1px solid #60616a;color:#f4eee4;font:400 1rem/1.45 system-ui;border-radius:6px;min-height:44px}.wayfarer-shell button:focus-visible,.wayfarer-shell summary:focus-visible,.wayfarer-shell textarea:focus-visible{outline:2px solid #ffe0a7;outline-offset:3px}
.wayfarer-shell .inventory-tabs>button.selected{background:#8c694332!important;color:#ffe2ac!important}.wayfarer-shell .item-tile.empty{background:#171a20}.wayfarer-shell .current-lesson{background:#292923;border:1px solid #5c5848;border-left:3px solid #c5b77c;border-radius:8px;box-shadow:none}.wayfarer-shell .current-lesson .eyebrow{color:#d8c68a}.wayfarer-shell .current-lesson h2{font-size:1.1rem}
.wayfarer-shell .town-panorama{border-radius:8px}.wayfarer-shell .renown-progress{background:#24272c;border:1px solid #45464d;border-radius:8px}.wayfarer-shell .mayor-conversation{background:#25262c;border:1px solid #46474d;border-radius:8px}.wayfarer-shell .town-roadmap{background:#20232a;border-radius:8px;padding:22px}.wayfarer-shell .town-roadmap li{box-shadow:none}.wayfarer-shell .town-roadmap h2{font:600 1.1rem system-ui}
.wayfarer-shell .npc-welcome{background:#25252b;border:1px solid #555049;border-radius:8px}.wayfarer-shell .npc-greeting h2{color:#f5dfba}.wayfarer-shell .zone-card{border:1px solid #57524d;border-radius:8px;background:#24262d;box-shadow:none}.wayfarer-shell .zone-copy{background:#24262d}.wayfarer-shell .challenge-grid>article{background:#191d24;border-color:#45474f;border-radius:6px}.wayfarer-shell .character-panel{background:radial-gradient(ellipse at 25% 30%,#52473855,transparent 60%),#22252c}.wayfarer-shell .quest-records{background:#22252c;border:1px solid #46474e;border-radius:8px;box-shadow:none}
.wayfarer-shell .node-inspector{background:#24262f;border:1px solid #625746;border-top:3px solid #e3b978;border-radius:8px}.wayfarer-shell .tree-toolbar{background:#252833;border-color:#4b4d58}.wayfarer-shell .tree-viewport{background:radial-gradient(ellipse,#31303f,#161922 75%)}
.nav-button .nav-copy strong{font-weight:600}.nav-button .nav-copy small{display:none}
.party-workspace .exp-heading{margin-bottom:16px}.party-overview{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 0 20px;border-bottom:1px solid #44464e;margin-bottom:20px}.party-status{display:flex;align-items:center;flex-wrap:wrap;gap:12px;color:#bfc0ba;font-size:.85rem}.party-count strong{font-size:1.5rem;color:#f2dab0}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid #556955;color:#bed4af;background:#303a2d;border-radius:5px}.status-pill:before{content:'';width:6px;height:6px;border-radius:50%;background:#b6d394}.party-shortcuts{display:flex;gap:8px;flex-wrap:wrap}
.party-roster-panel{display:grid;gap:0;background:#23262d;border:1px solid #4a4b52;border-radius:8px;overflow:hidden;margin-bottom:16px}.party-member{display:flex;align-items:center;gap:16px;padding:18px;border-bottom:1px solid #40434b;min-width:0}.party-member:last-child{border-bottom:0}.party-member .role-medallion{width:46px;height:46px;flex:0 0 46px;border:1px solid #b29a69;background:#403b2d;border-radius:10px;display:grid;place-items:center;color:#ecd09b;font:1.4rem Georgia}.party-member[data-role=Healer] .role-medallion{border-color:#8f9c72;background:#333d2e;color:#d2e5b4}.party-member[data-role=DPS] .role-medallion{border-color:#9d858d;background:#413139;color:#ecc2cf}.party-member-identity{flex:1;min-width:0}.party-member-identity h2{display:flex;gap:10px;flex-wrap:wrap;align-items:center;font:600 1rem/1.4 system-ui;color:#f3e6cd;margin:0 0 4px;overflow-wrap:anywhere}.party-member-identity p{font-size:.8rem;margin:0;color:#b5b9c0}.leader-label{font:600 .65rem/1 system-ui;letter-spacing:.04em;text-transform:uppercase;padding:4px 6px;border:1px solid #826c48;color:#e3bf88;border-radius:3px}.party-member-role{font-size:.78rem;color:#bdc4ca;max-width:45%;overflow-wrap:anywhere}.role-accepted{color:#b5d4aa}.role-pending{color:#f0c693}.party-member.companion{background:#1c20262e}
.wayfarer-shell .party-manage,.wayfarer-shell .party-records,.wayfarer-shell .party-help{padding:0;margin:0 0 12px;overflow:hidden}.party-manage>summary,.party-records>summary,.party-help>summary{min-height:60px;padding:17px 18px;cursor:pointer;color:#efdab8;font-weight:600;line-height:1.5}.party-manage>summary span,.party-records>summary span,.party-help>summary span{font-weight:400;color:#b9bab9;font-size:.78rem;margin-left:8px}.party-manage>:not(summary),.party-records>:not(summary),.party-help>:not(summary){margin:12px 18px 18px}.party-help>.party-preparation{margin:16px}.party-inline-note{padding:0 4px;color:#e5cda7}.party-manage-member{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;border-top:1px solid #494a4e;padding-top:16px}.party-invite{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.party-invite small{display:block;color:#b9babc}.party-code{letter-spacing:.08em;overflow-wrap:anywhere}
/* Chat is a stable, independent reading surface; secondary tools stay collapsed. */
.wayfarer-shell .chat-access{right:20px;bottom:20px;z-index:85}.wayfarer-shell .chat-access>button{display:flex;align-items:center;gap:9px;background:#e5bd80;color:#241d14;border-color:#f3d3a1;border-radius:10px;box-shadow:0 6px 20px #0006;padding:10px 16px;font-weight:700}.chat-unread,.chat-channels [data-chat-count]{background:#e7be79;color:#221a12;border-radius:12px;min-width:20px;padding:1px 5px;font-size:.7rem;text-align:center}.chat-access .chat-unread{background:#4c3440;color:#fff}
.wayfarer-shell .community-chat{position:fixed;right:20px;bottom:80px;width:min(430px,calc(100vw - 32px));height:min(650px,calc(100dvh - 110px));max-height:none;z-index:90;display:flex;flex-direction:column;min-height:0;padding:0;background:#1b1e25;border:1px solid #7c6a51;border-radius:12px;box-shadow:0 18px 60px #0009;overflow:hidden;color:#e9e6de}
.community-chat .chat-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid #46454c;background:#27272e;flex-shrink:0}.wayfarer-shell .chat-heading h2{font:600 1.1rem system-ui;color:#f5dfba;margin:0}.chat-heading h2 small{display:block;font:400 .66rem/1.5 system-ui;color:#b6c3af;margin-top:3px}.chat-heading button{padding:7px 12px}.chat-channels{display:grid;grid-template-columns:repeat(3,minmax(44px,1fr));flex-shrink:0;padding:6px 8px;gap:5px;border-bottom:1px solid #40424a;background:#21242c}.chat-channels>button{display:flex;align-items:center;justify-content:center;gap:6px;background:transparent;color:#c2c4cb;border:1px solid transparent;border-radius:6px;min-height:44px;font:600 .85rem system-ui}.chat-channels>button[aria-selected=true]{background:#4d4031;border-color:#a68450;color:#ffe0b0}
.chat-conversation{display:flex;flex:1;flex-direction:column;min-height:0;overflow:auto}.chat-destination{font-size:.72rem;color:#c4bda9;margin:0;padding:8px 14px;border-bottom:1px solid #373b43;flex-shrink:0;overflow-wrap:anywhere}.wayfarer-shell .chat-messages{height:auto;min-height:92px;flex:1;overflow:auto;overscroll-behavior:contain;margin:0;padding:8px 12px;border:0;scrollbar-width:thin;overflow-wrap:anywhere}.chat-messages .chat-message{display:grid;grid-template-columns:36px minmax(0,1fr);gap:6px;padding:4px 0;border:0;background:transparent}.chat-message>time{font:400 .65rem/2.75rem system-ui;color:#9ca2ad;margin:0}.chat-message>div{min-width:0}.chat-message p{font:400 .86rem/1.5 system-ui;margin:0 0 5px;color:#eeebe4;white-space:pre-wrap;overflow-wrap:anywhere}.chat-message .chat-name,.chat-author{display:inline-flex;align-items:center;min-height:44px;margin:0;padding:0 3px;font:600 .8rem system-ui;color:#edc689}.chat-message .chat-name{min-width:44px}.chat-message.own .chat-author{color:#b7c6e9}.chat-message.system .chat-author{color:#bddba4}.chat-message .chat-item{margin:4px 0;background:#292a27}.chat-message .chat-item summary{font-size:.8rem;padding:10px}.chat-message .chat-item p{font-size:.78rem}.chat-empty{font-size:.86rem;color:#b4b8c3;padding:16px 8px}
.community-chat #chatForm{flex-shrink:0;padding:10px 12px 8px;border-top:1px solid #46464e;margin:0}.community-chat #chatForm textarea{display:block;width:100%;min-height:58px;max-height:160px;padding:9px 10px;resize:vertical;line-height:1.4}.chat-compose-actions{display:flex;align-items:center;gap:8px;margin-top:8px}.chat-compose-actions>#chatCounter{flex:1;text-align:right;color:#a9aeb9;font-size:.7rem}.chat-compose-actions button{padding:7px 13px}.chat-input-help{font-size:.65rem;color:#a5abb4;margin:7px 0 0}.community-chat #chatError{font-size:.75rem;color:#edd0a2;min-height:0;margin:5px 0 0;line-height:1.4;overflow-wrap:anywhere}.community-chat #chatError:empty{display:none}.chat-attachment{margin-top:8px}.chat-attachment select{width:100%;margin-top:4px}.community-chat .chat-privacy{flex-shrink:0;max-height:42%;overflow:auto;padding:0 14px;border-top:1px solid #43464e;background:#24262e;font-size:.75rem}.chat-privacy summary{min-height:44px;padding:12px 0;cursor:pointer}.chat-privacy p{line-height:1.55;color:#bfc0bb}.chat-privacy>div{padding-bottom:12px}.chat-privacy form{display:flex;gap:8px;align-items:end}.chat-privacy form label{flex:1;min-width:0}.chat-privacy input{width:100%}
.chat-jump{flex-shrink:0;margin:4px 12px 8px;font-size:.8rem!important}.whisper-route{display:flex;gap:8px;padding:8px 12px 0;margin:0;flex-shrink:0}.whisper-route input{width:100%;min-width:0;flex:1}.chat-recent{display:flex;gap:5px;overflow:auto;padding:8px 12px 0;flex-shrink:0}.chat-recent button{flex-shrink:0;min-height:44px;background:#292c36;border:1px solid #555663;border-radius:6px;font-size:.75rem;padding:6px 10px}.chat-recent button[aria-pressed=true]{background:#4b3d4e;border-color:#b794ac}
.wayfarer-shell [hidden]{display:none!important}
@media(min-width:1180px){.wayfarer-shell{padding-left:206px}.wayfarer-shell>.topbar>nav{width:206px;padding:24px 14px;gap:8px;align-items:stretch;background:linear-gradient(#191a20 42%,#191a20c9),url('/assets/evermarch/gateway-v1.webp') center bottom/auto 70%;border-right:1px solid #52483b}.wayfarer-shell .nav-brand{margin-bottom:34px}.wayfarer-shell .nav-brand .wordmark{max-width:174px}.wayfarer-shell .nav-brand .brand-name{font-size:1.5rem}.wayfarer-shell>.topbar>nav .nav-button{flex-direction:row;justify-content:flex-start;text-align:left;gap:14px;padding:13px 14px;min-height:72px;color:#c9c7c1;background:#23242a;border:1px solid #3d3e45;border-radius:8px;font:500 .94rem system-ui}.wayfarer-shell>.topbar>nav .nav-button.active{background:#e1bb80;color:#221d16;border-color:#f0d0a0;box-shadow:none}.nav-button .nav-copy small{display:block;font:400 .66rem/1.4 system-ui;color:#b6b5b2;margin-top:5px}.nav-button.active .nav-copy small{color:#54442c}.wayfarer-shell>.topbar>nav .nav-button .icon{width:24px;height:24px}.wayfarer-shell .combat-grid{grid-template-columns:minmax(175px,17%) minmax(0,1fr) 258px}}
@media(min-width:1000px){.party-workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;column-gap:22px;align-content:start}.party-workspace>.exp-heading,.party-workspace>.party-overview,.party-workspace>.party-inline-note,.party-workspace>.party-loot{grid-column:1/-1}.party-workspace>.party-roster-panel{grid-column:1;grid-row:3/span 3;align-self:start}.party-workspace>.party-manage{grid-column:2;grid-row:3;align-self:start}.party-workspace>.party-records,.party-workspace>.party-help{grid-column:2}.party-workspace>.exp-panel:not(details):not(.party-loot){grid-column:1/-1}.party-workspace>.party-inline-note{grid-row:6}.party-status{gap:12px}.party-member{flex-wrap:wrap}.party-member-role{margin-left:62px;margin-top:-10px;max-width:100%}}
@media(max-width:999px){.party-overview{align-items:flex-start;flex-direction:column}.party-member-role{margin-left:auto}.party-shortcuts{width:100%}.party-shortcuts>button{flex:1}.party-manage>summary span,.party-records>summary span,.party-help>summary span{display:block;margin:3px 0 0 18px}}
@media(max-width:760px){.wayfarer-shell .exp-page{padding:14px 12px 28px}.wayfarer-shell .exp-heading{min-height:100px;padding:18px;margin-bottom:18px;border-radius:6px;background-position:center 40%}.wayfarer-shell .exp-heading h1{font-size:1.9rem}.wayfarer-shell>.topbar{padding:8px 12px;background:#17191f}.wayfarer-shell>.topbar>nav{background:#1d1f27;border-top:1px solid #7f6a4c;box-shadow:0 -6px 20px #0004}.wayfarer-shell>.topbar>nav .nav-button.active{background:#e5bd80;color:#251e15;box-shadow:none}.wayfarer-shell>.topbar>nav .nav-button{font-family:system-ui;border-radius:6px}.wayfarer-shell .section-tabs{padding:8px 12px;gap:6px}.wayfarer-shell .section-tab{padding:8px;font-size:.81rem}.wayfarer-shell .exp-panel{padding:16px}.wayfarer-shell .party-manage,.wayfarer-shell .party-records,.wayfarer-shell .party-help{padding:0}.party-member{padding:14px;gap:12px;flex-wrap:wrap}.party-member-identity{flex-basis:calc(100% - 60px)}.party-member-role{max-width:100%;margin:-6px 0 0 58px}.party-overview{gap:14px}.party-shortcuts button{font-size:.8rem!important}.party-status{gap:10px;font-size:.78rem}.wayfarer-shell .chat-access{right:max(12px,env(safe-area-inset-right));bottom:calc(84px + env(safe-area-inset-bottom))}.wayfarer-shell .chat-access>button{padding:8px 12px}.wayfarer-shell .community-chat{right:max(8px,env(safe-area-inset-right));left:max(8px,env(safe-area-inset-left));bottom:calc(84px + env(safe-area-inset-bottom));width:auto;height:min(640px,calc(100dvh - 110px));border-radius:10px;max-height:calc(100dvh - 100px)}.wayfarer-shell .community-chat.keyboard-open{top:calc(var(--chat-viewport-top,0px) + 8px);bottom:auto;height:calc(var(--chat-viewport-height,100dvh) - 16px);max-height:calc(var(--chat-viewport-height,100dvh) - 16px)}.community-chat .chat-input-help{display:none}.community-chat .chat-heading{padding:7px 12px}.community-chat .chat-privacy{max-height:35%}.wayfarer-shell .town-roadmap{padding:16px}}
@media(prefers-reduced-motion:reduce){.wayfarer-shell *{scroll-behavior:auto!important}}

.wayfarer-shell details.dev-panel>summary{min-height:44px;cursor:pointer;font:600 1rem/1.5 system-ui;color:#ead5b2;padding:6px 0}.wayfarer-shell details.dev-panel[open]>summary{margin-bottom:14px;border-bottom:1px solid #44464e;padding-bottom:12px}
/* Party page raid invitation row (IRP_RAID_INVITE_ROLE_VERSION, default off): its text sat flush against the card border because .party-invite{padding:9px 0} (party-recruitment.css) overrides the card padding of expansion.css. Only the gated row carries .raid-invite, so the ordinary invite row and the switch-off page are unchanged. Same side padding as next/post-patch-fixes P6 (9px 18px). Kept here, not in party-recruitment.css, whose appended rules are pinned to the landscape fix. */
.party-invite.raid-invite{padding:9px 18px}

/* /dungeon.css */
/* Prison Cellar candidate: readable parchment cartography and a following camera. */
.world-map-page{max-width:1600px;margin:auto;padding:24px;min-width:0}
.map-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}
.map-title h1{font:clamp(1.875rem,4vw,3rem)/1.1 Georgia,serif;color:#f2ddb4;margin:4px 0}.map-title .eyebrow{letter-spacing:.18em;color:#c29f68}
.map-key{display:flex;align-items:center;gap:8px;font-size:.75rem;color:#c5bba7}.map-key i{width:8px;height:8px;background:#e2c383;transform:rotate(45deg);margin-left:8px}.map-key .dungeon-key{background:#b96747}
.map-workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:20px;min-width:0}
.world-map{position:relative;isolation:isolate;overflow:hidden;border:1px solid #9d7843;border-radius:8px;background:#172a2c;box-shadow:0 18px 50px #0006;aspect-ratio:3/2;min-width:0}
.world-map-art{display:block;width:100%;height:100%;object-fit:cover}.map-cartouche{position:absolute;top:5%;left:5%;pointer-events:none;display:grid;gap:3px;text-shadow:0 2px 5px #000}
.map-cartouche span{font:clamp(14px,2.4vw,32px) Georgia,serif;letter-spacing:.13em;color:#f2dcab}.map-cartouche small{font:italic 12px Georgia,serif;color:#edddb7}
.map-pin{position:absolute;left:var(--pin-x);top:var(--pin-y);transform:translate(-50%,-50%);z-index:2;display:flex;align-items:center;gap:8px;min-height:44px;min-width:44px;padding:7px 10px;border:1px solid #d9b575;border-radius:5px;background:#1b211bea;color:#fff1cf;box-shadow:0 3px 12px #0008;text-align:left;cursor:pointer;max-width:170px}
.map-pin svg{width:25px;height:30px;fill:none;stroke:currentColor;stroke-width:1.5;flex-shrink:0}.map-pin span{font:700 14px Georgia,serif;display:grid;gap:3px}.map-pin small{font:10px Arial,sans-serif;color:#d6c9ac;white-space:nowrap}.map-pin:hover,.map-pin:focus-visible,.map-pin.selected{outline:2px solid #f0cb83;outline-offset:3px;background:#514128}.dungeon-pin{border-color:#d79b75;background:#3c221cf0}
.map-discovery{position:absolute;left:3%;right:3%;bottom:3%;padding:10px 12px;background:#172321ee;border:1px solid #92764c;border-radius:4px;color:#ead9b5;font-size:12px;line-height:1.5;text-align:center;pointer-events:none}.map-discovery>span{color:#e8bb64;margin-right:6px}
.map-destination,.map-invitation{border:1px solid #776142;background:linear-gradient(150deg,#252a28,#171d1d);border-radius:8px;padding:20px;min-width:0;box-shadow:0 10px 25px #0003}.map-destination>header{display:flex;align-items:flex-start;gap:12px;justify-content:space-between}.map-destination h2,.map-invitation h2{font:1.625rem/1.2 Georgia,serif;color:#ecd4a6;margin:4px 0 14px}.map-destination p,.map-invitation p{font-size:.875rem;line-height:1.6;color:#cec9ba}.map-destination .map-close{font:1.5rem Arial;min-width:44px;min-height:44px;padding:0;flex-shrink:0}.map-destination details{margin-top:16px;border-top:1px solid #75634455;padding-top:8px}.map-destination summary{min-height:44px;display:list-item;align-content:center;cursor:pointer;color:#e0c494;font-size:.875rem}.map-destination button,.map-invitation button{min-height:44px}.destination-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:14px 0;border-block:1px solid #90714b55}.destination-summary span{font-size:.625rem;display:grid;gap:5px;color:#c5b79b;text-transform:uppercase;letter-spacing:.04em}.destination-summary b{font:1.5rem Georgia,serif;color:#f4d59a}.cellar-route-note{padding-left:10px;border-left:2px solid #ae7d43}.cellar-loot-scroll{max-width:100%;overflow:auto}.cellar-loot table{width:100%;font-size:.75rem;border-collapse:collapse}.cellar-loot th,.cellar-loot td{padding:9px 6px;text-align:left;border-bottom:1px solid #75634466;overflow-wrap:anywhere}.cellar-loot thead{color:#d6b67d}.cellar-loot th:first-child{width:58%}.cellar-loot th{font-weight:400}.cellar-loot th small{display:block;color:#bdb29a}.cellar-loot .small-note{font-size:.75rem}.cellar-floor-list{padding-left:22px}.cellar-floor-list img{width:100%;height:auto;border-radius:4px;margin-top:12px}.cellar-floor-list h3{font-size:1rem;color:#ead3ac}.map-other-roads{margin-top:22px;border-top:1px solid #a785504d;padding-top:10px}.map-other-roads>summary{min-height:48px;align-content:center;cursor:pointer;color:#bda879}.map-other-roads>.exp-page{padding:12px 0}.map-other-roads>.exp-page>.exp-heading,.map-other-roads>.exp-page>.journey-goal{display:none}
.cellar-intro>section{width:min(540px,calc(100vw - 28px));max-height:calc(100dvh - 32px);overflow:auto;padding:30px;background:linear-gradient(140deg,#282924,#171b1c);border:1px solid #b68f56}.cellar-intro h2{font:2.125rem/1.15 Georgia,serif;color:#e9c18a}.cellar-intro p{line-height:1.65;color:#d1c8b8}.cellar-intro .eyebrow{color:#bf9d68}.cellar-intro button{min-height:48px}
.dungeon-battlefield{background:#12181a;isolation:isolate}.dungeon-battlefield .arena-background{filter:none;will-change:transform}.dungeon-battlefield .arena-vignette{background:radial-gradient(ellipse at center,transparent 45%,#09101177 100%)}.dungeon-battlefield .encounter-status{font-size:clamp(.875rem,2vw,1.375rem);max-width:calc(100% - 24px);text-align:center;padding:14px;background:#151b1aeb;border:1px solid #b19460;white-space:normal}.dungeon-battlefield .boss-result{max-height:calc(100% - 24px);overflow:auto;z-index:240}.dungeon-battlefield .boss-result h2{font-size:1.5rem}.dungeon-battlefield .boss-result p{font-size:.875rem;line-height:1.5}.minimap:has(svg){height:auto;aspect-ratio:3/2;background:#13191a}.minimap #minimap:has(svg){position:relative;height:100%;width:100%}.minimap svg{width:100%;height:100%;display:block}.cellar-quest{border-left:3px solid #c39355}.cellar-quest h2{font-family:Georgia,serif}
@media(min-width:1400px){.map-workspace{grid-template-columns:minmax(0,1fr) 370px}}
@media(max-width:1050px){.map-workspace{grid-template-columns:minmax(0,1fr)}.map-invitation{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:20px}.map-invitation h2,.map-invitation p{grid-column:1}.map-invitation button{grid-column:2;grid-row:2/4;align-self:center}.map-destination{max-width:none}.cellar-floor-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.map-destination>p,.cellar-loot>.small-note{max-width:80ch}.map-destination>.red-button{max-width:380px}}
@media(max-width:600px){.world-map-page{padding:14px 10px}.map-title{align-items:flex-start}.map-title .eyebrow{font-size:.5625rem;letter-spacing:.12em}.map-title h1{font-size:1.875rem}.map-key{font-size:.625rem;gap:3px;padding-top:8px}.world-map{aspect-ratio:3/2}.world-map-art{object-fit:cover}.city-pin{top:53%;left:32%}.dungeon-pin{left:59%}.map-cartouche{top:6%;left:6%}.map-cartouche small{display:none}.map-pin{gap:4px;padding:5px 6px;max-width:134px}.map-pin span{font-size:12px}.map-pin small{font-size:9px}.map-pin svg{width:20px;height:24px}.map-discovery{font-size:10px;padding:7px;line-height:1.4}.map-destination,.map-invitation{padding:16px}.map-invitation{display:block}.map-invitation button{width:100%}.map-destination h2{font-size:1.625rem}.cellar-floor-list{display:block}.cellar-intro>section{padding:22px}.cellar-intro h2{font-size:1.8125rem}.dungeon-battlefield{min-height:430px}.cellar-loot th,.cellar-loot td{padding:8px 4px}.map-workspace{gap:12px}}
@media(prefers-reduced-motion:reduce){.dungeon-battlefield .arena-background{will-change:auto}.map-pin{transition:none}}

.cellar-creatures article{display:flex;align-items:center;gap:12px;margin:12px 0}.cellar-creatures img{width:76px;height:96px;object-fit:contain;flex-shrink:0}.cellar-creatures h3{font:1rem Georgia,serif;color:#ead3ac;margin:0}.cellar-creatures article p{font-size:.75rem;margin:6px 0}

/* Conversations share the dungeon notice treatment, with contained mobile scrolling. */
.whiskey-dialog>section{width:min(640px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:20px;box-sizing:border-box}
.whiskey-dialog header{display:flex;align-items:center;justify-content:space-between;gap:12px}
.whiskey-dialog header button{min-width:44px;min-height:44px;font-size:1.375rem;flex-shrink:0}
.whiskey-conversation{display:grid;grid-template-columns:112px minmax(0,1fr);gap:20px;align-items:start;margin:16px 0}
.whiskey-conversation>img{width:112px;height:150px;object-fit:contain;align-self:end}
.whiskey-bubble{position:relative;background:#24201c;border:1px solid #8a704a;border-radius:14px;padding:18px;color:#f2e3cd;overflow-wrap:anywhere}
.whiskey-bubble:before{content:"";position:absolute;left:-9px;top:35px;width:16px;height:16px;background:#24201c;border-left:1px solid #8a704a;border-bottom:1px solid #8a704a;transform:rotate(45deg)}
.whiskey-bubble h2{font-size:1.5rem;margin:0 0 12px}.whiskey-bubble p{font-size:1rem;line-height:1.6;margin:0}
.whiskey-actions,.cellar-result-actions{display:flex;flex-wrap:wrap;gap:10px}.whiskey-actions{justify-content:flex-end}
.whiskey-actions button,.cellar-result-actions button{min-height:44px;white-space:normal;max-width:100%;overflow-wrap:anywhere}
.cellar-boss-timer{padding:12px 0;border-block:1px solid #635239;margin:14px 0}.cellar-boss-timer strong{color:#e9c98f;font-variant-numeric:tabular-nums}.cellar-boss-timer p{font-size:.8125rem;line-height:1.5;margin-bottom:0}
.dungeon-battlefield .boss-result:has(.cellar-result-actions){top:50%;max-height:min(calc(100% - 24px),calc(100dvh - 120px));overflow:auto;overscroll-behavior:contain}
@media(max-width:480px){.whiskey-dialog>section{padding:14px}.whiskey-conversation{grid-template-columns:64px minmax(0,1fr);gap:12px}.whiskey-conversation>img{width:64px;height:100px}.whiskey-bubble{padding:12px}.whiskey-bubble h2{font-size:1.3125rem}.whiskey-actions button,.cellar-result-actions button{flex:1 1 100%}}

.player-tombstone{position:absolute;left:0;top:0;transform:translate(-50%,-100%);text-align:center;pointer-events:none;filter:drop-shadow(0 4px 3px #000a)}.player-tombstone[hidden]{display:none}.player-tombstone svg{display:block;width:100%;height:auto}.tombstone-name{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);min-width:100px;max-width:160px;padding:4px;background:#172126ed;color:#e8e6d5;overflow-wrap:anywhere;font:12px/1.3 Arial,sans-serif}.tombstone-timer{position:absolute;left:0;right:0;bottom:16%;color:#d1f5ff;text-shadow:0 2px 3px #000;font:bold 19px Georgia,serif}.has-tombstone .model-wrap,.has-tombstone .unit-name,.has-tombstone .unit-cast{visibility:hidden}.has-tombstone .player-tombstone{visibility:visible}

/* Map legend on a 320 px phone (game text QA, 7 Oct): keep "City" and "Zone" whole. */.map-title .map-key{flex:none;white-space:nowrap}

/* First-fight card (public/dungeon-ui.js combatIntro). Not modal: it floats over the battlefield and the fight keeps going.
   No entrance animation: the battle screen redraws often, and the card is still for reduced-motion players. */
.combat-intro-card{position:fixed;z-index:240;left:50%;top:calc(env(safe-area-inset-top,0px) + max(92px,30vh));transform:translateX(-50%);width:min(340px,calc(100vw - 32px));padding:16px 18px;background:linear-gradient(140deg,#282924,#171b1c);border:1px solid #b68f56;border-radius:8px;box-shadow:0 12px 32px #000a}
.combat-intro-card h2{margin:0 0 10px;font:1.25rem/1.2 Georgia,serif;color:#e9c18a}
.combat-intro-card ul{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:9px}
.combat-intro-card li{display:flex;align-items:center;gap:11px;color:#e4dccb;font-size:.9375rem;line-height:1.35}
.combat-intro-card svg{flex:none;width:30px;height:30px;padding:5px;border-radius:50%;background:#e9c18a1a;fill:none;stroke:#e9c18a;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.combat-intro-card button{width:100%;min-height:44px}
/* WhiskeyJack's conversation portrait fills its column (13 Oct pass: a small figure in a large empty column). The painting is a square waist-up
   portrait, so it is cropped to the frame instead of shrunk into it; the row height still comes from the speech bubble. Phones put him above the bubble. */
.whiskey-conversation{grid-template-columns:clamp(150px,30%,190px) minmax(0,1fr);align-items:stretch}
.whiskey-conversation>img{align-self:stretch;width:100%;height:0;min-height:100%;object-fit:cover;object-position:45% 0;border:1px solid #8a704a;border-radius:12px;background:radial-gradient(110% 80% at 50% 18%,#3b3327,#15130f 78%);box-shadow:0 6px 16px #0007}
.whiskey-bubble{min-height:190px}
@media(max-width:480px){.whiskey-conversation{grid-template-columns:minmax(0,1fr);gap:14px}
.whiskey-conversation>img{height:150px;min-height:0;object-position:45% 14%}
.whiskey-bubble{min-height:0}
.whiskey-bubble:before{left:calc(45% - 8px);top:-9px;border-bottom:0;border-top:1px solid #8a704a}}

/* /town-map.css */
.town-map-page{padding:22px;max-width:1700px;margin:auto}.town-map-heading{display:flex;justify-content:space-between;gap:16px;align-items:center}.town-map-heading h1{margin:0 0 18px}.town-map-heading>span{color:#bdb49d}.town-map-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:18px}.town-map-layout>section{min-width:0}.town-viewport{position:relative;height:clamp(430px,65dvh,720px);overflow:hidden;border:1px solid #987844;border-radius:8px;background:#1e211e;touch-action:pan-y pinch-zoom;isolation:isolate}.town-world{position:absolute;width:2400px;height:1600px;transform-origin:0 0}.town-ground{position:absolute;inset:0;max-width:none;width:2400px;height:1600px;pointer-events:none}.town-npc{min-width:calc(44px / var(--town-scale,.65));min-height:calc(44px / var(--town-scale,.65));position:absolute;transform:translate(-50%,-100%);width:105px;height:155px;padding:0;background:none;border:0;box-shadow:none;display:flex;justify-content:center;align-items:end;overflow:visible}.town-npc:hover{filter:drop-shadow(0 0 5px #e6c887)}.town-npc-sprite{height:140px;width:90px;overflow:hidden;filter:drop-shadow(0 3px 2px #0009);pointer-events:none}.town-name{position:absolute;left:50%;bottom:151px;transform:translateX(-50%);width:190px;padding:5px 8px;border-radius:4px;background:#101b1eea;color:#f9e5b3;font:17px/1.2 Georgia,serif;white-space:normal;pointer-events:none}.town-name small{display:block;font:13px/1.5 Arial,sans-serif;color:#d4cbbb}.town-marker{position:absolute;bottom:209px;left:50%;transform:translateX(-50%);font:bold 44px/1 Georgia,serif;text-shadow:0 3px 2px #000,0 0 10px #000;pointer-events:none}.gold{color:#ffce55}.blue{color:#75caff}.town-hero{position:absolute;transform:translate(-50%,-100%);width:105px;height:150px;pointer-events:none;z-index:550}.town-hero-body{position:absolute;left:50%;bottom:0}.town-hero .unit-model{position:absolute;width:105px;height:140px;left:-52.5px;top:-140px;object-fit:contain;object-position:bottom;max-width:none;filter:drop-shadow(0 3px 2px #0009)}.town-hero>span{position:absolute;bottom:154px;left:50%;transform:translateX(-50%);max-width:230px;min-width:140px;background:#142229d9;color:#c2ecff;text-align:center;padding:4px;font-size:16px;overflow-wrap:anywhere}.town-route{position:absolute;inset:0;width:2400px;height:1600px;pointer-events:none}.town-route path{fill:none;stroke:#b4e1ed;stroke-width:4;stroke-dasharray:7 9;opacity:.7}.town-destination{position:absolute;width:26px;height:14px;border:3px solid #d9efff;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}.town-controls{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.town-controls button{min-height:44px;white-space:normal}.town-paths{padding:18px;border:1px solid #776546;border-radius:8px;background:linear-gradient(#222a2c,#101a20)}.town-paths h2{font-size:1.4375rem}.town-path{display:flex;align-items:center;gap:12px;width:100%;min-height:74px;text-align:left;margin-bottom:10px;padding:12px;background:#152229;border:1px solid #687064;border-radius:5px}.town-path>span:nth-child(2){flex:1;min-width:0}.town-path strong,.town-path small{display:block;overflow-wrap:anywhere}.town-path small{margin-top:5px;color:#b6c1bd;line-height:1.5}.town-path-marker{font:bold 1.8125rem Georgia,serif;min-width:22px;text-align:center}.town-marker-key{font-size:.75rem;line-height:1.5}.town-marker-key p{margin:8px 0}.town-marker-key b{font:1.25rem Georgia,serif;margin-right:8px}.town-paths>.red-button{width:100%;white-space:normal;min-height:44px;margin-top:12px}.town-growth{margin-top:18px;padding:14px;border:1px solid #5b6259;border-radius:5px}.town-growth summary{min-height:44px;cursor:pointer;align-content:center}.town-growth li{line-height:1.6;margin:12px 0}.town-tutorial>section{width:min(610px,calc(100vw - 28px));max-height:calc(100dvh - 32px);overflow:auto;padding:22px}.town-tutorial header{display:flex;justify-content:space-between;align-items:start;gap:16px}.town-tutorial header p{overflow-wrap:anywhere}.town-tutorial header button{flex-shrink:0;min-width:44px;min-height:44px}.town-tutorial p{font-size:1rem;line-height:1.6}.town-tutorial h2{font-size:1.5625rem}.town-demo{display:grid;justify-items:center;gap:6px;padding:18px;margin:18px 0;border:1px solid #897547;background:#111d22;border-radius:8px;text-align:center;color:#e9d8ad;overflow-wrap:anywhere}.town-demo>span:not(.town-demo-arrow){padding:10px;border:1px solid #4f6765;border-radius:5px;width:100%}.town-demo-arrow{color:#89cbd3}.town-tutorial-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.town-tutorial-actions button{min-height:44px;white-space:normal;overflow-wrap:anywhere}.whiskey-dialog header p{min-width:0;overflow-wrap:anywhere}
@media(max-width:1050px){.town-map-layout{grid-template-columns:minmax(0,1fr)}.town-paths{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.town-paths>h2,.town-paths>.eyebrow,.town-marker-key,.town-paths>.red-button{grid-column:1/-1}.town-path{margin:0}.town-viewport{height:500px}}
@media(max-width:600px){.town-map-page{padding:12px}.town-map-heading{display:block}.town-map-heading>span{display:none}.town-map-page .eyebrow{letter-spacing:.08em}.town-viewport{height:min(58dvh,480px);min-height:350px}.town-paths{padding:12px;grid-template-columns:minmax(0,1fr)}.town-controls button{flex:1 1 100px;font-size:.8125rem}.town-tutorial>section{padding:16px}.town-tutorial-actions button{flex:1 1 100%}}

.town-service-seal{display:grid;place-items:center;width:100px;height:100px;border:3px solid #b49761;border-radius:50%;background:radial-gradient(#344746,#14252b);color:#edd3a5;font:58px Georgia,serif;box-shadow:0 8px 8px #0008}.town-viewport[data-overview="true"]{height:auto;min-height:0;aspect-ratio:3/2}.town-paths{max-height:650px;overflow:auto}.town-path{min-height:58px;padding:10px;margin-bottom:8px}.town-paths h2{margin-top:0}.town-path small{font-size:.75rem}.town-viewport[data-overview="true"] .town-npc{width:120px;height:150px}.town-map-layout{grid-template-columns:minmax(0,1fr) 245px}@media(max-width:1050px){.town-map-layout{grid-template-columns:minmax(0,1fr)}.town-paths{max-height:none}}

.town-resident-sprite{display:block;width:auto;max-width:none;flex-shrink:0;object-fit:contain;object-position:bottom;pointer-events:none;filter:drop-shadow(0 3px 2px #0009)}

/* Residents stay identifiable without hovering. */
.town-name{opacity:1;font-size:20px;width:max-content;max-width:220px;padding:3px 7px;text-align:center}.town-name small{font-size:15px}.town-npc[data-town-kind="storage"] .town-name{bottom:75px;max-width:130px}.town-npc[data-town-kind="storage"] .town-name small{display:none}.town-npc:hover .town-name,.town-npc:focus-visible .town-name{opacity:1}.town-npc:focus-visible{outline:2px solid #f6d584;outline-offset:6px;border-radius:6px}.town-viewport[data-overview="true"] .town-npc{min-width:0;min-height:0;pointer-events:none}.town-service-seal{width:72px;height:88px;border-radius:5px;font-size:44px}

.town-hero{height:200px}.town-hero>.town-player-name{bottom:calc(167px*var(--town-hero-lift,1));min-width:0;max-width:220px;background:#142229bd;color:#f4eee4;font-size:18px;line-height:1.2;padding:3px 7px;border-radius:3px}.town-player-arrow{position:absolute;bottom:calc(151px*var(--town-hero-lift,1));left:50%;transform:translateX(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:9px solid #ed5353;filter:drop-shadow(0 1px 1px #000)}

.town-paths>.town-service-hint{grid-column:1/-1;margin:0 0 12px}
/* Name labels: town-map.js createLabelFit moves each one inside the view and clear of its neighbours (--label-dx/--label-dy, world pixels).
   View whole town keeps the names (they used to be hidden), counter-scaled to a readable on-screen size and without the role line. */
.town-npc .town-name{z-index:1;transform:translate(calc(-50% + var(--label-dx,0px)),var(--label-dy,0px))}
.town-viewport[data-overview="true"]{--town-label-px:13px}
.town-viewport[data-overview="true"] .town-npc .town-name{display:block;width:max-content;max-width:none;white-space:nowrap;font-size:calc(var(--town-label-px) / var(--town-scale,.38));line-height:1.2;padding:calc(1px / var(--town-scale,.38)) calc(5px / var(--town-scale,.38));border-radius:calc(3px / var(--town-scale,.38));box-shadow:0 0 0 calc(1px / var(--town-scale,.38)) #c9a86a66}
.town-viewport[data-overview="true"] .town-npc .town-name small{display:none}
.town-viewport[data-overview="true"] .town-hero>.town-player-name{width:max-content;max-width:none;font-size:calc(var(--town-label-px) / var(--town-scale,.38));padding:calc(1px / var(--town-scale,.38)) calc(5px / var(--town-scale,.38));border-radius:calc(3px / var(--town-scale,.38))}
.town-viewport[data-overview="true"] .town-marker{font-size:calc(var(--town-label-px) * 2.1 / var(--town-scale,.38))}
@media(max-width:540px){.town-viewport[data-overview="true"]{--town-label-px:11px}}
/* Shared Town hub (IRP_TOWN_HUB_VERSION): other players on the square. Same figure box as your own hero, a cooler name plate, a small walking bob. */
.town-visitor{z-index:540}
.town-visitor>.town-player-name{background:#10202ccc;color:#cfe3f4;font-size:16px}
.town-visitor[data-walking="true"] .unit-model{animation:town-visitor-walk .46s ease-in-out infinite}
@keyframes town-visitor-walk{0%,100%{translate:0 0}50%{translate:0 -7px}}
.town-hub-note{margin-left:auto;align-self:center;color:#bdb49d}
@media (prefers-reduced-motion:reduce){.town-visitor[data-walking="true"] .unit-model{animation:none}}

/* /frontier.css */
.calling-page .tree-viewport{touch-action:pan-x pan-y pinch-zoom;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.frontier-portrait{display:block;flex:0 0 96px;width:96px;height:96px;overflow:hidden}
.frontier-route{display:block;width:100%;height:auto;border-radius:8px}
.frontier-warning{padding:12px;border:1px solid #b77d3d;background:#372a1bdd;color:#ffe0a6;border-radius:8px}
.frontier-dialog>section{width:min(620px,calc(100vw - 24px));max-height:calc(100dvh - 32px);overflow:auto;padding:24px;box-sizing:border-box}
.frontier-dialog header{display:flex;justify-content:space-between;gap:12px;align-items:center}
.frontier-dialog button{min-height:44px;white-space:normal;margin:5px 5px 5px 0}
.frontier-side{border-top:1px solid #796b4a;margin-top:20px;padding-top:12px}
.frontier-repeat{color:#d4edbe;font-weight:600}
.frontier-pin>span:first-child{font-size:1.5rem;color:#aee3de}
.boss-chamber-marker{position:absolute;z-index:3;pointer-events:none;transform:translate(-50%,-100%);max-width:230px;text-align:center;padding:8px 12px;color:#ffe4b6;background:#15151be8;border:1px solid #a78b58;border-radius:8px;font-size:13px}
.boss-chamber-marker strong{display:block}
#frontierBattleWarning{font-size:.8125rem;padding:6px 10px;margin:4px 0}
@media(max-width:760px){.hero-hud{flex-wrap:wrap}.hero-hud>div:first-child{flex:1 1 8rem;min-width:8rem}.hero-hud button{flex-shrink:0}}
@media(max-width:600px){.frontier-dialog>section{padding:16px}.frontier-pin{min-width:44px}.frontier-pin span small{font-size:.625rem}.frontier-pin>span:last-child{max-width:104px}.frontier-portrait{flex-basis:72px;width:72px;height:72px}}
@media(max-width:600px){.world-map{width:100%;min-width:0;aspect-ratio:auto;height:340px}.world-map .map-pin{left:var(--pin-x);top:var(--pin-y)}.world-map .city-pin{--pin-x:24%!important;--pin-y:65%!important}.world-map [data-map-cellar]{--pin-x:27%!important;--pin-y:23%!important}.world-map [data-map-zone="sablewater-mill"]{--pin-x:73%!important;--pin-y:39%!important}.world-map [data-map-zone="ashen-bell-foundry"]{--pin-x:73%!important;--pin-y:71%!important}}

/* /balance-ui.css */
/* Compact navigation and combat workspace. */
.nav-account{margin-top:auto;width:100%;padding-top:16px;border-top:1px solid #595047;display:grid;gap:10px}
.nav-account .account-block{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.nav-account .icon-button{min-width:44px;min-height:44px;justify-content:center;align-items:center}.nav-account .account-name,.nav-account .dev-badge{display:none}.nav-inventory{width:100%}
.mmo-shell>.topbar>.wordmark{display:none}.mmo-shell>.topbar{height:0;min-height:0;padding:0;border:0;position:relative}.mmo-shell .section-tabs{min-height:60px}
.portrait-frame{position:relative}.portrait-xp{position:absolute;top:0;right:0;padding:2px 4px;font:700 .6875rem/1.4 system-ui;color:#fff;background:#142b3ee8;border-radius:0 0 0 3px}
.party-info .hud-bar.resource{height:18px;margin-top:4px}.hud-bar.resource em{font-size:10px;line-height:16px;z-index:1;color:#fff;text-shadow:0 1px 2px #000}
.mmo-shell .arena-column{display:grid;grid-template-rows:auto minmax(350px,1fr) auto;height:auto;min-height:0}.mmo-shell .arena-heading{min-height:0;padding:7px 12px}.mmo-shell .zone-badge{padding:0}.mmo-shell .zone-badge>span{font-size:1rem}.mmo-shell .zone-badge>small{font-size:.75rem}
.mmo-shell .battle-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;padding:8px;background:#101b22}.mmo-shell .actionbar{display:flex;gap:8px;justify-content:flex-end;align-items:center;min-height:44px;height:auto;width:auto;flex:0 1 auto;border:0;padding:0;margin:0;background:none;box-shadow:none}.mmo-shell .actionbar .bar-wing,.mmo-shell .actionbar .bar-gem{display:none}.mmo-shell .action-key{min-width:44px;min-height:44px}.mmo-shell .begin-button{min-height:44px;margin:0}
.mmo-shell #defenseBar{display:flex;gap:8px;padding:0;border:0;margin:0;flex:1 1 auto;background:none}.mmo-shell #defenseBar[hidden],.mmo-shell #defenseBar button[hidden]{display:none}.mmo-shell #defenseBar button{min-height:44px;flex:1;padding:5px 9px}.mmo-shell .focus-order{margin:0;padding:0;flex:1 1 100%}
.mmo-shell .battlefield{min-height:350px;height:100%;contain:layout paint}.unit{will-change:transform}.dungeon-battlefield .arena-background{will-change:transform}
.companion-picker{display:grid;gap:12px}.companion-picker label{display:grid;gap:5px}.companion-picker select{width:100%;min-height:44px;font-size:1rem}.companion-picker p{margin:0}
@media(min-width:1180px){.mmo-shell>.topbar>nav{justify-content:flex-start}.mmo-shell .combat-grid{height:calc(100dvh - 60px);min-height:620px;grid-template-columns:minmax(205px,19%) minmax(0,1fr) 220px}.mmo-shell .right-rail{padding:10px}.mmo-shell .party-rail{padding:10px}.mmo-shell .party-card{padding:8px}.mmo-shell .party-info>b{font-size:.875rem}}
@media(min-width:761px) and (max-width:1179px){.mmo-shell>.topbar{height:auto}.mmo-shell>.topbar>nav{position:relative;display:flex;align-items:center;padding:8px;gap:6px}.nav-account{margin:0 0 0 auto;width:auto;border:0;padding:0;display:flex;align-items:center}.nav-inventory{width:auto}.nav-account .icon-button{padding:8px}.nav-button{min-width:64px}.mmo-shell .combat-grid{min-height:650px}}
@media(max-width:760px){.mmo-shell>.topbar{height:58px}.mmo-shell .nav-account{position:fixed;inset:0 0 auto 0;height:58px;margin:0;padding:7px 12px;background:#15171cf5;display:flex;justify-content:space-between;align-items:center;border:0;z-index:55}.nav-account .account-block{justify-content:flex-start}.nav-inventory{width:auto;min-height:44px}.mmo-shell .combat-grid{height:auto;min-height:0}.mmo-shell .arena-column{grid-template-rows:auto minmax(400px,60dvh) auto}.mmo-shell .battle-controls{justify-content:center}.mmo-shell .party-card{min-width:0}.mmo-shell .section-tabs{min-height:56px}.mmo-shell>.topbar>nav>.nav-account{grid-column:auto}}
.battlefield .unit{left:0;top:0}
.dungeon-battlefield .hero-unit .unit-name{display:none}.dungeon-battlefield .enemy-unit:not(.rare-unit):not(.boss-unit):not(.focus-target) .unit-name{width:52px!important;left:-26px!important}.dungeon-battlefield .enemy-unit:not(.rare-unit):not(.boss-unit):not(.focus-target) .unit-name>b,.dungeon-battlefield .enemy-unit:not(.rare-unit):not(.boss-unit):not(.focus-target) .unit-name>small,.dungeon-battlefield .enemy-unit:not(.rare-unit):not(.boss-unit):not(.focus-target) .unit-status{display:none}.dungeon-battlefield .enemy-unit:not(.rare-unit):not(.boss-unit):not(.focus-target) .unit-cast{width:52px!important;left:-26px!important;height:5px!important;top:9px!important;min-height:0;padding:0;border-radius:2px}.dungeon-battlefield .enemy-unit:not(.rare-unit):not(.boss-unit):not(.focus-target) .unit-cast>span{display:none}.party-cast-status{font:.6875rem/1.4 system-ui;color:#ebd5a5;margin-top:5px}.party-cast-status[hidden]{display:none}
.tavern-roster{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.tavern-candidate{margin:0!important;min-width:0}.tavern-candidate>header{display:flex;align-items:center;gap:12px}.tavern-candidate h2{margin:0}.tavern-candidate header p{margin:5px 0}.tavern-candidate details>summary{cursor:pointer;min-height:44px;padding:10px 0}.tavern-invite{display:flex;align-items:center;gap:10px;min-height:48px;padding:10px;margin-top:12px;background:#28383d;border:1px solid #667064;border-radius:6px;cursor:pointer}.tavern-invite input{width:24px;height:24px;flex-shrink:0}.companion-skills{padding:0;list-style:none}.companion-skills li{padding:8px 0;border-bottom:1px solid #3b4549}.companion-skills span{display:block;font-size:.8rem;color:#b1c0c6;margin-top:4px}.tavern-confirm{grid-column:1/-1;border-top:1px solid #75664d;padding:16px 0}.tavern-confirm button{min-height:48px}
@media(max-width:760px){.tavern-roster{grid-template-columns:minmax(0,1fr)}}

/* /mobile-farming.css */
/* Keep combat first on phones, followed by portraits and the combat log. */
@media(max-width:760px){
 .mmo-shell .combat-grid{display:flex;flex-direction:column;height:auto;min-height:0}
 .mmo-shell .arena-column{order:0;width:100%;min-width:0}
 .mmo-shell .party-rail{order:1;width:100%;min-width:0}
 .mmo-shell .right-rail{order:2;width:100%;min-width:0}
 .mmo-shell .combat-log{margin-top:12px}
}

/* /chat-panel.css */
/* Integrated community panel and measured mobile navigation clearance. */
.wayfarer-shell .nav-account .chat-access{position:static;inset:auto;width:100%;z-index:auto}
.wayfarer-shell .nav-account .chat-access>button{width:100%;min-height:44px;justify-content:center;border-radius:6px;box-shadow:none;background:#27343c;color:#f4dfbb;border:1px solid #6a6254;font:600 .85rem/1.4 system-ui;padding:9px 12px}
.wayfarer-shell .community-chat{inset:12px 12px 12px auto;width:min(440px,calc(100vw - 24px));height:auto;max-height:none;border:1px solid #6c6555;border-radius:16px;background:#101e26;box-shadow:-16px 0 64px #0009;font:400 .9rem/1.5 system-ui;isolation:isolate}
.community-chat .chat-heading{padding:18px 20px;background:linear-gradient(120deg,#273b43,#172832);border-bottom:1px solid #536064}
.chat-eyebrow{font:700 .63rem/1.4 system-ui;letter-spacing:.13em;color:#bea87f;margin:0 0 6px}
.wayfarer-shell .chat-heading h2{font:500 1.65rem/1.15 Georgia,serif;color:#ffe7be}
.chat-heading h2 small{display:inline-block;margin-left:12px;color:#afd2bf;font:400 .72rem system-ui}
.community-chat .chat-heading>button{align-self:center;min-width:44px;min-height:44px;border-radius:50%;background:#ffffff08;border-color:#667178;color:#edf0ea;font:400 1.15rem system-ui;padding:8px}
.community-chat .chat-channels{background:#14242d;border:0;padding:12px 14px 4px;gap:6px}
.community-chat .chat-channels>button{border-radius:8px;color:#adbdc4;font-size:.82rem;min-height:44px}
.community-chat .chat-channels>button[aria-selected=true]{color:#ffe3b6;background:#3f4238;border-color:#8d805e}
.community-chat .chat-conversation{overflow:hidden;flex:1;min-height:0}
.community-chat .chat-destination{padding:8px 18px 12px;margin:0;color:#a7b8bf;font-size:.72rem;border-bottom:1px solid #ffffff0c;flex-shrink:0}
.community-chat .chat-messages{padding:12px 16px;min-height:48px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#53676d transparent;overflow:auto;flex:1}
.community-chat .chat-message{display:flex;flex-direction:column;align-items:flex-start;position:relative;margin:0 0 12px;padding:0;border:0;gap:0}
.community-chat .chat-message>time{align-self:flex-end;position:absolute;right:10px;top:14px;color:#9eb0b8;font-size:.63rem;pointer-events:none}
.community-chat .chat-message>div{width:100%;min-width:0;background:#20323d;border:1px solid #344751;border-radius:12px 12px 12px 3px;padding:0 12px 12px}
.community-chat .chat-message.own{padding-left:22px}.community-chat .chat-message.own>div{background:#293e3d;border-color:#405b52;border-radius:12px 12px 3px 12px}
.community-chat .chat-message.system>div{background:transparent;border-style:dashed;color:#b9c3be}
.community-chat .chat-name,.community-chat .chat-author{display:flex;align-items:center;min-height:44px;max-width:calc(100% - 54px);padding:3px 0;margin:0;border:0;color:#f1d3a1;background:transparent;font:600 .78rem/1.4 system-ui;text-align:left;overflow-wrap:anywhere}
.community-chat .chat-message p{font-size:.85rem;line-height:1.55;margin:0;white-space:pre-wrap;overflow-wrap:anywhere;color:#e1e8e8}
.community-chat .chat-empty{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px 16px;color:#9eafb8;gap:12px}
.chat-empty>span{font-size:2rem;color:#ad9670}.chat-empty>strong{font:500 1.4rem Georgia,serif;color:#e4d6bc}.community-chat .chat-empty p{margin:0;max-width:28ch;font-size:.85rem;line-height:1.6}
.community-chat #chatForm{background:#14262e;border-top:1px solid #40505a;padding:12px 14px 10px;max-height:60%;overflow:auto;overscroll-behavior:contain}
.community-chat #chatForm textarea{background:#0c1a22;border:1px solid #58676c;border-radius:10px;min-height:70px;max-height:120px;resize:vertical;padding:12px;font:400 1rem/1.4 system-ui;color:#edf2ee}
.community-chat .chat-compose-actions{gap:8px;flex-wrap:wrap}.community-chat button,.community-chat select,.community-chat input{min-height:44px}.community-chat .chat-compose-actions button{border-radius:8px;font-size:.8rem}
.community-chat .chat-compose-actions [type=submit]{background:#e4bc7f;color:#251d13;min-width:78px;border-color:#e4bc7f}
.community-chat .chat-privacy{background:#10212a;border-color:#40505a;padding:0 16px;color:#aebdc4}.community-chat .chat-privacy summary{font-weight:600}.community-chat .chat-privacy form{flex-wrap:wrap}
.community-chat .whisper-route{flex-shrink:0}.community-chat .chat-recent{flex-shrink:0;max-height:100px;overflow:auto}.community-chat .chat-jump{flex-shrink:0;margin:4px 14px}
@media(min-width:761px) and (max-width:1179px){.mmo-shell>.topbar>nav{flex-wrap:wrap}.mmo-shell>.topbar>nav>.nav-account{grid-column:1/-1;flex:1 1 100%;width:100%;justify-content:flex-end;flex-wrap:nowrap}.nav-account .account-block{flex-shrink:0}.wayfarer-shell .nav-account .chat-access{width:auto}.nav-button{flex:1 1 64px}}
@media(max-width:760px){
 html.has-community-chat{overflow:hidden}
 body.has-mmo-shell #toast{bottom:calc(var(--mobile-nav-height,84px) + 12px);pointer-events:none}
 .mmo-shell{padding-bottom:calc(var(--mobile-nav-height,84px) + 20px)}
 .mmo-shell>.topbar{height:var(--mobile-utility-height,58px)}
 .mmo-shell>.topbar>nav{overflow:visible!important;height:auto;grid-template-columns:repeat(5,minmax(0,1fr));background:#17212a;z-index:80}
 .mmo-shell>.topbar>nav .nav-button{min-width:0;width:100%;height:auto;min-height:60px;white-space:normal;overflow-wrap:anywhere}
 .mmo-shell>.topbar>nav .nav-button .nav-copy{min-width:0;width:100%;max-width:100%;white-space:normal}
 .mmo-shell>.topbar>nav .nav-button .nav-copy strong{display:block;max-width:100%;overflow-wrap:anywhere;line-height:1.2}
 .mmo-shell .nav-account{height:auto;min-height:58px;padding:calc(7px + env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) 7px max(8px,env(safe-area-inset-left));gap:6px;background:#17212a;flex-wrap:wrap}
 .nav-account .account-block{gap:3px}.nav-account .icon-button{padding:6px}.nav-inventory{padding:8px;font-size:.8rem}
 .wayfarer-shell .nav-account .chat-access{width:auto;flex:0 1 auto}.wayfarer-shell .nav-account .chat-access>button{padding:8px;gap:5px;font-size:.8rem}
 .wayfarer-shell .community-chat{inset:0 0 var(--mobile-nav-height,84px);height:auto;width:auto;border-radius:0;border-width:0 0 1px;max-height:none;padding-top:env(safe-area-inset-top);z-index:90;background:#121b21}
 .community-chat .chat-heading{padding:10px 14px}.chat-eyebrow{font-size:.6rem}.wayfarer-shell .chat-heading h2{font-size:1.4rem}.chat-heading h2 small{font-size:.68rem}
 .community-chat .chat-channels{padding-top:8px}.community-chat .chat-privacy{max-height:35%}
 .wayfarer-shell .community-chat.keyboard-open{top:var(--chat-viewport-top,0px);bottom:auto;height:var(--chat-viewport-height,100dvh);max-height:none;padding-top:0}
 .community-chat.keyboard-open .chat-eyebrow,.community-chat.keyboard-open .chat-destination,.community-chat.keyboard-open .chat-privacy{display:none}
 .community-chat.keyboard-open .chat-heading{padding:4px 12px}.community-chat.keyboard-open #chatForm textarea{min-height:44px;height:44px}.community-chat.keyboard-open #chatForm{padding:8px 12px;max-height:65%}
}
@media(max-height:500px){
 .community-chat .chat-eyebrow,.community-chat .chat-destination,.community-chat .chat-input-help{display:none}
 .community-chat .chat-heading{padding:4px 12px}.wayfarer-shell .chat-heading h2{font-size:1.2rem}
 .community-chat .chat-channels{padding:4px 12px}.community-chat #chatForm{padding:6px 12px;min-height:0;max-height:60%;flex:0 0 auto}
 .community-chat #chatForm textarea{min-height:44px;height:44px;max-height:70px;padding:8px}
 .community-chat .chat-privacy{flex-shrink:0;max-height:30%;overflow:auto}
}

.community-chat .chat-message.unique-drop>div>p{color:#ff7474;font-weight:800}
.community-chat .chat-message.unique-drop>div{border-color:#b74949}
/* A found Tier 0 item (announcement kind tier0-drop): the Herald line in gold, where a Unique is red. Words carry the meaning; the colour only marks it. */
.community-chat .chat-message.tier0-drop>div>p{color:#f0ce83;font-weight:800}
.community-chat .chat-message.tier0-drop>div{border-color:#c9a24a}
/* A forged Legendary weapon (announcement kind legendary-forged): the Herald line in the Legendary amber, a little larger. */
.community-chat .chat-message.legendary-forged>div>p{color:#ffb85a;font-weight:800;font-size:1.02em;text-shadow:0 0 8px #ff8c2a55}
.community-chat .chat-message.legendary-forged>div{border-color:#e09a3c;background:linear-gradient(90deg,#3a230f66,transparent)}

.community-chat .chat-item>summary{min-height:44px;box-sizing:border-box;padding:12px 0;cursor:pointer;overflow-wrap:anywhere}

/* /combat-portraits.css */
html{scrollbar-gutter:stable}
/* Text determines bar height so browser text enlargement cannot crop health.
   The fill stays behind the label and never changes the battlefield budget. */
.mmo-shell .party-info .hud-bar{height:auto;min-height:0}
.mmo-shell .party-info .hud-bar>i{position:absolute;inset:0 auto 0 0;height:auto;z-index:0}
.mmo-shell .party-info .hud-bar em{position:relative;inset:auto;display:block;z-index:1;line-height:1.25;min-height:1.25em;padding:1px 2px;white-space:normal;overflow-wrap:anywhere}
.mmo-shell .path-party-card .portrait-cast{height:auto;min-height:28px}
.mmo-shell .path-party-card .portrait-effect{height:auto;min-height:22px}
/* Casts remain with actor identities, leaving the painted battlefield clear. */
.portrait-cast{position:relative;isolation:isolate;display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:26px;margin-top:5px;padding:3px 5px;border:1px solid #586362;background:#111c22;color:#aab8bd;font:.6875rem/1.4 Arial,sans-serif;overflow:hidden;border-radius:3px}
.portrait-cast>i{position:absolute;inset:0 auto 0 0;background:#8a6830;opacity:.85;z-index:-1}
.portrait-cast.casting{color:#fff4d9;border-color:#b9a06c}
.portrait-cast.healing>i{background:#386746}
.portrait-cast-name{min-width:0;overflow-wrap:anywhere}
.portrait-cast-time{flex:none;font-variant-numeric:tabular-nums}
.mmo-shell .party-card .portrait-frame{display:block;flex:none}
.mmo-shell .party-info{min-width:0;flex:1}
/* The scene has its own viewport budget: changing casts, status chips, names or
   pack counts must never resize the battlefield and its following camera. */
.mmo-shell .arena-column{grid-template-columns:minmax(0,1fr);grid-template-rows:auto clamp(350px,calc(100vh - 300px),1100px) auto;grid-template-rows:auto clamp(350px,calc(100svh - 300px),1100px) auto;align-content:start}
.mmo-shell .combat-grid{height:auto}
@media(min-width:1180px){.mmo-shell .party-rail{max-height:calc(100svh - 60px)}}
.enemy-level{display:block;color:#f1cf88;font:700 .6875rem/1.4 Arial,sans-serif;font-variant-numeric:tabular-nums;margin-bottom:2px}
.enemy-card .portrait-effects{display:flex;align-content:flex-start;height:54px;min-height:54px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.enemy-card .portrait-effects:empty{display:flex}

.mmo-shell .battle-controls{min-width:0;max-width:100%}
.enemy-roster{flex:1 0 100%;width:100%;min-width:0;max-width:100%;align-self:stretch}
.enemy-roster-heading{display:flex;justify-content:space-between;gap:8px;margin:0 0 5px;color:#d9bf87;font-size:.6875rem}
.enemy-roster-heading small{color:#b7c7c9;font:inherit}
.enemy-portraits{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,155px),1fr));gap:7px;padding:2px 2px 7px}
.enemy-card{min-width:0;padding:5px;border:1px solid #606254;border-radius:5px;background:#16252b}
.enemy-card.focused{border-color:#f2c86e;box-shadow:inset 0 0 0 1px #f2c86e}
.enemy-card.fallen .enemy-portrait{filter:grayscale(1);opacity:.55}
.enemy-card .enemy-identity{display:flex;align-items:center;gap:6px;width:100%;min-height:52px;padding:0;border:0;background:transparent;color:#f4ddaa;text-align:left;border-radius:2px}
/* A party member cannot pick the focus target, so the button is disabled; a living enemy must not take the faded look of a defeated one. */
.shell .enemy-card:not(.fallen) .enemy-identity:disabled{opacity:1;cursor:default}
.enemy-identity>span{flex:1;min-width:0}
.enemy-identity strong{display:block;font:.75rem/1.3 Georgia,serif;overflow-wrap:anywhere}
.enemy-identity small{display:block;font:.625rem/1.4 Arial,sans-serif;color:#d5deda;margin:3px 0}
.enemy-portrait{display:block;flex:none;width:46px;height:52px;object-fit:cover;background:#0b151d;border:1px solid #a28b5e;border-radius:3px}
.enemy-health{display:block;height:5px;background:#342c2c;border:1px solid #746453;overflow:hidden}
.enemy-health i{display:block;height:100%;width:100%;background:#c65b45}
.portrait-effects{display:flex;flex-wrap:wrap;gap:3px;margin-top:4px}
.portrait-effects:empty{display:none}
.portrait-effect-time{font-variant-numeric:tabular-nums;display:inline-block;min-width:2.4em;text-align:right}
.portrait-effect{font:.625rem/1.5 Arial,sans-serif;padding:1px 4px;border:1px solid #79624e;border-radius:3px;background:#382824;color:#ffe0c5;overflow-wrap:anywhere}
.portrait-effect.buff{background:#183b31;border-color:#557b5d;color:#d4f4d6}
.tavern-candidate .tavern-portrait{display:block;flex:none;width:72px;height:72px;object-fit:cover;border:1px solid #c4a36e;border-radius:6px;background:#122026}
.tavern-candidate header>div{min-width:0;overflow-wrap:anywhere}
.mmo-shell .battle-controls.has-enemy-roster .actionbar{align-self:center;z-index:1}
.bestiary-card .beast-image .enemy-portrait{width:144px;height:164px;object-fit:cover;margin:16px auto;border-radius:8px}
@media(max-width:760px){
 .mmo-shell .arena-column{grid-template-rows:auto clamp(260px,38vh,360px) auto;grid-template-rows:auto clamp(260px,38svh,360px) auto}
 .mmo-shell .battlefield{min-height:0;height:100%}
 .mmo-shell #partyCards{grid-template-columns:repeat(2,minmax(0,1fr))}
 .mmo-shell .party-card{flex-wrap:wrap}
 .mmo-shell .party-card .portrait-frame{width:44px;height:72px}
 .enemy-roster{flex-basis:100%;width:100%}
 .enemy-portraits{grid-template-columns:repeat(2,minmax(0,1fr))}
 .enemy-card{min-width:0;max-width:none}
 .enemy-card .enemy-identity{flex-wrap:nowrap;min-height:44px;gap:5px}
 .enemy-card .enemy-portrait{width:34px;height:40px}
 .enemy-identity>span{flex-basis:0}
 .enemy-card .portrait-cast{min-height:22px;font-size:.6875rem;margin-top:3px;padding:2px 4px}
 .enemy-card .portrait-effect{font-size:.625rem;padding:0 3px}
 .mmo-shell .battle-controls.has-enemy-roster .actionbar{width:100%;flex-basis:100%;justify-content:flex-end;flex-wrap:wrap}
 .mmo-shell .battle-controls .action-key{flex-direction:row;gap:5px;padding:4px 6px}
 .mmo-shell .battle-controls .action-key .skill-icon{width:28px;height:28px}
 .mmo-shell .battle-controls .begin-button{flex:1;max-width:220px}
 .enemy-roster-heading{font-size:.75rem}
 .portrait-cast{font-size:.75rem;min-height:28px}
 .portrait-effect{font-size:.6875rem}
 .enemy-identity strong{font-size:.75rem}
 .tavern-candidate header{align-items:center}
}
@media(max-width:360px){
 .enemy-portraits{grid-template-columns:minmax(0,1fr)}
 .enemy-identity strong{overflow-wrap:break-word}
 .enemy-card .portrait-effects{height:auto;min-height:54px;max-height:8em}
}
/* Simple battle (GAPS D3, simpleBattle() in app.js): below level 10 the combat meter and the XP and gold per hour fold behind one Meter button.
   Below the desktop width, where the party frames sit under the fight, the same row shows your own health above the battlefield. */
.combat-grid.meter-collapsed #damageMeter,.combat-grid.meter-collapsed #adventureRates{display:none}.combat-grid.meter-collapsed .arena-heading.ex-bar>#adventureRates.ex-rates{display:none}
.battle-simple-row{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:6px;text-align:left}
.combat-grid.simple-battle .zone-badge:not(.ex-zone){display:flex;flex-direction:column;align-items:center}.battle-simple-row{order:1;align-self:stretch}.arena-heading.ex-bar .battle-simple-row{grid-column:1/-1;grid-row:9;margin-top:2px}
.battle-simple-row .battle-hero-health{flex:1;min-width:0;height:24px;margin:0}
.battle-simple-row .battle-hero-health em{font:600 .75rem/22px var(--ui);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 6px}
.battle-simple-row .battle-meter-toggle{flex:none;min-height:44px;min-width:76px;padding:0 14px}
@media(min-width:1180px){.battle-simple-row .battle-hero-health{display:none}.combat-grid.simple-battle .zone-badge{position:relative}.combat-grid.simple-battle .battle-simple-row{position:static;justify-content:center;margin:6px 0 0}.combat-grid.simple-battle .battle-simple-row .battle-meter-toggle{min-height:36px;padding:0 16px}.combat-grid.simple-battle .arena-heading.ex-bar .battle-simple-row{position:static;margin-top:2px}}
.action-key[data-action="taunt"][hidden]{display:none!important}
/* Second fix (14 Oct): in a zone fight the Meter toggle moves into the action row (public/field-view.js), beside Leave expedition and Combat
   review. On wide screens the health bar in its old row is hidden, so the emptied row is hidden too; on phones the health bar keeps the full width. */
@media(min-width:1180px){.combat-grid.simple-battle .battle-simple-row.meter-moved{display:none}}
.shell .combat-grid .field-action-controls>.battle-meter-toggle{min-width:76px}
/* Second fix (14 Oct): between packs the Enemies panel had only its heading over a blank box. renderActorNodes() in app.js empties the list
   when no enemy is on the field, so the empty list shows one quiet line instead. */
.enemy-portraits:empty::before{content:'No enemies in sight. The next pack appears as your party moves on.';grid-column:1/-1;display:block;padding:10px 12px;border:1px dashed #76614080;border-radius:6px;background:#0d151cb3;color:#b7c7c9;font:500 .8125rem/1.4 var(--ui,system-ui);text-align:center}
/* Party health is green, turning red below 35% (enemies keep their red bars). */
.hud-bar.health>i{background:linear-gradient(#8ee05c,#3f993b)}.hud-bar.health>i.low{background:linear-gradient(#fb4027,#b81714)}

/* /handbook.css */
.handbook{max-width:1350px;margin:auto;min-width:0}.handbook-header{padding:28px 0;border-bottom:1px solid #766448}.handbook-header h1{font:clamp(1.75rem,3.2vw,3rem)/1.18 Georgia,serif;color:#f2d29b;margin:14px 0}.handbook-header>p{max-width:700px;color:#c1cecc;line-height:1.65}.handbook-layout{display:grid;grid-template-columns:minmax(190px,260px) minmax(0,1fr);gap:28px;padding-top:24px}.handbook-index{align-self:start;position:sticky;top:16px;max-height:calc(100dvh - 45px);overflow:auto;background:#101d23;border:1px solid #586056;border-radius:8px;padding:15px}.handbook-index h2{font-size:1.125rem;margin:0 0 12px}.handbook-index summary{min-height:44px;cursor:pointer;display:flex;align-items:center;border-bottom:1px solid #34464b;padding:8px 0}.handbook-index a{display:block;min-height:44px;padding:10px 8px;color:#cfddd9;font:.875rem/1.5 Arial,sans-serif;text-decoration:none;overflow-wrap:anywhere}.handbook-index a:hover,.handbook-index a:focus-visible{background:#273b40;color:#ffe2ac}.handbook-content{min-width:0}.handbook .guide-search{display:grid;gap:10px;font-weight:700}.handbook input[type=search]{width:100%;min-height:48px;box-sizing:border-box;font-size:1rem;padding:12px;background:#0c171e;color:#f4e6cf;border:1px solid #98825f;border-radius:6px}.handbook-popular{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 22px;align-items:center}.handbook-popular>span{flex-basis:100%;color:#adbfbe;font-size:.8125rem}.handbook-popular a,.handbook-button{display:inline-flex;align-items:center;min-height:44px;padding:9px 12px;border:1px solid #667066;border-radius:5px;text-decoration:none;color:#f4d6a4;background:#203036;font-size:.875rem;box-sizing:border-box}.handbook-count{color:#a8bab7;font-size:.8125rem}.handbook .handbook-article{background:#142127;border:1px solid #4e615e;border-radius:8px;margin:0 0 14px;overflow:hidden;scroll-margin-top:75px}.handbook .handbook-article>summary{display:block;padding:18px;cursor:pointer;min-height:44px;position:relative}.handbook-article>summary:after{content:'+';position:absolute;right:16px;top:17px;font:1.375rem Georgia;color:#ddb97c}.handbook-article[open]>summary:after{content:'−'}.handbook-category{color:#abbdaf;font:.6875rem/1.5 Arial,sans-serif;text-transform:uppercase;letter-spacing:1px}.handbook-article h2{font:1.3125rem/1.35 Georgia,serif;margin:6px 25px 7px 0;color:#f1d39f}.handbook-preview{display:block;max-width:72ch;color:#b9cbc8;font-size:.875rem;line-height:1.6}.handbook-article[open] .handbook-preview{display:none}.handbook-answer{padding:0 18px 18px!important;max-width:none!important;line-height:1.75;font-size:1rem;color:#d5dcd5;overflow-wrap:anywhere}.handbook-short{padding:14px;background:#253c39;border-left:3px solid #d3b57a;border-radius:0 4px 4px 0;color:#f3e4c5}.handbook-answer>p{max-width:76ch;margin:0 0 16px}.handbook-share{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 14px}.handbook-share button{min-height:44px;white-space:normal}.handbook-related{font-size:.875rem}.handbook a,.guide-chat-link{color:#efcc8e;text-underline-offset:3px}.handbook-table{overflow:auto;max-width:100%;margin:16px 0}.handbook-table table{border-collapse:collapse;width:100%;font-size:.875rem}.handbook-table th,.handbook-table td{text-align:left;padding:10px;border-bottom:1px solid #455754;vertical-align:top}.handbook-table th{background:#20342f}.guide-chat-link{display:inline-flex;align-items:center;min-height:44px;max-width:100%;padding:6px 10px;background:#2b3a32;border:1px solid #93815b;border-radius:5px;overflow-wrap:anywhere;box-sizing:border-box}.handbook-standalone{margin:0;background:#0b151c;color:#e8dfca;font:1rem/1.6 Arial,sans-serif}.handbook-standalone *{box-sizing:border-box}.handbook-standalone .handbook{padding:20px 30px 50px}.handbook-standalone button{font:inherit;cursor:pointer;background:#263b3d;color:#f6dfb9;border:1px solid #897b60;border-radius:5px;padding:10px 14px}.handbook-standalone .handbook-top{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 30px;border-bottom:1px solid #5b503e}.handbook-top a{color:#e9c48a;min-height:44px;display:inline-flex;align-items:center}.handbook :focus-visible,.handbook-top :focus-visible{outline:3px solid #f3d28b;outline-offset:3px}.handbook .handbook-index details{margin:0}
@media(max-width:760px){.handbook-layout{grid-template-columns:minmax(0,1fr);gap:16px}.handbook-index{position:static;max-height:none;padding:10px 14px}.handbook-index h2{margin:5px 0}.handbook-header{padding:18px 0}.handbook-standalone .handbook{padding:14px 16px 35px}.handbook-standalone .handbook-top{padding:10px 16px}.handbook-answer{padding:0 14px 14px!important}.handbook .handbook-article>summary{padding:14px}.handbook-article h2{font-size:1.25rem}.handbook-popular a{flex:1 1 145px}.handbook-share>*{flex:1 1 130px}.handbook-table table{min-width:450px}}

/* Search-first reference: categories on the landing page, one answer at a time. */
.handbook{max-width:1180px}.handbook-header{padding:16px 0 20px;margin-bottom:22px}.handbook-header h1{font-size:2rem;margin:8px 0}.handbook-header>p{margin:6px 0}.handbook .guide-search{margin:0}.handbook .guide-search>span{font-size:.875rem;color:#d5c6a7}.handbook-popular{margin:14px 0 24px}.handbook-popular>span{flex-basis:auto;margin-right:4px}.handbook-categories{display:grid;gap:12px}.handbook-category-card{background:linear-gradient(110deg,#202831,#131d23);border:1px solid #716447;border-radius:9px;overflow:hidden}.handbook-category-card>summary{display:flex;align-items:center;gap:14px;padding:16px;min-height:76px;box-sizing:border-box;cursor:pointer;list-style:none}.handbook-category-card>summary::-webkit-details-marker{display:none}.handbook-category-card>summary>.handbook-category-label{flex:1;min-width:0}.handbook-category-card strong{display:block;color:#edcf92;font-size:1rem;line-height:1.4;letter-spacing:.03em}.handbook-category-card small{display:block;color:#b8c3cb;font-size:.8125rem;line-height:1.5;margin-top:3px}.handbook-category-icon{display:grid;place-items:center;width:40px;height:40px;flex:none;border:1px solid #a18a55;border-radius:50%;background:#38352b;color:#f0d397;font-size:1.5rem}.handbook-category-count{color:#bfb28f;font-size:.8125rem}.handbook-category-card>summary:after{content:'+';color:#dcc082;font-size:1.375rem}.handbook-category-card[open]>summary:after{content:'−'}.handbook-topic-links{display:flex;gap:8px;flex-wrap:wrap}.handbook-category-card>.handbook-topic-links{padding:0 16px 16px}.handbook-button{font:.875rem/1.4 system-ui;white-space:normal;overflow-wrap:normal;word-break:normal;background:#10191f;border-color:#5b5946}.handbook-button:hover,.handbook-search-result:hover{border-color:#c6a668;background:#25342f}.handbook-search-result{display:grid;gap:7px;padding:18px;margin-bottom:12px;background:#172229;border:1px solid #59604f;border-radius:7px;text-decoration:none;min-height:44px}.handbook-search-result>strong{font:1.3125rem/1.4 Georgia;color:#f1d49b}.handbook-search-result>span:last-child{font:.875rem/1.6 system-ui;color:#c0cccb;max-width:90ch}.handbook-breadcrumb{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 18px;color:#bfc6bf;font-size:.8125rem;line-height:1.5}.handbook-breadcrumb button{padding:10px 12px;min-height:44px;background:#20312e;border:1px solid #857354;border-radius:5px;color:#f3d493;font:inherit;cursor:pointer}.handbook-breadcrumb strong{color:#e0c894;font-weight:500}.handbook .handbook-article{background:#142027}.handbook-article>header{padding:24px 24px 0}.handbook-article>header h2{font:1.8125rem/1.25 Georgia;margin:8px 0 18px;overflow-wrap:normal}.handbook-short{font-size:1rem;line-height:1.65;margin:0 0 24px}.handbook-answer{padding:0 24px 24px!important;overflow-wrap:normal;word-break:normal}.handbook-section{padding:20px 0;border-bottom:1px solid #40504e}.handbook-section h3,.handbook-related h3{font:1.3125rem/1.4 Georgia;color:#e2c692;margin:0 0 12px}.handbook-section p,.handbook-section li{font:.9375rem/1.8 system-ui;color:#d5dcd5;max-width:85ch;margin:0 0 14px}.handbook-section ul{padding-left:24px}.handbook-section .handbook-topic-links{margin-top:16px}.handbook-table{border:1px solid #526052;border-radius:5px}.handbook-table th,.handbook-table td{padding:14px;line-height:1.6;overflow-wrap:normal;word-break:normal}.handbook-table tr:nth-child(even){background:#1c2b31}.handbook-table td:first-child{color:#ecd5a7}.handbook-example{padding:20px;margin:0 0 10px;background:#10201f;border:1px solid #69816d;border-radius:7px}.handbook-example figcaption{font:.9375rem/1.5 system-ui;color:#e2d3ab;margin-bottom:18px}.handbook-time-row{display:grid;grid-template-columns:minmax(135px,1fr) minmax(100px,2fr) 65px;gap:14px;align-items:center;margin:14px 0;font:.875rem/1.5 system-ui}.handbook-time-row>div{height:13px;background:#081311;border-radius:3px;overflow:hidden}.handbook-time-row i{display:block;height:100%;background:linear-gradient(90deg,#6ca68f,#c4d1a1)}.handbook-time-row b{text-align:right;font-variant-numeric:tabular-nums;color:#f1d7a3}.handbook-heal-bar{display:flex;height:24px;border:1px solid #7f9b83;border-radius:4px;overflow:hidden}.handbook-heal-bar span{background:#79bc92}.handbook-heal-bar i{background:repeating-linear-gradient(135deg,#455451,#455451 5px,#303f3c 5px,#303f3c 10px)}.handbook-legend{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font:.8125rem/1.5 system-ui;margin-top:10px;color:#d5ddcd}.handbook-flow{list-style:none;display:flex;flex-wrap:wrap;gap:20px;margin:0;padding:0}.handbook-flow li{flex:1 1 115px;position:relative;padding:12px;background:#203c35;border:1px solid #69806d;border-radius:5px;font:.875rem/1.6 system-ui;color:#e2dfc6}.handbook-flow li:not(:last-child):after{content:'→';position:absolute;right:-18px;color:#dec68c}.handbook-related{margin-top:24px}.handbook-category-card summary:focus-visible{outline-offset:-4px}
@media(max-width:600px){.handbook-header h1{font-size:1.75rem}.handbook-popular>span{flex-basis:100%}.handbook-popular a{flex:1 1 120px}.handbook-category-card>summary{padding:13px;gap:10px}.handbook-category-card strong{font-size:.9375rem}.handbook-category-card small{font-size:.75rem}.handbook-category-card>.handbook-topic-links{padding:0 12px 12px}.handbook-category-icon{width:34px;height:34px;font-size:1.3125rem}.handbook-article>header{padding:18px 14px 0}.handbook-article>header h2{font-size:1.5625rem}.handbook-answer{padding:0 14px 18px!important}.handbook-example{padding:14px}.handbook-time-row{grid-template-columns:minmax(0,1fr) 55px;gap:7px}.handbook-time-row>span{grid-column:1/-1}.handbook-time-row>div{grid-column:1}.handbook-time-row>b{grid-column:2}.handbook-flow{display:grid;gap:20px}.handbook-flow li:not(:last-child):after{content:'↓';right:50%;bottom:-21px}.handbook-table table{min-width:0}.handbook-table th,.handbook-table td{padding:10px 8px;min-width:7em}.handbook-search-result{padding:15px}.handbook-search-result>strong{font-size:1.25rem}}
/* Fantasy handbook: short answers first, detailed rules only inside a topic. */
.handbook-standalone{background:#0b111d;color:#dddcd3}.handbook .handbook-header{position:relative;min-height:170px;padding:30px 28px;margin-bottom:24px;isolation:isolate;border:0;border-bottom:1px solid #a68d5755;background:linear-gradient(90deg,#111b2bf5 15%,#111b2bc9 55%,#111b2b33),url('/assets/far-roads/overview-north-v1.webp') center 40%/cover}.handbook .handbook-header h1{font:400 clamp(1.8125rem,4vw,2.6875rem)/1.15 Georgia,serif;color:#efe4c9;letter-spacing:.02em}.handbook .handbook-header>p{max-width:65%;color:#c3c8ce;font-size:.875rem}.handbook-header .eyebrow{color:#d0b47e!important;letter-spacing:.13em;font-size:.625rem!important}.handbook-categories{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.handbook-category-card{border:1px solid #9b89582c;background:linear-gradient(120deg,#1a2638,#121c2c);border-radius:4px}.handbook-category-card>summary{position:relative;isolation:isolate;min-height:104px;padding:18px 16px;overflow:hidden}.handbook-category-painting{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.12;z-index:-1;mask-image:linear-gradient(90deg,transparent,#000)}.handbook-category-icon{width:42px;height:42px;border:0;background:transparent;color:#d1b780}.handbook-category-icon svg{width:30px;height:30px}.handbook-category-count{font-size:.6875rem;color:#a2acb8;white-space:nowrap}.handbook-category-card strong{color:#e3d6b8;font:500 1.0625rem/1.25 Georgia}.handbook-category-card small{color:#a8b3c2;font-size:.75rem}.handbook-category-card[open]{grid-column:1/-1}.handbook-category-card[open]>summary{min-height:82px;border-bottom:1px solid #9b89582c}.handbook-category-card>.handbook-topic-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;padding:8px 16px 16px}.handbook-category-card .handbook-button{border:0;border-bottom:1px solid #9b895820;background:transparent;border-radius:0;min-height:44px;padding:11px 10px;font-size:.8125rem;color:#d3d8dc}.handbook .handbook-button:hover,.handbook .handbook-button:focus-visible{background:#c7a96a12;color:#f1d49e}.handbook-button{background:#131f31;border-color:#9b895840;color:#dfc797}.handbook .handbook-article{border:0!important;background:transparent!important;box-shadow:none!important}.handbook .handbook-article>header{padding:8px 0 0}.handbook .handbook-article>header h2{font:400 clamp(1.5rem,3vw,2.0625rem)/1.25 Georgia;margin:8px 0 18px}.handbook .handbook-short{background:#b3996010;border-color:#c1a46a;padding:14px 18px;font-size:1rem;max-width:85ch}.handbook .handbook-answer{padding:0!important;max-width:100%!important}.handbook .handbook-section{border-color:#9b895830;padding:20px 0}.handbook .handbook-section h3{font:400 1.25rem/1.4 Georgia;color:#d9c599}.handbook .handbook-section p,.handbook .handbook-section li,.handbook-answer>p{font:.875rem/1.7 system-ui;color:#ced3da;max-width:85ch}.handbook .handbook-example{background:#152236;border:1px solid #7289a33d;border-radius:4px;margin:16px 0;padding:18px}.handbook-flow li{background:none;border:0;border-left:2px solid #bda574;padding:6px 12px;color:#e1d5b7}.handbook-table{border:0;border-top:1px solid #9b895850;border-radius:0}.handbook-table th{background:#c7b07a0b;color:#d8c7a3}.handbook-table td,.handbook-table th{border-color:#9b895830;padding:10px 12px;font-size:.8125rem}.handbook-table tr:nth-child(even){background:#a0b9da06}.handbook .handbook-contents{display:flex;flex-wrap:wrap;gap:8px 18px;padding:8px 0 16px;border-bottom:1px solid #9b895830}.handbook-contents a{font-size:.75rem;color:#b7c4d6}.handbook-section{scroll-margin-top:80px}.handbook-support{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #9b895840;margin-top:28px;padding:16px 0;gap:15px;font:.8125rem system-ui}.handbook-support .handbook-button{border:0;background:none;padding:0}.handbook-support a{min-height:44px;display:inline-flex;align-items:center}.handbook-catalog{margin:18px 0;border:1px solid #a68d5744;border-radius:4px}.handbook-catalog>summary{padding:14px;color:#e0c894;cursor:pointer;font:.9375rem/1.4 system-ui}.handbook-catalog .unique-guide-catalog{padding:14px}.handbook-search-result{background:#131f30;border-color:#9b89582c;border-radius:4px;padding:14px 18px;gap:4px}.handbook-search-result>strong{font-size:1.25rem}.handbook-search-result>span:last-child{font-size:.8125rem;line-height:1.5}.discord-community-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;margin:12px 0;min-height:44px;gap:8px}
@media(max-width:760px){.handbook-categories{grid-template-columns:1fr}.handbook-category-card>.handbook-topic-links{grid-template-columns:repeat(2,minmax(0,1fr))}.handbook .handbook-header{padding:22px 18px;min-height:145px}.handbook .handbook-header>p{max-width:90%}.handbook-category-card>summary{min-height:86px}.handbook .handbook-answer{padding:0!important}}
@media(max-width:420px){.handbook-category-card>.handbook-topic-links{grid-template-columns:1fr}.handbook-category-card>summary{padding:14px 10px;gap:9px}.handbook-category-icon{width:30px}.handbook-category-count{font-size:.625rem}.handbook-category-card strong{font-size:1rem}.handbook .handbook-header h1{font-size:1.875rem}.handbook-short{padding:12px!important;font-size:.875rem!important}.handbook .handbook-table th,.handbook .handbook-table td{min-width:0;padding:9px 7px}.handbook-popular a{font-size:.75rem}}

.handbook-category-card>summary>.handbook-category-icon{flex:0 0 42px}.handbook-category-label{flex:1;min-width:0}.handbook-category-card>summary>.handbook-category-label{flex:1}@media(max-width:420px){.handbook-category-card>summary>.handbook-category-icon{flex-basis:30px}}

/* Pictured instructions share the game's dark panels and substantial gold trim. */
.guide-picture{margin:22px 0 30px;padding:18px;background:linear-gradient(135deg,#1b2936,#0b141f);border:1px solid #74603d;border-top:3px solid #d0ab62;box-shadow:inset 0 0 0 3px #0a111b,inset 0 0 0 4px #544632;border-radius:5px;color:#d9e1e7}
.guide-picture>figcaption{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:baseline;margin:0 0 18px}.guide-picture>figcaption strong{font:1.25rem Georgia,serif;color:#f2d49b}.guide-picture>figcaption>span{font-size:.75rem;color:#b0c4d1}
.gp-steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:18px}.gp-steps>li{position:relative;min-width:0;padding:16px 12px 12px;border:1px solid #655438;border-top:2px solid #b89450;background:#0b1420;border-radius:3px}.gp-number{position:absolute;top:-11px;left:12px;display:grid;place-items:center;width:25px;height:25px;background:#17242e;border:1px solid #d0ad67;border-radius:50%;color:#f6dfa4;font-weight:700}
.gp-steps h4{font:1.125rem Georgia,serif!important;color:#f3d59d;margin:12px 0 7px!important}.gp-steps p{font:.875rem/1.5 system-ui,sans-serif;margin:0!important;color:#c4d3df}.gp-art{min-height:130px;display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.gp-art>.gp-photo{width:100%;max-height:160px;object-fit:contain}.gp-art>.gp-gear{width:112px;height:112px}.gp-art>svg{max-width:100%;height:130px}.gp-art>.path-art{width:96px;height:96px}.gp-art>.crown-product-art{width:140px;height:130px}.gp-art>.workshop-art{position:relative;display:block;width:112px;height:112px}.gp-art>.workshop-art svg{width:100%;height:100%}.gp-art>.workshop-art b{position:absolute;bottom:2px;right:2px;padding:2px 5px;background:#08131a;color:#f1d194}.gp-art>.squire-scene{width:100%}.gp-art>.squire-scene svg{width:100%;height:auto}
.gp-action{display:block;margin-top:12px;padding:9px 12px;background:linear-gradient(#293949,#18242f);border:1px solid #b79a60;box-shadow:inset 0 2px #d9bb75;color:#f1d99d;font-size:.8125rem;font-weight:650;text-align:center}.gp-mini-panel{width:100%;box-sizing:border-box;border:1px solid #85714d;border-top:3px solid #c6a65f;background:#14212c;padding:12px;font:.75rem/1.5 system-ui,sans-serif}.gp-mini-panel>strong{display:block;color:#efd098;font:1rem Georgia,serif;margin-bottom:10px}.gp-mini-panel>div{display:flex;flex-wrap:wrap;gap:5px 12px;justify-content:space-between;border-top:1px solid #344450;padding:7px 0}.gp-mini-panel b{color:#e9d49f;max-width:100%;overflow-wrap:anywhere}
.gp-bar{width:100%;font:.75rem/1.4 system-ui;margin:8px 0}.gp-bar>span,.gp-bar>strong{display:block;color:#d7e2ea}.gp-bar>strong{text-align:right;font-size:.6875rem;margin-top:2px}.gp-bar>i{display:block;height:13px;margin-top:5px;border:1px solid #8c7547;background:#080f17;overflow:hidden}.gp-bar>i>b{display:block;height:100%;background:linear-gradient(90deg,#72562a,#e3c078)}.gp-health>i>b{background:linear-gradient(90deg,#28765a,#87cc8e)}.gp-ward>i>b{background:linear-gradient(90deg,#315a84,#8fbde0)}.gp-violet>i>b{background:linear-gradient(90deg,#654382,#c297dd)}
.gp-skill-tray{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;width:100%}.gp-skill-tray>span{width:48px;height:48px;display:block}.gp-skill-tray svg{width:100%;height:100%}.gp-bag{display:grid;grid-template-columns:repeat(3,54px);gap:6px}.gp-bag>span{display:block;width:54px;height:54px;background:#18232e;border:1px solid #756344}.gp-bag svg{width:100%;height:100%}.gp-party{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%;text-align:center;font-size:.75rem}.gp-party img{width:58px;height:58px;object-fit:contain;display:block;margin:auto}.gp-party b{color:#e9d7ab}.gp-health-example,.gp-meter{width:100%}.gp-health-example>.gp-photo{height:60px;max-width:100%;display:block;margin:auto}.gp-enemies{display:flex;gap:6px}.gp-enemies svg{width:50px;height:60px}.gp-rarities{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.gp-rarities>div{width:75px;border:1px solid #929897;padding:4px;background:#141e2a;text-align:center}.gp-rarities svg{width:60px;height:60px}.gp-rarities b,.gp-rarities small{display:block;font:.6875rem/1.5 system-ui}.gp-rarity-magic{border-color:#689abc!important}.gp-rarity-rare{border-color:#c7ae57!important}.gp-rarity-epic{border-color:#b289cc!important}.gp-rarity-legendary{border-color:#df914a!important}
@media(max-width:600px){.guide-picture{padding:16px 12px}.gp-steps{grid-template-columns:1fr;gap:22px}.gp-art{min-height:105px}.gp-steps>li{padding:16px 12px}.guide-picture>figcaption strong{font-size:1.1875rem}.gp-art>.gp-photo{max-height:145px}.gp-mini-panel{font-size:.8125rem}.gp-bar{font-size:.8125rem}}

.material-guide-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:6px;width:100%;align-items:start}.material-guide-grid>span{text-align:center;min-width:0}.material-guide-grid small{display:block;font:.6875rem/1.35 system-ui;color:#d6e0dc;overflow-wrap:anywhere}.material-guide-grid .workshop-art{display:block;position:relative;width:48px;height:48px;max-width:100%;margin:0 auto 6px}.material-guide-grid .workshop-art img,.gp-art>.material-art img{display:block;width:100%;height:100%;object-fit:contain}.material-guide-grid .workshop-art>b{position:absolute;right:0;bottom:0;padding:1px 3px;background:#12161ded;color:#f3d6a4;font:.625rem/1.4 system-ui}
/* New-player path on the Guide home: numbered steps, each a 44px+ link with its one-line summary. One column on phones. */
.handbook-start{margin:16px 0 8px;padding:14px 16px;border:1px solid #9b895855;border-radius:6px;background:linear-gradient(120deg,#1b2a3c,#121c2c)}
.handbook-start h2{margin:0 0 10px;font:1.125rem/1.3 Georgia,serif;color:#f2d29b}
.handbook-start ol{margin:0;padding:0;list-style:none;counter-reset:guide-step;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:8px}
.handbook-start li{counter-increment:guide-step;min-width:0}
.handbook-start-link{display:grid;grid-template-columns:28px minmax(0,1fr);column-gap:10px;align-items:start;min-height:44px;height:100%;box-sizing:border-box;padding:9px 11px;border:1px solid #667066;border-radius:5px;background:#203036;color:#f4d6a4;text-decoration:none}
.handbook-start-link::before{content:counter(guide-step);grid-row:1/span 2;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#3b3220;border:1px solid #a68d57;color:#f2d29b;font-weight:700;font-size:.875rem}
.handbook-start-link strong{font-size:.9375rem;overflow-wrap:anywhere}
.handbook-start-link small{color:#c1cecc;font-size:.8125rem;line-height:1.4;margin-top:2px;overflow-wrap:anywhere}
.handbook-start-link:hover,.handbook-start-link:focus-visible{border-color:#d9b46b;background:#26393f}
@media(max-width:420px){.handbook-start{padding:12px 10px}.handbook-start-link small{font-size:.75rem}}
/* Way back from a Guide topic opened by a help "?" or an in-page link (full pass, 13 Oct). */
.handbook .guide-return{display:inline-flex;align-items:center;min-height:44px;margin:0 0 12px;padding:0 16px}
/* Legendary quest chain: the finder's own page (public/handbook.js legendaryJourney). Shown only to the character who found the first sigil. */
.handbook-legendary{position:relative;margin:0 0 24px;padding:20px 24px;border:1px solid #c9973f;background:linear-gradient(135deg,#2a1d0c 0%,#141a20 55%,#1b1408 100%);box-shadow:inset 0 0 0 1px #00000080,0 0 22px #e8a53a26}
.handbook-legendary h2{margin:0 0 4px;font-family:Georgia,serif;color:#f2c56b;font-size:1.6rem}
.handbook-legendary-note{margin:0 0 14px;color:#c8b48c;font-size:.92rem}
.handbook-legendary-steps{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.handbook-legendary-steps li{display:flex;gap:10px;align-items:flex-start;line-height:1.45;color:#e6dcc6}
.handbook-legendary-steps li.is-next{color:#f6e2b2;font-weight:600}
.handbook-legendary-mark{flex:0 0 22px;height:22px;display:inline-grid;place-items:center;border-radius:50%;border:1px solid #c9973f;color:#f2c56b;font-size:.8rem}
.handbook-legendary-steps li.is-next .handbook-legendary-mark{background:#c9973f;color:#1b1408}
.handbook-legendary-weapon{margin-top:16px;padding:14px 16px;border-top:1px solid #c9973f80}
.handbook-legendary-weapon h3{margin:0 0 6px;color:#ffcf6e;font-family:Georgia,serif}
.handbook-legendary-weapon h4{margin:12px 0 4px;color:#d9b673;font-size:.85rem;letter-spacing:.06em;text-transform:uppercase}
.handbook-legendary-weapon ul{margin:0;padding-left:18px;color:#e6dcc6;line-height:1.5}
@media(max-width:600px){.handbook-legendary{padding:16px 14px}.handbook-legendary h2{font-size:1.35rem}}
.handbook .handbook-legendary h2,.handbook .handbook-legendary p,.handbook .handbook-legendary li,.handbook .handbook-legendary h3{text-transform:none;letter-spacing:normal}
.handbook .handbook-legendary-steps li{font-size:1rem}.handbook .handbook-legendary-note{font-size:.92rem}
.handbook .handbook-legendary-weapon li{font-size:.98rem;line-height:1.55;text-transform:none;letter-spacing:normal}
.handbook-legendary-weapon{display:flex;gap:16px;align-items:center;margin:0 0 18px;padding:12px;border:1px solid #c9973f80;border-radius:8px;background:#0e1216b3}
.handbook-legendary-icon{flex:0 0 96px;width:96px;height:96px;border:2px solid #e09a3c;border-radius:8px;box-shadow:0 0 12px #ff8c2a40;object-fit:cover}
.handbook .handbook-legendary-kicker{margin:0;color:#e5c98b;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}
.handbook-legendary-weapon h3{margin:2px 0 6px}
.handbook-legendary-more summary{cursor:pointer;color:#f2c56b;font-size:.9rem;min-height:32px;display:inline-flex;align-items:center}
.handbook .handbook-legendary-more p,.handbook .handbook-legendary-more li{color:#d9ccb0;font-size:.95rem;line-height:1.5;text-transform:none;letter-spacing:normal}
.handbook-legendary-more p{margin:2px 0 4px}
@media(max-width:600px){.handbook-legendary-weapon{gap:12px}.handbook-legendary-icon{flex-basis:72px;width:72px;height:72px}}
.handbook .handbook-legendary p.handbook-legendary-kicker{color:#d9b673;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase}
.handbook .handbook-legendary .handbook-legendary-weapon h3{color:#ffc670;font-size:1.4rem;line-height:1.2}
.handbook .handbook-legendary-more summary{text-transform:none;letter-spacing:normal;font-family:inherit;font-weight:600}
.handbook-legendary-story{margin-top:14px;padding-top:10px;border-top:1px solid #c9973f55}
.handbook .handbook-legendary-story strong{color:#f2e2bd}

/* /oath.css */
.chapter-destinations{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin-top:18px}.chapter-destinations h2{grid-column:1/-1;font:1.5rem Georgia;color:#efd19b}.chapter-destinations button{min-height:70px;display:grid;gap:7px;text-align:left;white-space:normal}.chapter-destinations small{color:#c2c7bd}.chapter-destinations .selected{border-color:#f2cc88;background:#38423b}.oath-pin>span:last-child{position:absolute!important;width:1px!important;height:1px!important;clip-path:inset(50%);overflow:hidden}.oath-pin>span:first-child{font:1.25rem Georgia;min-width:44px;min-height:44px;display:grid;place-items:center;color:#ffe2a8;background:#15242c;border:1px solid #c6a875;border-radius:50%}.oath-pin:focus-visible{outline:3px solid #fff0bd;outline-offset:5px}@media(max-width:600px){.chapter-destinations{grid-template-columns:repeat(2,minmax(0,1fr))}.chapter-destinations button{font-size:.8125rem;padding:10px;overflow-wrap:anywhere}.chapter-destinations small{font-size:.6875rem}}

.oath-gear{position:relative;background-color:#13262d;border:2px solid var(--model-rarity)!important;box-shadow:none;box-sizing:border-box;border-radius:5px;overflow:hidden;}.oath-gear .item-model-frame{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);overflow:hidden;background:none;max-height:none;}.item-tier-badge{position:absolute;right:1px;top:1px;bottom:auto;z-index:2;padding:0 2px;border-radius:2px;background:#081219e8;color:#f6deb0;font:700 .5625rem/.875rem system-ui;letter-spacing:0;pointer-events:none;}
.world-map .oath-pin{padding:0;border:0;background:none;box-shadow:none;min-width:44px;min-height:44px}
@media(max-width:600px){
 .world-map .city-pin{--pin-x:24%!important;--pin-y:80%!important}
 .world-map [data-map-cellar]{--pin-x:20%!important;--pin-y:29%!important}
 .world-map [data-map-zone="sablewater-mill"]{--pin-x:50%!important;--pin-y:45%!important}
 .world-map [data-map-zone="ashen-bell-foundry"]{--pin-x:75%!important;--pin-y:68%!important}
 .world-map [data-map-zone="gloamroot-weald"]{--pin-x:23%!important;--pin-y:49%!important}
 .world-map [data-map-zone="rimeglass-reach"]{--pin-x:19%!important;--pin-y:13%!important}
 .world-map [data-map-zone="drowned-orrery"]{--pin-x:46%!important;--pin-y:15%!important}
 .world-map [data-map-zone="crownless-bastion"]{--pin-x:73%!important;--pin-y:15%!important}
 .world-map [data-map-zone="shatterdune-caravanserai"]{--pin-x:82%!important;--pin-y:36%!important}
 .world-map [data-map-zone="violetdeep-warrens"]{--pin-x:47%!important;--pin-y:66%!important}
 .world-map [data-map-zone="cinder-oath"]{--pin-x:81%!important;--pin-y:84%!important}
 .world-map .dungeon-pin:not(.oath-pin){padding:5px;max-width:100px}
 .world-map .dungeon-pin:not(.oath-pin)>svg,.world-map .frontier-pin:not(.oath-pin)>span:first-child{display:none}
 .world-map .dungeon-pin:not(.oath-pin) small{display:none}
}

.oath-gear.enhanced-glow{box-shadow:0 0 var(--enhance-glow) var(--enhance-light),inset 0 0 var(--enhance-glow) var(--enhance-light)}
.item-tile:has(.oath-gear){padding:0;border:0;background:#13262d;box-shadow:none}
.item-tile .oath-gear{filter:none}

/* /workshops-combat.css */
/* The workshop and combat update: shared typography and contained phone layouts. */
.item-new-mark{white-space:nowrap}
@media(max-width:640px){.character-panel .paper-doll{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px}.character-panel .paper-doll>div{display:contents}.character-panel .paper-doll figure{grid-column:1/-1;order:-1}.character-panel .paper-doll figure img{height:280px}.character-panel .paper-slot{display:grid;justify-items:center;align-self:start;gap:6px}.character-panel .paper-slot>span{overflow-wrap:normal;word-break:normal;max-width:100%}.character-panel .paper-slot .item-tile{width:72px;height:72px}}
.damage-meter{margin:12px 0;padding:12px;background:linear-gradient(135deg,#20313a,#13212a);border:1px solid #576362;border-radius:8px;color:#e5e9e5;font:.8125rem/1.45 system-ui;min-width:0}
.damage-meter .meter-name{color:var(--meter-color);background:none;border:0;padding:4px 0;text-align:left;font:inherit;font-weight:700;min-height:44px;overflow-wrap:anywhere;min-width:0;text-decoration:underline;text-underline-offset:3px}
.meter-detail-backdrop{z-index:1100}.meter-detail-backdrop .meter-breakdown{width:min(760px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;box-sizing:border-box;margin:0;padding:24px;font-size:.9375rem}.meter-detail-backdrop .meter-breakdown h4{font-size:1.5rem}.meter-detail-backdrop .meter-breakdown dl{grid-template-columns:repeat(auto-fit,minmax(min(100%,104px),1fr));gap:16px}.meter-detail-backdrop .meter-breakdown dt{font-size:.8125rem}.meter-detail-backdrop .meter-breakdown summary{font-size:1rem;min-height:48px}.meter-detail-backdrop .meter-breakdown header button{padding:10px 16px;font:inherit;color:#f0e3c9;background:#243943;border:1px solid #67756c;border-radius:5px}
.meter-person>div:first-child{align-items:center}.meter-breakdown{margin-top:14px;padding-top:10px;border-top:1px solid #8a7653}.meter-breakdown h4{font:1rem Georgia;margin:0;overflow-wrap:anywhere}.meter-breakdown header button{min-height:44px}.meter-breakdown summary{justify-content:space-between;gap:10px}.meter-breakdown summary span{overflow-wrap:anywhere}.meter-breakdown summary b{white-space:nowrap}.meter-breakdown summary small{display:block;text-align:right;color:#bdc9c7}.meter-breakdown dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin:6px 0 14px}.meter-breakdown dt{font-size:.6875rem;color:#bdc9c7}.meter-breakdown dd{margin:3px 0;font-variant-numeric:tabular-nums;color:#f0d5a6}.meter-breakdown button:focus-visible,.meter-name:focus-visible{outline:2px solid #e3c48b;outline-offset:2px}
.damage-meter header{display:flex;align-items:center;justify-content:space-between;gap:8px}.damage-meter h3{font:1.125rem Georgia;margin:3px 0;color:#f0d5a6}.damage-meter .eyebrow{font-size:.5625rem;letter-spacing:.1em;margin:0}.damage-meter header>strong{color:#f4d8a2;white-space:nowrap;font-variant-numeric:tabular-nums}
.meter-tabs{display:grid;grid-template-columns:1fr 1fr;margin:12px 0;gap:5px}.meter-tabs button{min-height:44px;background:#14232b;border:1px solid #506168;color:#bec9c9;border-radius:5px;font:inherit}.meter-tabs button[aria-pressed=true]{background:#42473d;color:#ffe1ac;border-color:#9e8e68}
.meter-row{display:flex;gap:8px;margin:11px 0}.meter-rank{color:#a7b3b4;font-size:.6875rem;padding-top:2px}.meter-person{flex:1;min-width:0}.meter-person>div:first-child,.meter-totals{display:flex;justify-content:space-between;gap:6px}.meter-person strong{color:var(--meter-color);overflow-wrap:anywhere}.meter-person b{white-space:nowrap;font-size:.75rem}.meter-person small{font-size:.5625rem;color:#b6c1c5}.meter-track{height:5px;margin:5px 0;background:#09181f;border-radius:4px;overflow:hidden}.meter-track i{display:block;height:100%;background:var(--meter-color);border-radius:4px}.meter-totals{color:#b5c3c5;font-size:.625rem;font-variant-numeric:tabular-nums}
.meter-note{font-size:.6875rem;color:#bdc9c7;margin:12px 0 0}.damage-meter details{border-top:1px solid #43545b;margin-top:8px}.damage-meter summary{cursor:pointer;min-height:44px;display:flex;align-items:center;color:#dec595}.damage-meter details p{font-size:.75rem;color:#bdc9c7}
.character-stats{margin-top:20px}.character-stats>header{padding-bottom:16px;border-bottom:1px solid #514f45}.character-stats h2{font:1.75rem Georgia;color:#f1d7ac;margin:6px 0 10px}.character-stats header p{color:#bec6c5}.character-stat-groups{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:20px;margin:20px 0}.character-stat-group{min-width:0}.character-stat-group h3{font:1.25rem Georgia;color:#e7c896;margin:0 0 12px}
.character-stat-group dl{margin:0}.character-stat{display:grid;grid-template-columns:1fr auto;gap:5px 10px;border-bottom:1px solid #ffffff12;padding:12px 0;font:.875rem/1.45 system-ui}.character-stat dt{color:#d0d7d5}.character-stat dd{margin:0;font-weight:700;color:#f2dfbd;font-variant-numeric:tabular-nums}.character-stat small{grid-column:1/-1;color:#a7b7bc;font-size:.75rem}
.character-attribute-details{border:1px solid #57605b;border-radius:8px;background:#14232b}.character-attribute-details>summary{padding:14px;min-height:48px;cursor:pointer;color:#efd3a7}.character-attribute-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:12px;padding:0 14px 14px}.character-attribute-list article{background:#21313a;padding:12px;border-radius:6px}.character-attribute-list header{display:flex;align-items:center;justify-content:space-between;gap:8px}.character-attribute-list h3{font:1.0625rem Georgia;margin:0;color:#edcfa1}.character-attribute-list strong{color:#f8e2b4}.character-attribute-list p,.character-attribute-list small{font:.75rem/1.5 system-ui;color:#bdcaca}
.portrait-effect{font-size:.6875rem;line-height:1.5;min-height:22px;padding:3px 5px}.portrait-effect.debuff{background:#45242d;border-color:#c16d77;color:#ffe0d7}.portrait-effect.buff{background:#1b3c34;border-color:#79a88b;color:#d6ffe0}
.nav-tools{display:grid;gap:6px}.nav-tools button{width:100%;min-height:44px;display:flex;align-items:center;justify-content:center;gap:8px;font:.8125rem system-ui}.nav-tools svg{width:18px;height:18px}.patch-new{display:inline-block;padding:2px 5px;background:#d8b579;color:#19242a;border-radius:4px;font:700 .625rem/1.4 system-ui;text-transform:uppercase}
.release-dialog{width:min(780px,100%);max-height:calc(100dvh - 32px);display:flex;flex-direction:column;padding:0!important;overflow:hidden}.release-dialog>header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 22px;border-bottom:1px solid #68604d;flex-shrink:0}.release-dialog h2{font:1.75rem Georgia;color:#f3d9ac;margin:3px 0}.release-dialog .eyebrow{font-size:.6875rem;margin:0}.release-dialog header button{min-width:44px;min-height:44px}.release-list{padding:0 22px 22px;overflow:auto;overscroll-behavior:contain}.release-entry{padding:24px 0;border-bottom:1px solid #554f43}.release-entry h3{font:1.5rem Georgia;color:#edcc94;margin:12px 0}.release-entry h4{font:600 .875rem system-ui;color:#e0c392;margin:20px 0 8px}.release-meta{display:flex;flex-wrap:wrap;gap:8px;color:#aebfc4;font:.75rem system-ui}.release-version{font-weight:700;color:#ecd0a1}.release-entry li{font:.875rem/1.65 system-ui;color:#d5ddda;margin:8px 0}.release-entry ul{padding-left:20px}.release-entry:first-child h3{font-size:1.8125rem}
@media(max-width:1000px){.character-stat-groups{grid-template-columns:1fr 1fr}.character-stat-group:last-child{grid-column:1/-1}.character-stat-group:last-child dl{display:grid;grid-template-columns:1fr 1fr;gap:0 22px}}
@media(max-width:1179px){.nav-tools{display:flex}.nav-tools button{width:auto;padding:8px}.nav-tools .utility-copy{display:none}.nav-tools .patch-new{position:absolute;right:-2px;top:-4px;font-size:.5rem}.nav-tools button{position:relative;min-width:44px}.nav-tools .change-log-symbol{font-size:1.25rem}}
@media(min-width:1180px){.mmo-shell .party-rail{overflow-y:auto;min-height:0}.mmo-shell .nav-tools .change-log-symbol{display:none}}
@media(max-width:600px){.character-stat-groups{grid-template-columns:1fr;gap:24px}.character-stat-group:last-child{grid-column:auto}.character-stat-group:last-child dl{display:block}.character-stat{font-size:.875rem}.character-stats{padding:16px!important}.character-stats h2{font-size:1.5625rem}.character-attribute-list{grid-template-columns:1fr}.release-dialog{max-height:calc(100dvh - 16px)}.release-dialog>header{padding:14px}.release-list{padding:0 16px 16px}.release-entry h3{font-size:1.375rem}.release-entry:first-child h3{font-size:1.5625rem}}
.workshop-page{max-width:1500px}.workshop-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:8px 0 24px;border-bottom:1px solid #71634c;margin-bottom:20px}.workshop-heading h1{font:2.375rem Georgia;color:#f3d39e;margin:7px 0}.workshop-heading p:last-child{color:#bac7c8;margin:0;font:.875rem system-ui}.workshop-heading button{min-height:44px}
.workshop-farming{padding:12px 16px;background:#1e3933;border:1px solid #587465;border-radius:6px;color:#d0e4d5;font:.8125rem/1.5 system-ui}.workshop-layout{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(0,1.7fr);gap:22px;align-items:start}.workshop-layout>aside{min-width:0}
.workshop-picker,.workshop-bench,.workshop-exchange{border:1px solid #67634f;background:linear-gradient(135deg,#213039,#15222a);border-radius:10px;padding:18px}.workshop-picker>summary{min-height:44px;cursor:pointer;font:1.25rem Georgia;color:#f1d1a0}.workshop-picker>summary small{display:block;font:.75rem system-ui;color:#aebdc0;margin:5px 0 14px}
.workshop-picker label{display:grid;gap:7px;font:.8125rem system-ui;color:#c5d2cf;margin:10px 0}.workshop-picker input{width:100%;box-sizing:border-box;min-height:44px;background:#101d25;border:1px solid #637476;border-radius:5px;color:#edf1e8;padding:10px;font:1rem system-ui}
.workshop-filter{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:12px 0}.workshop-filter button{min-height:44px;background:#16262e;border:1px solid #526468;border-radius:4px;font:.75rem system-ui;color:#c2cccc}.workshop-filter [aria-pressed=true]{border-color:#d3b580;background:#434b40;color:#ffe1ab}
.workshop-items{max-height:530px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding-right:4px}.workshop-item{display:flex;align-items:center;gap:12px;padding:10px;width:100%;min-height:76px;margin:0 0 8px;border:1px solid #4d605f;background:#13232c;color:#ebd6b4;border-radius:6px;text-align:left}.workshop-item[aria-pressed=true]{background:#35443c;border-color:#d6b980;box-shadow:inset 3px 0 #d6b980}.workshop-item[hidden]{display:none}.workshop-item .gear-icon{width:48px;height:48px;flex:none}.workshop-item>span{min-width:0}.workshop-item strong{display:block;font:.9375rem/1.35 Georgia;overflow-wrap:anywhere}.workshop-item small{display:block;color:#b7c9c7;font:.6875rem/1.5 system-ui;margin-top:6px}
.workshop-bench{padding:26px;min-width:0}.workshop-bench p{font:.875rem/1.6 system-ui;color:#bdcdcc}.workshop-bench h3{font:1.625rem Georgia;color:#edcf9c;margin:24px 0 8px}.workshop-bench h4{font:600 .9375rem system-ui;color:#e5c692}.workshop-workpiece{display:flex;align-items:center;gap:18px;border-bottom:1px solid #71654f;padding:0 0 20px}.workshop-workpiece>.gear-icon{width:82px;height:82px;flex:none}.workshop-workpiece h2{font:1.75rem/1.2 Georgia;color:#f4dab0;margin:0;overflow-wrap:anywhere}.workshop-workpiece p{margin:8px 0 0;font-size:.75rem}
.workshop-ranks{display:grid;grid-template-columns:1fr 24px 1fr;gap:12px;align-items:center;background:#101e27;border:1px solid #506060;padding:18px;border-radius:8px;margin:20px 0;color:#ddc495}.workshop-ranks>div{display:grid;gap:5px}.workshop-ranks small{font:.75rem system-ui;color:#b4c1c5}.workshop-ranks strong{font:2rem Georgia;color:#f8dc9d}.workshop-ranks span{font:.75rem system-ui}
.workshop-chance{padding:16px 0;display:grid;gap:10px}.workshop-chance strong{font:1.3125rem Georgia;color:#e9d6ab}.workshop-chance meter{width:100%;height:13px}.workshop-chance small{color:#afc0c5;font:.75rem/1.5 system-ui}
.workshop-cost{margin:12px 0;background:#0f2029;border:1px solid #4d605e;border-radius:7px;padding:4px 14px}.workshop-cost>div{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #354c52;font:.8125rem/1.4 system-ui}.workshop-cost>div:last-child{border:0}.workshop-cost dt{color:#d5ddcf}.workshop-cost dd{margin:0;text-align:right;color:#f1d3a2}.workshop-cost dd span{display:block;color:#a9c4bc;font-size:.6875rem;margin-top:4px}.workshop-cost .missing dd span{color:#f4a895}
.workshop-risk{padding:12px 14px;border-left:3px solid #b39568;background:#4a3a232b}.workshop-confirm button{min-height:48px;width:100%;font-weight:700}.workshop-result{border:1px solid #7d947c;background:#203e34;padding:14px;border-radius:6px;margin:16px 0;color:#d8edcc}.workshop-result.failure{border-color:#a98669;background:#3e342c;color:#f0c5a5}.workshop-result p{margin:6px 0 0}
.workshop-preview,.workshop-properties,.workshop-exchange{margin-top:18px}.workshop-preview summary,.workshop-properties summary,.workshop-exchange summary{min-height:44px;cursor:pointer;padding:10px 0;color:#e6cc9e;font:.875rem/1.5 system-ui}.workshop-preview-table{overflow:auto}.workshop-preview table{width:100%;border-collapse:collapse;font:.8125rem system-ui}.workshop-preview th,.workshop-preview td{padding:10px;border-bottom:1px solid #4a5959;text-align:left}.workshop-preview td:last-child{color:#add9b0}.workshop-properties{padding-top:12px;border-top:1px solid #53615b}
.workshop-operations{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:20px 0}.workshop-operations button{min-height:72px;border:1px solid #5d6c69;background:#13252d;border-radius:6px;padding:12px;text-align:left;color:#d2dcd3}.workshop-operations strong{font:.9375rem Georgia;display:block}.workshop-operations small{display:block;font:.6875rem/1.4 system-ui;color:#b2c3c6;margin-top:6px}.workshop-operations [aria-pressed=true]{background:#3d463b;border-color:#d2b378;color:#ffdead}
.workshop-operation{border:1px solid #667065;background:#14262e;padding:18px;border-radius:8px}.workshop-operation>header{display:flex;align-items:center;gap:12px}.workshop-operation>header .gear-icon{width:48px;height:48px;flex:none}.workshop-operation>header h4{margin:3px 0}.workshop-operation>header .eyebrow{font:.625rem system-ui;margin:0;color:#c4b693}.workshop-operation .gear-enchant-form{padding:0;border:0;background:none;box-shadow:none}.workshop-operation form label{display:grid;gap:8px;color:#d5decf;font:.8125rem system-ui;margin:16px 0}.workshop-operation select{width:100%;min-height:44px;font:1rem system-ui;padding:8px}.workshop-operation form>button{width:100%;min-height:48px;margin-top:12px}.workshop-operation .random-pool{border:1px solid #546466;padding:12px;border-radius:5px}.workshop-operation .random-pool summary{min-height:44px;padding:8px 0;font:.8125rem/1.5 system-ui;color:#e7cda3;cursor:pointer}
.workshop-exchange article{padding:10px 0 16px;border-bottom:1px solid #52635d}.workshop-exchange h4{font:1.0625rem Georgia;color:#e7ca98;margin:10px 0}.workshop-exchange p{font:.75rem/1.6 system-ui;color:#bdcccd}.workshop-exchange button{min-height:44px;width:100%;font-size:.8125rem}
.world-map-scroll{min-width:0;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;border-radius:8px;scrollbar-color:#ae9063 #1c282b;scrollbar-width:thin}
@media(max-width:1500px){.map-workspace{grid-template-columns:minmax(0,1fr)}}
.world-map-scroll .world-map{width:100%;min-width:880px;height:auto;aspect-ratio:3/2}.world-map-scroll .world-map-art{object-fit:fill}
.world-map-scroll .world-map .map-pin{max-width:160px;min-height:54px;gap:8px;padding:8px 10px;background:#17272bf2;border:1px solid #d3b27b;border-radius:5px;box-shadow:0 3px 10px #0009}
.world-map-scroll .world-map .dungeon-pin>span:first-child{display:block;min-width:0;min-height:0;border:0;background:none;border-radius:0}
.world-map-scroll .world-map .oath-pin>span:last-child{position:static!important;width:auto!important;height:auto!important;clip-path:none;overflow:visible}
.world-map-scroll .world-map .map-pin span{font:700 13px/1.25 Georgia;color:#ffe6b8}.world-map-scroll .world-map .map-pin small{display:block;font:10px/1.3 system-ui;color:#c6d0c8;white-space:normal;margin-top:4px}
.world-map-scroll .world-map .map-pin svg{display:block;fill:none;stroke:currentColor;stroke-width:1.5;width:25px;height:30px}.world-map-scroll .world-map .city-pin{--pin-x:38%!important;--pin-y:45%!important}
.world-map-scroll .world-map [data-map-cellar]{--pin-x:48%!important;--pin-y:29%!important}
.world-map-scroll .world-map [data-map-zone="sablewater-mill"]{--pin-x:64%!important;--pin-y:47%!important}
.world-map-scroll .world-map [data-map-zone="ashen-bell-foundry"]{--pin-x:79%!important;--pin-y:66%!important}
.world-map-scroll .world-map [data-map-zone="gloamroot-weald"]{--pin-x:24%!important;--pin-y:66%!important}
.world-map-scroll .world-map [data-map-zone="rimeglass-reach"]{--pin-x:69%!important;--pin-y:15%!important}
.world-map-scroll .world-map [data-map-zone="drowned-orrery"]{--pin-x:12%!important;--pin-y:36%!important}
.world-map-scroll .world-map [data-map-zone="crownless-bastion"]{--pin-x:40%!important;--pin-y:12%!important}
.world-map-scroll .world-map [data-map-zone="shatterdune-caravanserai"]{--pin-x:85%!important;--pin-y:44%!important}
.world-map-scroll .world-map [data-map-zone="violetdeep-warrens"]{--pin-x:56%!important;--pin-y:80%!important}
.world-map-scroll .world-map [data-map-zone="cinder-oath"]{--pin-x:88%!important;--pin-y:19%!important}
.chapter-destinations strong{display:flex;align-items:center;gap:8px}.chapter-destinations svg{width:24px;height:28px;fill:none;stroke:#d8b780;stroke-width:1.5;flex:none}
@media(max-width:900px){.world-map-scroll:before{content:"Swipe across the map · or choose a named expedition below";display:block;position:sticky;left:0;padding:10px 12px;color:#e6d1a9;background:#18292f;font:.75rem/1.5 system-ui}}
@media(max-width:1000px){.workshop-layout{gap:14px;grid-template-columns:minmax(220px,.8fr) minmax(0,1.4fr)}.workshop-bench{padding:18px}.workshop-workpiece h2{font-size:1.5rem}}
@media(max-width:760px){.workshop-heading{align-items:flex-start}.workshop-heading h1{font-size:1.75rem}.workshop-heading button{font-size:.75rem;max-width:100px}.workshop-layout{grid-template-columns:1fr}.workshop-picker{padding:14px}.workshop-picker>summary small{display:inline-block;margin:0 0 0 12px}.workshop-items{max-height:240px}.workshop-workpiece{gap:12px}.workshop-workpiece>.gear-icon{width:62px;height:62px}.workshop-bench h3{font-size:1.4375rem}.workshop-workpiece h2{font-size:1.4375rem}.workshop-operations button{padding:10px}.workshop-operations strong{font-size:.875rem}.workshop-operation{padding:12px}.workshop-exchange{padding:12px}}
.modal-backdrop .settings-modal{width:min(26rem,calc(100vw - 2rem));min-width:0;max-width:100%;overflow-wrap:anywhere}
.workshop-target{border-top:1px solid #71654f;margin-top:24px;padding-top:8px}.workshop-target label{display:grid;gap:8px;color:#e5c692}.workshop-target select,.workshop-target input{width:100%;box-sizing:border-box;min-height:44px;font:1rem system-ui}.workshop-estimate{padding:16px;border:1px solid #6b735d;background:#24342b;border-radius:7px;line-height:1.5}.workshop-estimate strong{color:#f0d19b;font:1.25rem Georgia}.workshop-estimate small{color:#c2cfc6;line-height:1.6}.workshop-run-steps{max-height:320px;overflow:auto}.workshop-run-steps table{width:100%;border-collapse:collapse;table-layout:fixed}.workshop-run-steps th,.workshop-run-steps td{padding:9px 5px;text-align:left;border-bottom:1px solid #53615b;overflow-wrap:anywhere;font:.8125rem/1.5 system-ui}.workshop-result summary{min-height:44px;padding:10px 0;cursor:pointer}.party-leave{max-width:380px;border:1px solid #a78460;border-radius:5px;padding:0 12px}.party-leave>summary{min-height:44px;padding:10px 0;cursor:pointer;box-sizing:border-box;color:#efcba0}.party-leave p{font:.875rem/1.6 system-ui}.party-leave button{margin-bottom:12px}
/* Emberforge and Starweave: original dark-metal workshop frames. */
.workshop-page{--workshop-accent:#d7aa6a;--workshop-haze:#bd68251b;max-width:1320px}.workshop-arcane{--workshop-accent:#b5a3df;--workshop-haze:#7856c523}.workshop-heading{border-bottom:1px solid #8e7552;padding-bottom:18px}.workshop-heading h1{font-size:2rem}.workshop-layout{grid-template-columns:minmax(230px,.7fr) minmax(0,1.3fr);gap:18px}.workshop-picker,.workshop-bench,.workshop-exchange{border-radius:3px;background:linear-gradient(120deg,#25282a,#151b1f 60%,#10161a);border:1px solid #77654c;box-shadow:inset 0 0 0 3px #090e12,0 8px 20px #0003}.workshop-bench{padding:24px;border-top:3px solid var(--workshop-accent)}.workshop-bench>.eyebrow{letter-spacing:.16em;color:var(--workshop-accent);border-bottom:1px solid #746245;padding-bottom:12px}.workshop-workpiece{display:grid;grid-template-columns:180px minmax(0,1fr);gap:22px;padding-bottom:20px}.workshop-workpiece h2{font:1.5625rem/1.3 Georgia}.workshop-workpiece p{line-height:1.7;color:#c2bdac}.workshop-item-stage{position:relative;display:grid;place-items:center;width:180px;height:180px;isolation:isolate;background:radial-gradient(ellipse,var(--workshop-haze),#10161a 70%);border:1px solid #786346;border-radius:50%}.workshop-item-stage>.gear-icon{width:116px;height:116px;z-index:1;position:relative}.workshop-sigil{position:absolute;inset:7px;border:1px solid #8e75525c;border-radius:50%;color:var(--workshop-accent)}.workshop-sigil:before{content:'';position:absolute;inset:10px;border:1px dashed #8e75524d;border-radius:50%}.workshop-sigil span{position:absolute;font:.9375rem Georgia}.workshop-sigil span:nth-child(1){top:-9px;left:45%}.workshop-sigil span:nth-child(2){right:-7px;top:44%}.workshop-sigil span:nth-child(3){bottom:-9px;left:45%}.workshop-sigil span:nth-child(4){left:-7px;top:44%}.workshop-stage-rank{position:absolute;bottom:9px;left:50%;transform:translateX(-50%);z-index:2;background:#141b20;color:#f8dfb4;border:1px solid #997c51;border-radius:3px;padding:2px 9px;font:700 .875rem system-ui}.workshop-ranks{justify-content:space-around;margin:12px 0;padding:12px;border:1px solid #695d49;background:#0e171c}.workshop-ranks strong{font-size:1.5625rem}.workshop-chance{padding:8px 0;gap:6px}.workshop-chance strong{font-size:1.125rem}.workshop-target{margin:12px 0 0;padding:0;border:0}.workshop-target>p{font-size:.8125rem}.workshop-target>label{margin:12px 0}.workshop-estimate{padding:0 12px;background:#242a24;border-color:#67654c}.workshop-estimate summary{font:600 .875rem/1.6 system-ui;color:#e2c696;min-height:44px;padding:10px 0;cursor:pointer;box-sizing:border-box}.workshop-estimate small{display:block;margin:0 0 12px}.workshop-cost>div{padding:8px 0}.workshop-confirm button,.workshop-operation form>button{background:linear-gradient(#734b2b,#482b1a);border:1px solid #d0a361;box-shadow:inset 0 0 0 2px #332018;color:#ffedc6;min-height:48px;font:700 .875rem system-ui}.workshop-arcane .workshop-operation form>button{background:linear-gradient(#514665,#312939);border-color:#b5a3df;box-shadow:inset 0 0 0 2px #24202d}.workshop-confirm button:hover,.workshop-operation form>button:hover{filter:brightness(1.2)}.workshop-operations{gap:6px;margin:16px 0}.workshop-operations button{min-height:58px;padding:9px;background:#172024;border-radius:3px}.workshop-operations strong{font:.875rem Georgia}.workshop-operations small{font-size:.6875rem}.workshop-operations [aria-pressed=true]{border-color:var(--workshop-accent);background:#342f3c;color:#eadcfa}.workshop-operation{background:#131b22;padding:16px;border-color:#6c6277;border-radius:3px}.workshop-result{border-radius:3px;box-shadow:inset 3px 0 #a4b282}.workshop-result.failure{box-shadow:inset 3px 0 #b88162}.workshop-bench .enchant-result{border-color:#847497;background:#1c202b}.workshop-bench .enchant-result h3{font-size:1.3125rem}.workshop-item{background:#182126;border-radius:3px}.workshop-item[aria-pressed=true]{background:#35362d;border-color:var(--workshop-accent)}
.workshop-fx{position:absolute;inset:0;pointer-events:none;z-index:3;overflow:visible}.workshop-fx i{position:absolute;left:50%;top:50%;width:3px;height:8px;border-radius:50%;background:#ffe0a0;opacity:0;transform:rotate(var(--spark-angle)) translateY(-45px)}.workshop-item-stage[data-result=success] .workshop-fx i,.workshop-item-stage[data-result=partial] .workshop-fx i{animation:forge-sparks 900ms ease-out both}.workshop-item-stage[data-result=success]>.gear-icon{animation:forge-success 1200ms ease-out both}.workshop-item-stage[data-result=failure]>.gear-icon{animation:forge-failure 1100ms ease-out both}.workshop-arcane .workshop-fx i{background:#d6baff}.workshop-arcane .workshop-item-stage[data-result] .workshop-sigil{animation:enchant-orbit 1300ms ease-out both}.workshop-item-stage[data-result=changed]>.gear-icon,.workshop-item-stage[data-result=unchanged]>.gear-icon{animation:enchant-change 1200ms ease-out both}
@keyframes forge-sparks{0%{opacity:0;transform:rotate(var(--spark-angle)) translateY(-40px)}20%{opacity:.9}100%{opacity:0;transform:rotate(var(--spark-angle)) translateY(calc(-65px - var(--spark-length))) scale(.3)}}
@keyframes forge-success{0%{filter:brightness(1)}25%{filter:brightness(1.6);box-shadow:0 0 22px #f7c87899}100%{filter:brightness(1)}}
@keyframes forge-failure{0%{filter:brightness(1)}30%{filter:brightness(.62);box-shadow:0 0 16px #b2685266}100%{filter:brightness(1)}}
@keyframes enchant-orbit{0%{transform:rotate(0);opacity:.4}35%{opacity:1;border-color:#ddc5ff}100%{transform:rotate(90deg);opacity:.65}}
@keyframes enchant-change{0%{filter:brightness(1)}35%{filter:brightness(1.3);box-shadow:0 0 22px #b29bdb88}100%{filter:brightness(1)}}
@media(max-width:1000px){.workshop-layout{grid-template-columns:minmax(0,1fr)}.workshop-items{max-height:300px}.workshop-workpiece{grid-template-columns:160px minmax(0,1fr)}.workshop-item-stage{width:160px;height:160px}.workshop-item-stage>.gear-icon{width:100px;height:100px}}
@media(max-width:600px){.workshop-page{padding:12px 12px 96px}.workshop-heading{gap:10px}.workshop-heading h1{font-size:1.5625rem}.workshop-heading>button{font-size:.75rem;padding:8px;flex:none}.workshop-bench{padding:16px}.workshop-workpiece{grid-template-columns:112px minmax(0,1fr);gap:12px}.workshop-item-stage{width:112px;height:112px}.workshop-item-stage>.gear-icon{width:72px;height:72px}.workshop-workpiece h2{font-size:1.3125rem}.workshop-stage-rank{bottom:0;font-size:.75rem}.workshop-cost{padding:4px 10px}.workshop-target>p{font-size:.75rem}.workshop-bench .enchant-result{padding:10px}.workshop-estimate small{font-size:.75rem}.workshop-operations{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:360px){.workshop-workpiece{display:flex;flex-direction:column;text-align:center}.workshop-heading{align-items:flex-start}.workshop-heading .eyebrow{font-size:.5625rem}}
@media(prefers-reduced-motion:reduce){.workshop-item-stage *{animation:none!important}}

/* Result feedback also remains visible beside the action on narrow screens. */
.workshop-result[data-result=success],.enchant-result[data-result=success]{animation:workshop-result-success 1200ms ease-out both}.workshop-result[data-result=failure],.enchant-result[data-result=failure]{animation:workshop-result-failure 1200ms ease-out both}.enchant-result[data-result=changed],.enchant-result[data-result=unchanged],.workshop-result[data-result=partial]{animation:workshop-result-change 1200ms ease-out both}
@keyframes workshop-result-success{25%{box-shadow:inset 3px 0 #e3d59a,0 0 18px #cba34e77}}@keyframes workshop-result-failure{30%{box-shadow:inset 3px 0 #dc997c,0 0 15px #9b594d66}}@keyframes workshop-result-change{30%{box-shadow:inset 3px 0 #c2ade8,0 0 16px #9e83d166}}
@media(prefers-reduced-motion:reduce){.workshop-result,.enchant-result{animation:none!important}}
@media(max-width:360px){.workshop-ranks{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;text-align:center}.workshop-ranks>span{display:none}.workshop-ranks>div{width:100%}.workshop-operations{grid-template-columns:minmax(0,1fr)}}
.wayfarer-shell .workshop-confirm button,.wayfarer-shell .workshop-operation form>button{background:linear-gradient(#734b2b,#482b1a);color:#ffedc6;border-color:#d0a361;box-shadow:inset 0 0 0 2px #332018;min-height:48px}.wayfarer-shell .workshop-arcane .workshop-operation form>button{background:linear-gradient(#514665,#312939);color:#f3eaff;border-color:#b5a3df;box-shadow:inset 0 0 0 2px #24202d}
@media(max-width:360px){.workshop-cost>div{display:block}.workshop-cost dt{margin-bottom:5px;overflow-wrap:normal}.workshop-cost dd{text-align:left;margin:0}.workshop-cost dd span{display:block}}

/* Keep the decision together: selected equipment, target, cost and action. */
.workshop-page{max-width:1220px}.workshop-heading{margin-bottom:14px;padding:4px 0 14px}.workshop-heading h1{font:1.875rem/1.2 Georgia;margin:6px 0 0}.workshop-heading .eyebrow{font-size:.625rem;letter-spacing:.12em;color:#b6a283}
.workshop-farming{background:none;border:0;border-left:2px solid #739780;border-radius:0;padding:4px 10px;margin:0 0 15px;font-size:.75rem;color:#abbeb0}
.workshop-layout{grid-template-columns:minmax(240px,.72fr) minmax(0,1.5fr);gap:16px}.workshop-picker{padding:15px}.workshop-picker>summary{font-size:1.1875rem}.workshop-picker>summary small{float:right;margin:3px 0 0}.workshop-items{max-height:640px}.workshop-item{min-height:68px;padding:8px;gap:9px}.workshop-item small{font-size:.6875rem;margin-top:4px}.workshop-item .gear-icon{width:46px;height:46px}.workshop-item strong{font:.875rem/1.3 Georgia}
.workshop-bench{padding:20px}.workshop-bench>.eyebrow{font-size:.625rem;padding-bottom:8px;margin:0 0 13px}.workshop-workpiece{grid-template-columns:110px minmax(0,1fr);gap:18px;padding-bottom:14px}.workshop-workpiece h2{font:1.5rem/1.25 Georgia}.workshop-workpiece p{font-size:.75rem;margin-top:7px}.workshop-item-stage{width:110px;height:110px;border-radius:4px;background:radial-gradient(ellipse,var(--workshop-haze),#0e1418 75%);box-shadow:inset 0 0 0 4px #060b0e}.workshop-item-stage>.gear-icon{width:86px;height:86px}.workshop-sigil{inset:5px;border-radius:2px}.workshop-sigil:before{inset:4px;border-style:solid;border-radius:2px}.workshop-sigil span{display:none}.workshop-stage-rank{bottom:-4px;font-size:.75rem}
.workshop-ranks{grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);padding:11px 14px;margin:15px 0 10px;gap:8px;border-radius:3px;background:linear-gradient(90deg,#161d20,#29282040)}.workshop-ranks>div{display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:3px 8px}.workshop-ranks small{grid-column:1/-1}.workshop-ranks strong{font:1.625rem/1.2 Georgia}.workshop-ranks>div>span{color:#b8baa8;font-size:.6875rem}.workshop-ranks>span{display:block;font-size:1.1875rem;color:#b99a65}
.workshop-controls{display:grid;grid-template-columns:1fr 1fr;gap:14px}.workshop-controls .workshop-control{display:grid;gap:7px;font:.75rem/1.4 system-ui;color:#cebc9e;margin:8px 0 11px}.workshop-controls input,.workshop-controls select{background:#0f171b;border:1px solid #796646;border-radius:3px;color:#f1dfbd;padding:8px 11px;min-width:0;min-height:44px}
.workshop-chance{padding:6px 0 12px;gap:7px}.workshop-chance>div{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}.workshop-chance strong{font:1.5625rem/1.15 Georgia;color:#e8cd8b}.workshop-chance span{font:.75rem system-ui;color:#c3c2b3}.workshop-chance small{margin-left:auto;font-size:.6875rem}.workshop-chance meter{height:8px}
.workshop-bench .workshop-cost-title{font:.6875rem/1.4 system-ui;text-transform:uppercase;letter-spacing:.09em;color:#acaa99;margin:9px 0 7px}.workshop-cost{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:0;padding:0;margin:0 0 10px;border:1px solid #62563f;border-radius:3px;background:#0e171b}.workshop-cost>div{display:block;padding:9px 12px;border:0;border-right:1px solid #62563f88;min-width:0}.workshop-cost>div:last-child{border:0}.workshop-cost dt{font-size:.6875rem;line-height:1.4;color:#b7b9ac;margin-bottom:4px}.workshop-cost dd{text-align:left;font-size:1rem;font-variant-numeric:tabular-nums;color:#f1dab0}.workshop-cost dd span{font-size:.625rem;margin-top:3px;color:#9fafaa}.workshop-cost .missing{background:#53352740}.workshop-cost .missing dd span{color:#eeb79b}
.workshop-bench .workshop-risk{font:.75rem/1.5 system-ui;color:#d1b498;background:none;border:0;padding:0;margin:8px 0 12px}.workshop-confirm small{display:block;text-align:center;font:.6875rem/1.5 system-ui;color:#999f96;margin:7px 0 12px}
.workshop-estimate{padding:0 11px;border-radius:3px;background:#25292055;border-color:#605d45}.workshop-estimate summary{font:.75rem/1.5 system-ui;color:#c9b68f}.workshop-estimate p{font-size:.75rem}.workshop-estimate small{font-size:.6875rem}.workshop-preview,.workshop-properties{margin-top:9px}.workshop-preview summary,.workshop-properties summary{font-size:.75rem;color:#b6baa9}.workshop-preview p{font-size:.75rem}.workshop-properties{padding-top:2px}.workshop-guide{min-height:44px!important;font:.75rem system-ui!important;color:#d4b781!important;padding:8px 0!important;margin:3px 0;text-decoration:underline;background:none!important;border:0!important;box-shadow:none!important}
.workshop-result{padding:11px 13px;margin:13px 0;border-radius:3px}.workshop-result-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.workshop-result-heading strong{font:600 .875rem system-ui}.workshop-result-heading span{font:.6875rem system-ui;color:#b7c7b0}.workshop-result p{font-size:.75rem;margin-top:5px}.workshop-result summary{font:.75rem/1.5 system-ui;min-height:44px;box-sizing:border-box}.workshop-bench .enchant-result{margin:13px 0;padding:11px}.workshop-bench .enchant-result h3{font:1.125rem Georgia;margin:0 0 8px}.workshop-bench .enchant-result p{font-size:.75rem}.workshop-bench .enchant-result .small-note{font-size:.6875rem}.workshop-bench .enchant-result table{font-size:.75rem}
.workshop-operations{grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;margin:15px 0}.workshop-operations button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:8px 4px;min-height:76px}.workshop-operations .gear-icon{width:32px;height:32px;flex:none}.workshop-operations strong{font:.6875rem/1.25 system-ui;min-height:14px}.workshop-operation{padding:14px}.workshop-operation>header h4{font:1rem Georgia;color:#d8c3ed;margin:0 0 6px}.workshop-operation>header p{font:.75rem/1.5 system-ui;color:#b9b4c1;margin:0}.workshop-operation form label{margin:13px 0;font-size:.75rem}.workshop-operation .random-pool{padding:0 9px;background:#0e151c;border-color:#4e4659}.workshop-operation .random-pool>p{font-size:.75rem;margin:9px 0}.workshop-operation .random-pool summary{font:.75rem/1.5 system-ui;min-height:44px}.workshop-operation .random-pool details p{font-size:.75rem}.workshop-operation .gear-craft-reason{font-size:.75rem;color:#eab497}
@media(max-width:850px){.workshop-layout{grid-template-columns:minmax(0,1fr)}.workshop-items{max-height:260px}.workshop-picker>summary small{float:none;display:inline;margin-left:12px}.workshop-heading h1{font-size:1.6875rem}}
@media(max-width:600px){.workshop-page{padding:12px 12px 96px}.workshop-bench{padding:14px}.workshop-workpiece{grid-template-columns:88px minmax(0,1fr);gap:12px;text-align:left}.workshop-item-stage{width:88px;height:88px}.workshop-item-stage>.gear-icon{width:68px;height:68px}.workshop-workpiece h2{font-size:1.25rem}.workshop-controls{gap:9px}.workshop-chance small{margin-left:0;flex-basis:100%}.workshop-cost{grid-template-columns:repeat(auto-fit,minmax(90px,1fr))}.workshop-cost>div{padding:8px}.workshop-ranks>div{grid-template-columns:1fr}.workshop-ranks strong{font-size:1.5rem}.workshop-operations{grid-template-columns:repeat(3,minmax(0,1fr))}.workshop-operations button{min-height:70px}.workshop-operation{padding:11px}.workshop-heading button{font-size:.75rem;max-width:110px}.workshop-heading .eyebrow{font-size:.5625rem}}
@media(max-width:360px){.workshop-workpiece{display:grid;grid-template-columns:78px minmax(0,1fr);text-align:left}.workshop-item-stage{width:78px;height:78px}.workshop-item-stage>.gear-icon{width:61px;height:61px}.workshop-workpiece h2{font-size:1.125rem}.workshop-ranks{grid-template-columns:minmax(0,1fr) 16px minmax(0,1fr);text-align:left}.workshop-ranks>span{display:block}.workshop-cost>div{display:block}.workshop-controls{grid-template-columns:minmax(0,1fr)}.workshop-controls .workshop-control{margin:3px 0 7px}}

.battle-frame-setting{display:flex;flex-direction:column;gap:8px;margin:16px 0 8px}.battle-frame-setting select{width:100%;min-width:0;min-height:44px;font-size:1rem}
.character-stat{padding:4px 0;align-items:start}.character-stat dd{padding:12px 0}.stat-help summary{min-height:44px;cursor:pointer;display:flex;align-items:center;text-decoration:underline dotted #8c836c;text-underline-offset:4px}.stat-help summary:focus-visible{outline:2px solid #e5bd80;outline-offset:2px}.stat-help p{font:.75rem/1.6 system-ui;margin:0 0 10px;color:#a7b7bc}.stat-help[open]{min-width:0}
.gear-quick-attributes{grid-template-columns:repeat(4,minmax(0,1fr))}

.workshop-controls .workshop-control>label{display:block;gap:0;margin:0;font:inherit;color:inherit}
/* Keep workshop titles and service labels intact when text is enlarged. */
@media(max-width:760px){
 .mmo-shell .section-tabs{display:flex;flex-wrap:wrap}
 .mmo-shell .section-tabs>.section-tab{flex:1 0 auto;max-width:100%;white-space:nowrap;overflow-wrap:normal;word-break:normal}
 .workshop-heading{flex-wrap:wrap}
 .workshop-heading>div{flex:1 1 210px;min-width:0}
.workshop-heading>button{max-width:none;white-space:nowrap;overflow-wrap:normal;word-break:normal}
}

/* Enchanter: the item, its affected modifier and the spend share one window. */
.mmo-shell .workshop-arcane{max-width:1180px}
.workshop-arcane .enchanter-window{padding:0;background:#191c22;border:1px solid #73634e;border-radius:8px;box-shadow:0 12px 36px #0004;overflow:visible}
.enchanter-window .enchanter-sheet{padding:0;border:0;border-radius:0;background:none;overflow-wrap:normal;box-shadow:none;margin:0}
.enchanter-picker{margin:0;padding:0 22px;border:0;border-bottom:1px solid #595047;border-radius:0;background:#25252c}
.enchanter-picker>summary{font:600 .85rem/1.4 system-ui;min-height:50px;display:list-item;align-content:center;color:#dcc69d;list-style-position:inside}
.enchanter-picker>summary small{float:right;font:.75rem/1.4 system-ui;margin:3px 0;color:#afb3ba}
.enchanter-picker[open]{padding-bottom:16px}
.enchanter-picker .workshop-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;max-height:300px;padding:0 4px 0 0}
.enchanter-picker .workshop-item{margin:0;background:#191d24}
.enchanter-picker .workshop-item[aria-pressed=true]{border-color:#d1b17a;background:#373326}
.enchanter-picker .workshop-filter{max-width:400px}
.enchanter-editor{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}
.enchanter-item,.enchanter-operation{min-width:0;padding:24px}
.enchanter-item{border-right:1px solid #56504b}
.enchanter-item-heading{display:flex;align-items:center;gap:14px;margin-bottom:24px}
.enchanter-item-heading>[data-workshop-stage]{flex:none}
.enchanter-item-heading .gear-icon{width:76px;height:76px}
.enchanter-item-heading>div:last-child{min-width:0}
.enchanter-item-heading h2{font:1.4rem/1.25 Georgia;color:#f1d7aa;margin:0;overflow-wrap:anywhere}
.enchanter-item-heading h2>span{color:#dcc189;white-space:nowrap}
.enchanter-item-heading p{font:.75rem/1.6 system-ui!important;color:#b6b8ba!important;margin:7px 0 0!important}
.enchanter-affixes{border:0;margin:0;padding:0;min-width:0}
.enchanter-affixes legend{font:600 .85rem/1.4 system-ui;color:#d3c3ab;padding:0}
.enchanter-sheet p.enchanter-affix-caption{font:.72rem/1.5 system-ui;color:#9dabae;margin:5px 0 12px}
.enchanter-sheet .enchanter-affix{display:flex;align-items:center;gap:10px;min-height:54px;box-sizing:border-box;margin:0 0 5px;padding:9px 10px;border:1px solid transparent;border-radius:3px;background:#22262d;cursor:pointer}
.enchanter-affix input[type=radio]{width:17px;height:17px;min-height:17px;flex:none;margin:0;accent-color:#d0b1ea}
.enchanter-affix>span{display:block;flex:1;min-width:0}
.enchanter-affix .enchanter-affix-main{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.enchanter-affix-main strong{font:500 .87rem/1.45 system-ui;color:#d5dfdf;overflow-wrap:anywhere}
.enchanter-affix-main small{font:.7rem/1.4 system-ui;white-space:nowrap;color:#afb5c0}
.enchanter-affix .enchanter-affix-range{display:block;color:#9aa7b2;font:.7rem/1.5 system-ui;margin:2px 0 0}
.enchanter-affix:has(input:checked){border-color:#a99abe;background:#38313f;box-shadow:inset 3px 0 #bea5d7}
.enchanter-affix input:checked+span strong{color:#f0e5fa}
.enchanter-affix:focus-within{outline:2px solid #e2bd80;outline-offset:2px}
.enchanter-sheet .enchanter-affix.all-affected{display:block;border-color:#927b59;background:#362d25;cursor:default}
.enchanter-properties{border-top:1px solid #484950;margin-top:16px}
.enchanter-properties>summary{min-height:44px;align-content:center;cursor:pointer;color:#b8b4ac;font:.75rem/1.5 system-ui}
.enchanter-properties .gear-affixes{margin:6px 0}.enchanter-properties .gear-base p,.enchanter-properties .small-note{font-size:.75rem}
.enchanter-operation .workshop-operations{margin:0 0 24px;gap:2px;border-bottom:1px solid #57505e}
.enchanter-operation .workshop-operations>button{min-width:0;min-height:75px;gap:7px;padding:8px 3px 12px;background:none;border:0;border-radius:0;box-shadow:none;color:#aeb3ba}
.enchanter-operation .workshop-operations>button[aria-pressed=true]{background:#463a4e55;color:#f0defb;box-shadow:inset 0 -3px #bea5d7}
.enchanter-operation .workshop-operations strong{font:.72rem/1.35 system-ui;overflow-wrap:normal}
.enchanter-operation .workshop-operations .gear-icon{width:33px;height:33px}
.enchanter-operation>header h3{font:1.4rem/1.25 Georgia;color:#e9d4f5;margin:0 0 8px}
.enchanter-operation>header p{font:.82rem/1.6 system-ui;color:#bcc0c7;margin:0}
.enchanter-preview{margin:24px 0 10px;min-height:150px}
.enchanter-roll-preview{display:grid;grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr);gap:10px;align-items:center}
.enchanter-roll-preview>span{color:#ab9fba}
.enchanter-roll-preview small{display:block;font:.72rem/1.5 system-ui;color:#a3adb8;margin-bottom:8px}
.enchanter-roll-preview strong{display:block;font:500 1.05rem/1.45 system-ui;color:#ecd8f8;overflow-wrap:anywhere}
.enchanter-roll-preview>div:first-child strong{color:#cbd3d6}
.enchanter-sheet p.enchanter-preview-note{font:.75rem/1.65 system-ui;color:#acb4bf;margin:13px 0 0}
.enchanter-sheet p.enchanter-preview-target{font:.9rem/1.5 system-ui;color:#e4d4ef;margin:0 0 13px}
.enchanter-pool{display:flex;flex-wrap:wrap;gap:5px 12px;color:#c8cbd3;font:.78rem/1.5 system-ui}
.enchanter-pool>span{padding:2px 0;border-bottom:1px solid #62566d}
.enchanter-grade-heading{display:flex;justify-content:space-between;gap:8px;align-items:baseline;margin:20px 0 8px;color:#c5becd;font:.77rem/1.5 system-ui}
.enchanter-grade-heading small{font-size:.7rem;color:#a8a4af}
.enchanter-grade-odds{display:flex;flex-wrap:wrap;gap:12px;margin:0;padding:0}
.enchanter-grade-odds>div{flex:1;min-width:48px}
.enchanter-grade-odds dt{font:.67rem/1.5 system-ui;color:#9fa7b1}
.enchanter-grade-odds dd{font:.92rem/1.5 system-ui;color:#e4d5ed;margin:2px 0 0;font-variant-numeric:tabular-nums}
.enchanter-sheet .enchanter-blocked{color:#e9bc96;font:.83rem/1.6 system-ui}
.enchanter-action-strip{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,.8fr);gap:22px;align-items:center;border-top:1px solid #74634d;padding:18px 24px;background:#27272c;border-radius:0 0 8px 8px}
.enchanter-payment,.enchanter-confirm{min-width:0}
.enchanter-payment .workshop-cost{background:none;border:0;margin:0;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:12px}
.enchanter-payment .workshop-cost>div{padding:0 10px 0 0;border:0;background:none}
.enchanter-payment .workshop-cost dt{font-size:.75rem;color:#c1b4cf}
.enchanter-payment .workshop-cost dd{font-size:1.12rem;color:#eeddbd}
.enchanter-payment .workshop-cost dd span{font-size:.7rem;color:#a8b8b0}
.enchanter-payment .workshop-cost .missing dd span{color:#e8a98e}
.enchanter-payment .workshop-cost-title{font-size:.67rem;margin:0 0 9px;color:#a9a5a1}
.wayfarer-shell .enchanter-confirm [data-enchant-submit]{width:100%;min-height:48px;padding:11px 12px;background:linear-gradient(#51415e,#392d42);border:1px solid #b49bcb;border-radius:4px;box-shadow:inset 0 0 0 2px #282030;color:#f5e8fc;font:600 .9rem/1.4 system-ui;white-space:normal}
.enchanter-confirm [data-enchant-submit]:disabled{opacity:.5}
.enchanter-confirm p.workshop-risk{font:.72rem/1.5 system-ui;color:#c9af99;margin:8px 0 0}
.enchanter-confirm .gear-craft-reason{font:.75rem/1.5 system-ui;margin:0 0 8px;padding:0;border:0;background:none;color:#f0b99c}
.enchanter-item .enchant-result{background:none;border:0;border-top:1px solid #5a535c;border-radius:0;padding:12px 0 0!important;margin:17px 0 0!important}
.enchanter-item .enchant-result h3{font:.8rem/1.5 system-ui!important;color:#cfc1da;margin:0 0 7px!important}
.enchanter-item .enchant-result table{font-size:.72rem!important}.enchanter-item .enchant-result p{font-size:.72rem!important}
.enchanter-window>.workshop-notice{margin:0;padding:12px 24px;border-bottom:1px solid #56504b;font-size:.8rem}
.workshop-arcane>.workshop-exchange{padding:0 4px;background:none;border:0;border-radius:0;margin-top:10px}
.workshop-arcane>.workshop-exchange[open]{padding:0 16px 12px;border-bottom:1px solid #56504b}
.enchanter-empty{padding:24px}
@media(max-width:760px){
 .enchanter-editor{grid-template-columns:minmax(0,1fr)}
 .enchanter-item,.enchanter-operation{padding:18px}
 .enchanter-item{border-right:0;border-bottom:1px solid #56504b}
 .enchanter-item-heading{margin-bottom:18px}
 .enchanter-item-heading .gear-icon{width:64px;height:64px}
 .enchanter-item-heading h2{font-size:1.2rem}
 .enchanter-picker{padding:0 18px}
 .enchanter-picker .workshop-items{grid-template-columns:minmax(0,1fr)}
 .enchanter-operation .workshop-operations{grid-template-columns:repeat(auto-fit,minmax(min(100%,4.2rem),1fr));margin-bottom:20px}
 .enchanter-operation .workshop-operations>button{min-height:72px}
 .enchanter-operation .workshop-operations strong{font-size:.67rem}
 .enchanter-preview{min-height:0;margin-top:20px}
 .enchanter-action-strip{grid-template-columns:minmax(0,1fr);padding:16px 18px;gap:14px}
 .enchanter-confirm p.workshop-risk{margin-top:8px}
 .enchanter-window>.workshop-notice{padding:12px 18px}
 .enchanter-affix .enchanter-affix-main{flex-wrap:wrap;gap:2px 10px}
}
@media(max-width:360px){
 .enchanter-item,.enchanter-operation{padding:14px}
 .enchanter-item-heading{gap:10px}.enchanter-item-heading .gear-icon{width:54px;height:54px}
 .enchanter-affix .enchanter-affix-main{flex-wrap:wrap;gap:2px 10px}
 .enchanter-picker>summary small{float:none;margin-left:8px}
 .enchanter-roll-preview{grid-template-columns:minmax(0,1fr);gap:9px}
 .enchanter-roll-preview>span{display:none}
 .enchanter-action-strip{padding:14px}
}

.character-stat-groups{grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr))}.character-stat{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline}.character-stat dt{flex:1 1 9rem;min-width:0}.character-stat dd{flex:0 0 auto;max-width:100%;overflow-wrap:normal;word-break:normal;line-height:1.5}.character-stat .stat-help>summary{overflow-wrap:normal;word-break:normal}.character-stat .stat-help button{min-height:44px;max-width:100%;white-space:normal;margin-bottom:8px}.character-attribute-list header{flex-wrap:wrap}.character-attribute-list h3{overflow-wrap:normal;word-break:normal}.path-passive-grid article{flex-wrap:wrap}.path-passive-grid article>div:first-child{flex:1 1 11rem;min-width:0}.path-passive-grid h3{overflow-wrap:normal;word-break:normal}
@media(max-width:1000px){.character-stat-group:last-child{grid-column:auto}.character-stat-group:last-child dl{display:block}}

.character-stats .character-stat:has(.stat-limit-track){display:grid;grid-template-columns:minmax(0,1fr) minmax(115px,1fr);gap:6px 12px;align-items:start}.character-stats .character-stat:has(.stat-limit-track) dd{padding:10px 0}.character-stats .character-stat:has(.stat-limit-track) dt:has(details[open]){grid-column:1/-1}.character-stats .character-stat:has(.stat-limit-track) dt:has(details[open])+dd{grid-column:1/-1;padding-top:0}.character-stats .stat-limit-source{font-size:.6875rem}

.meter-history{margin-top:12px;border-top:1px solid #9d824e;padding-top:6px}.meter-history>summary{min-height:44px;display:list-item;align-content:center;color:#dfc998;font-size:.8125rem;cursor:pointer}.meter-history>summary>span{margin-left:6px;font-size:.6875rem;color:#aebfce}.meter-history .meter-row{opacity:.85}

/* Tier odds are data, not selectable affix rows. */
.tier-odds{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:8px;margin:12px 0}.tier-odds>div{min-width:0;padding:8px;background:#22262d;border-radius:3px}.tier-odds dt{font:.75rem/1.4 system-ui;color:#afb5c0}.tier-odds dd{margin:5px 0 0;font:600 .875rem/1.4 system-ui;color:#e5cfac}
@media(max-width:700px){.tier-odds{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Cost labels determine their minimum width, including enlarged browser text. */
.enchanter-payment .workshop-cost{display:flex;flex-wrap:wrap;gap:12px}
.enchanter-payment .workshop-cost>div{flex:1 1 105px;min-width:min-content;max-width:100%;overflow-wrap:anywhere}

/* New characters are invited into town before their first quest. */
.world-map .city-pin .map-town-onboarding-arrow{position:absolute;left:50%;bottom:calc(100% + 12px);width:32px;height:46px;background:#ffda75;clip-path:polygon(32% 0,68% 0,68% 54%,100% 54%,50% 100%,0 54%,32% 54%);transform:translateX(-50%);filter:drop-shadow(0 2px 2px #000);pointer-events:none;animation:map-town-first-visit 1.4s ease-in-out infinite}
@keyframes map-town-first-visit{0%,100%{transform:translate(-50%,-7px)}50%{transform:translate(-50%,3px)}}
@media(prefers-reduced-motion:reduce){.world-map .city-pin .map-town-onboarding-arrow{animation:none}}

@media(max-width:600px){.world-map-scroll.first-town-visit .world-map{min-width:480px}}
/* On that narrower first-visit map the Stonewake and Prison Cellar pins overlapped (13 Oct pass, 390 px). Spread them apart there, keeping room for the town arrow. */
@media(max-width:600px){.world-map-scroll.first-town-visit .world-map .city-pin{--pin-x:31%!important;--pin-y:60%!important}.world-map-scroll.first-town-visit .world-map .dungeon-pin{--pin-x:56%!important;--pin-y:24%!important}}

.workshop-legendary{margin:0 0 20px;padding:18px;border:1px solid #8f7547;border-radius:8px;background:#152330;overflow-wrap:anywhere}.workshop-legendary h2{margin:0 0 10px}.workshop-legendary p{line-height:1.5}.workshop-legendary button{max-width:100%;white-space:normal}
@media(max-width:480px){.workshop-legendary{padding:14px}}

/* Shared equipment workshops: painted item, clear choices, visible cost. */
.shell .workshop-page .workshop-bench{background:linear-gradient(145deg,#29251f,#181a1c 70%);border-radius:8px}
.shell .workshop-page .workshop-picker{background:#211f1b}
.shell .workshop-page .workshop-ranks{background:#332b1f66}
.workshop-page{max-width:1180px;color:#e2d8c6}
.workshop-page .workshop-bench{background:linear-gradient(145deg,#29251f,#181a1c 70%);border:1px solid #88704b;border-radius:8px;box-shadow:0 10px 28px #0004}
.workshop-page .workshop-layout{grid-template-columns:minmax(215px,.65fr) minmax(0,1.65fr);gap:20px}
.workshop-page .workshop-picker{background:#211f1b;border-color:#796449}.workshop-page .workshop-picker>summary{min-height:44px;align-content:center;color:#d9bd8e;font:1rem/1.5 Georgia,serif}
.workshop-page .workshop-item{border-radius:4px;background:#1a1b1b;color:#d7c8ac}.workshop-page .workshop-item[aria-pressed=true]{background:#3a3020;border-color:#cfad6c;box-shadow:inset 3px 0 #cfad6c}.workshop-page .workshop-item small{font-size:.75rem;color:#b6b09f}
.workshop-page .workshop-workpiece{grid-template-columns:132px minmax(0,1fr);padding-bottom:20px;gap:22px;border-color:#77614366}.workshop-page .workshop-item-stage{width:132px;height:132px;background:radial-gradient(ellipse,#443722,#131516 75%)}.workshop-page .workshop-item-stage>.gear-icon{width:110px;height:110px}.workshop-page .workshop-workpiece h2{font:1.75rem/1.25 Georgia,serif;color:#f0d8a8}.workshop-page .workshop-workpiece p{font:.85rem/1.6 system-ui;color:#bfb49f}
.workshop-page .workshop-ranks{background:#332b1f66;border:1px solid #78613b77;padding:14px 18px;border-radius:5px}.workshop-page .workshop-ranks small{font-size:.8rem;color:#c9b797}.workshop-page .workshop-ranks>div>span{font-size:.8rem}.workshop-page .workshop-ranks strong{color:#f1dcaf}
.workshop-page .workshop-controls .workshop-control{font-size:.85rem;gap:8px}.workshop-page .workshop-controls :is(input,select){font-size:1rem;background:#151615;color:#f0e1c1;border-color:#88714a}
.workshop-page .workshop-chance{margin:12px 0}.workshop-page .workshop-chance span{font-size:.85rem}.workshop-page .workshop-chance small{font-size:.75rem;color:#bcb29e}
.workshop-page .workshop-cost{background:#171817;border-color:#756044}.workshop-page .workshop-cost dt{font-size:.85rem;color:#d0c0a2}.workshop-page .workshop-cost dd{font-size:1.25rem}.workshop-page .workshop-cost dd span{font-size:.75rem;color:#a9b5a3}.workshop-page .workshop-cost>div{padding:12px 14px}
.workshop-page .workshop-risk{font-size:.85rem;line-height:1.6;color:#cfb798}.workshop-page .workshop-confirm small{font-size:.78rem}.workshop-page :is(.workshop-preview,.workshop-properties,.workshop-estimate)>summary{min-height:44px;align-content:center;font-size:.85rem;cursor:pointer}.workshop-page :is(.workshop-preview,.workshop-properties,.workshop-estimate) p{font-size:.85rem;line-height:1.6}
.workshop-page .enchanter-window{padding:0}.workshop-page .enchanter-picker{border-bottom:1px solid #766042;background:#24211d}.workshop-page .enchanter-item{border-color:#77614366}.workshop-page .enchanter-item-heading{gap:18px;align-items:center}.workshop-page .enchanter-item-heading .gear-icon{width:112px;height:112px}.workshop-page .enchanter-item-heading h2{font-size:1.65rem;color:#f0d8a8}.workshop-page .enchanter-item-heading p{font-size:.85rem;color:#bfb49f}
.workshop-page .enchanter-affix{background:#21221f;border-color:#6c604c}.workshop-page .enchanter-affix:has(input:checked){background:#393125;border-color:#c5a567;box-shadow:inset 3px 0 #c5a567}.workshop-page .enchanter-affix strong{font-size:.95rem;color:#ecdfc4}.workshop-page .enchanter-affix small{font-size:.75rem;color:#bcb29f}.workshop-page .enchanter-affix input{accent-color:#cbae73}
.workshop-page .enchanter-operation>header h3{color:#e7c991;font-size:1.5rem}.workshop-page .enchanter-operation>header p{font-size:.85rem;color:#c6bca9}.workshop-page .enchanter-operation .workshop-operations{border-color:#766042;gap:4px}.workshop-page .enchanter-operation .workshop-operations>button{border-radius:4px;color:#bfb6a5;min-height:78px}.workshop-page .enchanter-operation .workshop-operations>button[aria-pressed=true]{background:#45351f66;color:#f0d7a9;box-shadow:inset 0 -3px #c6a264}.workshop-page .enchanter-operation .workshop-operations strong{font-size:.8rem;line-height:1.4}.workshop-page .enchanter-operation .workshop-operations .gear-icon{width:38px;height:38px}
.workshop-page .enchanter-action-strip{background:#27221b;border-color:#806844;gap:24px;padding:20px 24px}.workshop-page .enchanter-payment .workshop-cost{background:none;border:0}.workshop-page .enchanter-payment .workshop-cost>div{padding:0}.workshop-page .enchanter-confirm p.workshop-risk{font-size:.8rem}.wayfarer-shell .workshop-page .enchanter-confirm [data-enchant-submit]{background:linear-gradient(#6f5531,#45311e);border-color:#c5a56b;box-shadow:inset 0 0 0 2px #2b2117;color:#f6e5c5;min-height:48px;font-size:.95rem}
.workshop-page .enchanter-sheet p.enchanter-preview-note{font-size:.8rem;color:#bbb2a2}.workshop-page .enchanter-pool{font-size:.85rem;line-height:1.6}.workshop-page .tier-odds>div{background:#2d291f}.workshop-page .tier-odds dt{color:#bfb5a1}.workshop-page .tier-odds dd{color:#efd9ae}.workshop-page :is(button,input,select,summary):focus-visible{outline:2px solid #efd090;outline-offset:2px}
.workshop-page .enchanter-affix.tier-heading{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:20px 0 8px;padding:0;border:0;background:none;color:#c8b99c;font:.8rem/1.5 system-ui;min-height:0}.workshop-page .enchanter-affix.tier-heading small{color:#b1a68f}
@media(max-width:900px){.workshop-page .workshop-layout{grid-template-columns:minmax(0,1fr)}.workshop-page .workshop-items{max-height:240px}}
@media(max-width:760px){.workshop-page .enchanter-item-heading .gear-icon{width:96px;height:96px}.workshop-page .enchanter-operation .workshop-operations{grid-template-columns:repeat(3,minmax(0,1fr))}.workshop-page .enchanter-item-heading h2{font-size:1.4rem}.workshop-page .enchanter-item,.workshop-page .enchanter-operation{padding:18px}.workshop-page .enchanter-action-strip{padding:18px}}
@media(max-width:600px){.workshop-page .workshop-workpiece{grid-template-columns:90px minmax(0,1fr);gap:14px}.workshop-page .workshop-item-stage{width:90px;height:90px}.workshop-page .workshop-item-stage>.gear-icon{width:76px;height:76px}.workshop-page .workshop-workpiece h2{font-size:1.4rem}.workshop-page .workshop-cost>div{padding:10px}.workshop-page .workshop-chance small{flex-basis:100%;margin-left:0}.workshop-page .enchanter-action-strip{gap:16px}.workshop-page .workshop-heading{flex-wrap:wrap}}
@media(max-width:360px){.workshop-page .enchanter-item-heading{gap:12px;align-items:start}.workshop-page .enchanter-item-heading .gear-icon{width:72px;height:72px}.workshop-page .enchanter-item-heading h2{font-size:1.2rem}.workshop-page .enchanter-item,.workshop-page .enchanter-operation,.workshop-page .enchanter-action-strip{padding:14px}.workshop-page .workshop-workpiece{grid-template-columns:76px minmax(0,1fr);gap:12px}.workshop-page .workshop-item-stage{width:76px;height:76px}.workshop-page .workshop-item-stage>.gear-icon{width:66px;height:66px}.workshop-page .workshop-workpiece h2{font-size:1.2rem}}

/* Keep Town service navigation uniform on narrow screens. */
@media(max-width:430px){.mmo-shell .section-tabs[aria-label="Town sections"]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.mmo-shell .section-tabs[aria-label="Town sections"]>.section-tab{min-width:0;min-height:44px;white-space:normal;overflow-wrap:normal;word-break:normal}}
/* Threat meter (IRP_THREAT_METER_VERSION=1): the Threat tab rows; drawn only while that switch and IRP_THREAT_TACTICS_VERSION are on. */
.meter-threat .meter-person strong{color:var(--meter-color);font-weight:700;overflow-wrap:anywhere}.meter-threat.is-ahead b{color:#ff9f86}.meter-threat.is-ahead .meter-track i{background:#e0664a}.meter-threat.is-dead{opacity:.6}.damage-meter [data-meter-reset][hidden]{display:none}

/* Player report (8 Oct): a wider DPS total wrapped "Combat meter" onto two lines, so the meter grew and shrank as the number changed. The title stays on one line. */
.damage-meter header>div{min-width:0}.damage-meter h3{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.damage-meter header>strong{white-space:nowrap;font-variant-numeric:tabular-nums}
/* Simpler screens (IRP_UI_PLAIN_VERSION): role stats first in two columns where there is room, the rest in the All stats fold (public/character-stats.js). */
.character-role-stats .character-stat-group dl{columns:2 20rem;column-gap:28px}.character-role-stats .character-stat{break-inside:avoid}.character-all-stats{margin-bottom:12px}.character-all-stats>.character-stat-groups{padding:0 14px;margin:8px 0 14px}

/* /homecoming.css */
/* Return summaries and illustrated field lessons share the existing realm palette. */
.return-backdrop{padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}
.return-dialog{width:min(760px,100%);min-width:0;max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);display:flex;flex-direction:column;border:1px solid #c89b58;border-radius:12px;overflow:hidden;background:#132029;color:#efe5cf;box-shadow:0 24px 80px #0009}
.return-dialog>header{flex:none;padding:28px 30px 22px;background:linear-gradient(90deg,#0c1c29e8,#101d26a6),url('/assets/evermarch/gateway-v1.webp') center 42%/cover;border-bottom:1px solid #967744}
.return-dialog .eyebrow{margin:0;color:#e5be78;font:.6875rem/1.5 system-ui;letter-spacing:.16em}
.return-dialog h2{font:2rem/1.25 Georgia,serif;margin:12px 0;color:#f3d69e;overflow-wrap:anywhere}.return-dialog header>p:not(.eyebrow){margin:0 0 10px;color:#e7dec9}
.return-duration{font:.8125rem/1.5 system-ui;color:#d9c7a8}.return-content{overflow-y:auto;min-height:0;padding:22px 28px;overscroll-behavior:contain;overflow-anchor:none}
.return-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.return-stat{grid-column:span 2;padding:17px 10px;display:flex;align-items:center;flex-direction:column;gap:9px;background:linear-gradient(145deg,#22343d,#18262e);border:1px solid #657065;border-radius:7px;text-align:center;min-width:0}.return-stat.xp,.return-stat.gold{grid-column:span 3}.return-stat svg{width:28px;height:28px;fill:none;stroke:#d1ad68;stroke-width:1.7;stroke-linejoin:round}.return-stat span{color:#cfc8b7;font:.8125rem/1.4 system-ui}.return-stat strong{font:1.75rem/1.1 Georgia,serif;color:#fae3b0;overflow-wrap:anywhere}
.return-level{padding:14px;border:1px solid #8a965d;border-radius:6px;color:#d2e3b0;line-height:1.7;text-align:center;background:#33473044}.return-note,.return-dialog .small-note{font:.8125rem/1.6 system-ui;color:#cbc8bb}.return-dialog .small-note{color:#aeb8b8}
.return-left-group{margin:0 0 16px;padding:14px 16px;border:2px solid #d9a441;border-left-width:8px;border-radius:8px;background:#4a2a1ccc;color:#fbe9c2;font:1rem/1.55 Georgia,serif;overflow-wrap:anywhere}.return-left-group strong{font-weight:700}
.return-xp-details{margin-top:14px;border-top:1px solid #52605b;font:.875rem/1.6 system-ui;color:#cbc8bb}.return-xp-details summary{min-height:44px;padding:12px 0;cursor:pointer;color:#f3d69e}.return-xp-details a{display:inline-block;min-height:44px;padding:10px 0;color:#f3d69e}.return-xp-details p{margin:8px 0}
.return-dialog>footer{flex:none;display:flex;gap:10px;padding:16px 28px;background:#0f1b23;border-top:1px solid #52605b}.return-dialog>footer button{min-height:46px;flex:1;min-width:0}
@media(max-width:550px){.return-dialog>header{padding:20px}.return-dialog h2{font-size:1.625rem}.return-content{padding:15px}.return-dialog>footer{padding:12px;flex-direction:column}.return-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.return-stat,.return-stat.xp,.return-stat.gold{grid-column:auto}.return-stat:last-child{grid-column:1/-1}.return-stat{padding:12px 8px}.return-stat strong{font-size:1.5625rem}}
@media(max-height:500px){.return-dialog>header{padding:12px 20px}.return-dialog h2{font-size:1.4375rem;margin:6px 0}.return-dialog>header>p:not(.eyebrow){display:none}.return-dialog>footer{flex-direction:row;padding:10px}}

.portrait-xp-warning{display:block;max-width:100%;min-height:24px;padding:2px 0;border:0;background:none;box-shadow:none;color:#ffca86;font:inherit;font-size:.6875rem;line-height:1.4;text-align:left;white-space:normal;text-decoration:underline dotted;text-underline-offset:3px;cursor:pointer}.portrait-xp-warning:focus-visible{outline:2px solid #ffca86;outline-offset:2px}.portrait-xp-warning[hidden]{display:none}

/* Keep the complete return summary reachable when enlarged text fills the header. */
.return-dialog{overflow-y:auto;overscroll-behavior:contain;overflow-anchor:none}
.return-dialog>.return-content{flex:none;overflow:visible}
.return-dialog h2{word-break:normal;overflow-wrap:break-word}

/* Welcome back with the offline-limit notice (IRP_OFFLINE_LIMIT_REMOVE_VERSION, default off; QA of 0.58.0-challenge.1, 5 Oct 2026): on a short screen (landscape phone) the two action buttons used to sit below the fold of the dialog's own scroll. Only a dialog that carries the loud notice has .return-dialog-limit (public/return-view.js adds it only when the data has limitNotice), so every other Welcome back window is untouched. The header and the footer keep their height, the body scrolls inside the dialog, and the buttons stay pinned (46 px, the existing rule). */
@media(max-height:500px){.return-dialog.return-dialog-limit{overflow:hidden}.return-dialog.return-dialog-limit>header{flex:none}.return-dialog.return-dialog-limit>.return-content{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}.return-dialog.return-dialog-limit>footer{flex:none}.return-dialog.return-dialog-limit .return-content>.inline-error{position:sticky;bottom:-22px;margin:8px 0 0;padding:8px 0;background:#132029}}
@media(max-height:500px) and (max-width:550px){.return-dialog.return-dialog-limit .return-content>.inline-error{bottom:-15px}}
@media(max-height:380px){.return-dialog.return-dialog-limit>header{padding:6px 16px}.return-dialog.return-dialog-limit .eyebrow{display:none}.return-dialog.return-dialog-limit h2{font-size:1.1875rem;margin:2px 0}.return-dialog.return-dialog-limit .return-duration{font-size:.75rem}.return-dialog.return-dialog-limit>footer{padding:6px 10px}}

/* /tutorial-visuals.css */
.tutorial-visual{margin:20px 0;padding:16px;background:linear-gradient(135deg,#20343a,#0c1c23);border:1px solid #82734f;border-radius:8px;min-width:0;max-width:100%}.tutorial-visual figcaption{font:.8125rem/1.55 system-ui;color:#c2cfc8;border-top:1px solid #526159;padding-top:12px;margin-top:14px}.tutorial-pair{display:grid;grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);align-items:center;gap:10px}.tutorial-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;min-width:0}.tutorial-card>.gear-icon{width:84px;height:84px;flex:none}.tutorial-card strong{font:1rem/1.4 Georgia;color:#f2d9a7;overflow-wrap:anywhere}.tutorial-card small{font:.75rem/1.45 system-ui;color:#bfd0ca}.tutorial-arrow{color:#e5c283;font-size:1.625rem;text-align:center}.tutorial-route>img{width:100%;height:170px;object-fit:cover;object-position:center 56%;border-radius:5px}.tutorial-route ol{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,3.5rem),1fr));padding:0;gap:8px;margin:12px 0 0;list-style:none}.tutorial-route li{text-align:center;color:#eed3a5;font:.875rem/1.4 Georgia}.tutorial-route b{display:block;margin:0 auto 7px;border:1px solid #b39869;border-radius:50%;width:30px;line-height:1.75rem;background:#2b443c}.tutorial-monsters{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,3.5rem),1fr));gap:14px}.tutorial-monsters img{width:100%;height:125px;object-fit:contain}.tutorial-party,.tutorial-outfits{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.tutorial-outfits img{width:100%;height:180px;object-fit:contain}.tutorial-party img{width:64px;height:64px;object-fit:cover}.tutorial-skill{width:100%;height:auto;max-height:170px}.tutorial-odds{font:.75rem/1.5 system-ui;color:#cbd8d1;margin-top:15px}.tutorial-odds>div{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin-top:8px}.tutorial-odds b{width:26px;height:26px;border:1px solid #8d7158;text-align:center;line-height:1.5rem;background:#43342b}.tutorial-odds strong{color:#d5eaae;margin-left:5px}.field-lessons li>div{min-width:0;width:100%}.field-lessons .tutorial-visual{max-width:640px}.recovery-help{margin:12px;padding:16px}.settings-modal .recovery-help{margin:0 0 20px;padding:0}.settings-modal{max-height:calc(100dvh - 28px);overflow:auto;overscroll-behavior:contain}
@media(max-width:600px){.tutorial-visual{padding:12px}.tutorial-party,.tutorial-outfits{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.tutorial-outfits img{height:160px}.tutorial-monsters{gap:6px}.tutorial-monsters img{height:90px}.tutorial-monsters strong{font-size:.8125rem}.tutorial-card>.gear-icon{width:64px;height:64px}.tutorial-card strong{font-size:.875rem}.tutorial-pair{gap:5px;grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr)}.tutorial-route>img{height:130px}.tutorial-route li{font-size:.75rem}}
/* Large browser text: the arrow column grows with the text; the route steps let their number sit above the words when the words need the room
   (the lesson list's own flex row and padding otherwise squeeze them), and the side padding shrinks as text grows (18 px at the default 16 px).
   A lesson card narrower than 11.5rem inside its padding (large text, or phones under about 380 px at the default size, where words already broke) stacks the pair and gives each
   creature and route step a full row, so no word is broken in the middle. */
.tutorial-visual{container:tutorial/inline-size}
.tutorial-pair{grid-template-columns:minmax(0,1fr) 1.75rem minmax(0,1fr)}
.field-lessons .tutorial-route li{flex-wrap:wrap;justify-content:center;padding-inline:clamp(4px,calc(36px - 1.125rem),18px)}
@media(min-width:601px){.field-lessons .tutorial-route li{font-size:min(.875rem,18px)}}
@media(max-width:600px){.tutorial-pair{grid-template-columns:minmax(0,1fr) 1.25rem minmax(0,1fr)}}
@container tutorial (max-width:11.5rem){.tutorial-pair{grid-template-columns:minmax(0,1fr);justify-items:center}.tutorial-arrow{transform:rotate(90deg)}.tutorial-monsters,.tutorial-route ol{grid-template-columns:minmax(0,1fr)}.tutorial-party,.tutorial-outfits{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* /party-recruitment.css */
.party-recruitment>header{display:flex;align-items:center;justify-content:space-between;gap:16px}.party-recruitment h2 span{color:#bbab85;font:1rem system-ui}.recruitment-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:12px;margin-top:20px}.recruitment-card{display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px;border:1px solid #655b42;border-radius:8px;background:linear-gradient(120deg,#25373a,#151d22)}.recruitment-card h3{margin:0 0 5px;color:#ecd2a1;overflow-wrap:anywhere}.recruitment-card p{margin:0 0 3px}.recruitment-card small,.stored-party small{display:block;color:#c1c0b5}.recruitment-card .tavern-portrait{width:58px;height:72px;min-width:0}.recruitment-card button{min-height:44px;min-width:66px;padding:10px}.stored-party{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 0;border-top:1px solid #516063}.stored-party strong{overflow-wrap:anywhere}.party-empty{padding:20px;border:1px dashed #5f665d;border-radius:8px}.party-disband{max-width:540px;width:100%;overflow:auto}.party-disband h2{overflow-wrap:anywhere}
#partyInvitations{position:fixed;z-index:220;right:max(16px,env(safe-area-inset-right));bottom:calc(var(--mobile-nav-height,0px) + 16px + env(safe-area-inset-bottom));width:min(365px,calc(100vw - 32px));pointer-events:none;max-height:calc(100svh - var(--mobile-nav-height,0px) - 100px);overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}#partyInvitations:empty{display:none}.party-invitation{pointer-events:auto;padding:18px;background:linear-gradient(145deg,#243940,#101c23);border:1px solid #d1ad64;border-radius:12px;box-shadow:0 12px 35px #0009;margin-top:8px}.party-invitation h2{font-size:1.375rem;line-height:1.25;color:#f2d6a0;margin:5px 0 10px;overflow-wrap:anywhere}.party-invitation p{line-height:1.45;margin:8px 0}.party-invitation .eyebrow{font-size:.6875rem;letter-spacing:2px;color:#d5b273}.party-invitation .small-note{font-size:.8125rem;color:#c7d0cd}.invite-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.invite-actions button{min-height:44px;font-size:1rem}.invite-deadline{color:#eac889;font-size:.8125rem}.invite-feedback{pointer-events:auto;background:#39251f;color:#ffdbc8;padding:12px;border-radius:8px}.invite-queue{color:#e1d1b7;background:#1c282e;padding:6px 12px;font-size:.8125rem}
@media(max-width:600px){.recruitment-card{grid-template-columns:48px minmax(0,1fr);gap:10px}.recruitment-card .tavern-portrait{width:48px;height:62px}.recruitment-card button{grid-column:1/-1}.party-invitation{padding:14px}.party-invitation h2{font-size:1.1875rem}.party-invitation .small-note{font-size:.75rem}.stored-party{align-items:stretch;flex-direction:column}#partyInvitations{right:8px;width:calc(100vw - 16px);bottom:calc(var(--mobile-nav-height,72px) + 8px + env(safe-area-inset-bottom))}}
.wayfarer-shell .party-workspace{display:block}.party-workspace>section,.party-workspace>#partyRecruitment{margin-bottom:20px}.party-workspace .recruitment-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.community-chat .chat-channels{grid-template-columns:repeat(4,minmax(0,1fr))}.community-chat .chat-channels button{padding-inline:6px;font-size:.75rem;min-height:44px}#recruitmentBoard{min-height:0;overflow:auto;padding:16px;overscroll-behavior:contain}.recruitment-board h2{margin:0;color:#f2d6a0}.recruitment-board header p{color:#c6d0ce;font-size:.8125rem;line-height:1.5}.recruitment-board form{display:flex;flex-wrap:wrap;gap:8px;padding:12px 0 18px;border-bottom:1px solid #536064}.recruitment-board label{flex:1 1 100%}.recruitment-board select{width:100%;min-height:44px}.recruitment-board button{min-height:44px}.recruitment-listings{display:grid;gap:12px;margin-top:14px}.recruitment-listings article{padding:14px;border:1px solid #536064;border-radius:8px;background:#182b33}.recruitment-listings h3{margin:6px 0;color:#e8cfa5;overflow-wrap:anywhere}.recruitment-listings h3 small{float:right;color:#bcc9c8}.recruitment-listings p{font-size:.8125rem;line-height:1.5}.recruitment-listings article>small{display:block;margin-top:6px;color:#c6d0ce}.recruitment-listings .status-pill{display:inline-block;margin-right:8px}

.party-player-search{display:grid;gap:.5rem;margin-top:1rem;color:var(--gold,#e0c58b)}.party-player-search input{width:100%;box-sizing:border-box;min-width:0}.party-recruitment .recruitment-card>div{min-width:0}.party-recruitment .recruitment-card h3{overflow-wrap:anywhere}
.party-invites{padding:14px 16px}.party-invites h2{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-size:1.25rem}.party-invites h2 .attention-badge{margin:0}.party-invites>.small-note{margin:0 0 6px;font-size:.8125rem;color:#c7d0cd}.party-invite{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;padding:9px 0;border-top:1px solid #516063}.party-invite>div:first-child{flex:1 1 150px;min-width:0}.party-invite strong{display:block;color:#ecd2a1;overflow-wrap:anywhere}.party-invite small{display:block;color:#c1c0b5}.party-invite .az-actions{display:flex;gap:8px;flex:0 0 auto;margin:0}.party-invite button{min-height:40px;padding:6px 14px}
.invite-deadline{display:flex;align-items:center;justify-content:space-between;gap:8px}.invite-deadline .text-button{min-height:32px;padding:2px 8px;color:#f2d6a0;background:none;border:0;font-size:.8125rem;text-decoration:underline;cursor:pointer}
@media(max-width:600px){.party-invite .az-actions{flex:1 1 100%}.party-invite .az-actions button{flex:1}}
.party-gear-button{margin-top:6px;min-height:44px;padding:4px 12px;font-size:.8125rem}
.party-gear-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px}.party-gear-tile{display:flex;align-items:center;gap:8px;min-width:0;padding:4px 8px;text-align:left;color:inherit;background:#14222a;border:1px solid #69746e;border-radius:6px}.party-gear-tile[aria-pressed="true"]{border-color:#d1ad64;background:#1d3038}.party-gear-tile .gear-icon{flex:0 0 36px;width:36px;height:36px}.party-gear-tile span{display:block;min-width:0}.party-gear-tile small{display:block;color:#cab580;font-size:.6875rem}.party-gear-tile b{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:.8125rem;line-height:1.2;overflow-wrap:break-word}
.party-gear-card{margin-top:10px;padding:10px;border:1px solid #69746e;background:#101c23}.party-gear-card h3{margin:0 0 4px}.party-gear-card .item-detail-title{gap:10px}.party-gear-card .gear-icon{width:48px;height:48px}
@media(max-width:400px){.party-gear-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.party-gear-tile{gap:6px;padding:4px 6px}.party-gear-tile b{font-size:.75rem;overflow-wrap:break-word}}
.party-invitation [data-invite-later]{min-height:44px;min-width:44px;padding:0 10px}
/* Raid invite with a picked role (IRP_RAID_INVITE_ROLE_VERSION, default off). Only the new raid cards use these classes; 44 px targets, wraps at 320 px. */
.raid-invite-roles{border:1px solid #69746e;border-radius:8px;margin:8px 0;padding:6px 10px;min-width:0}.raid-invite-roles legend{padding:0 6px;font-size:.875rem}
.raid-invite-role-option{display:flex;align-items:center;gap:10px;min-height:44px;font-size:1rem}.raid-invite-role-option input{width:24px;height:24px;flex:none}
.raid-invite-role{margin:6px 0;font-size:1rem;overflow-wrap:anywhere}.raid-invite-reason{color:#f0b9a0;font-size:.875rem;margin:6px 0;overflow-wrap:anywhere}
.raid-invite small{display:block;margin-top:4px;overflow-wrap:anywhere}.raid-invite .az-actions button,.raid-invitation .invite-actions button{min-height:44px}.raid-offline-note,.uh-offline{overflow-wrap:anywhere}
/* Raid invite pop-up on a short landscape screen (IRP_RAID_INVITE_ROLE_VERSION, default off). Only the gated raid card carries .raid-invitation / .raid-invite-side / .raid-invite-note, so the older pop-up is untouched. The pop-up lasts 30 s (the page counts 30 to 1); this CSS never changes it. */
.raid-invitation .eyebrow{font-size:.75rem}.raid-invite-side{display:contents}
/* Short landscape (phones): role and copy in the left column; the reminder, Later, Accept and Decline in a fixed-width right column that is sticky to the bottom of the scroll box. The card has no padding of its own (its children carry the margins) so the sticky column can reach the bottom edge of the box. The reminder never wraps (nowrap, fixed 156 px minimum column), so the column height does not change when the seconds drop from two digits to one. */
@media(max-height:480px) and (orientation:landscape){.raid-invitation{display:grid;grid-template-columns:minmax(0,1fr) minmax(156px,40%);column-gap:0;row-gap:0;align-items:start;padding:0}.raid-invitation>*{grid-column:1;min-width:0;margin:0 0 0 12px}.raid-invitation .eyebrow,.raid-invitation .raid-invite-note{display:none}.raid-invitation h2{font-size:1rem;line-height:1.2;margin:10px 0 4px 12px}.raid-invitation p{font-size:.875rem;line-height:1.3;margin:2px 0 2px 12px}.raid-invitation>:nth-last-child(2){margin-bottom:10px}.raid-invitation .raid-invite-roles{display:flex;flex-wrap:wrap;column-gap:4px;margin:4px 0 0 12px;padding:0 6px 2px}.raid-invitation .raid-invite-role-option{font-size:.9375rem;min-height:44px}.raid-invitation>.raid-invite-side{display:flex;flex-direction:column;gap:6px;grid-column:2;grid-row:1/span 20;align-self:end;position:sticky;bottom:0;margin:0;padding:8px 12px 8px 10px}.raid-invitation .invite-deadline{flex-direction:column;align-items:stretch;gap:0;font-size:.75rem;line-height:1.3;text-align:center}.raid-invitation .invite-deadline>span{white-space:nowrap}.raid-invitation .invite-actions{grid-template-columns:minmax(0,1fr);gap:6px;margin-top:0}.raid-invitation .invite-actions button{min-height:44px;font-size:.9375rem;line-height:1.15;padding:6px 8px}}
/* Very short landscape (about 360 px and below): one pinned strip along the bottom of the box, Accept, Decline and the reminder with Later in a single row, so both buttons are fully visible even when the box is only about 130 px tall. */
@media(max-height:360px) and (orientation:landscape){.raid-invitation{grid-template-columns:minmax(0,1fr)}.raid-invitation>*{margin-right:12px}.raid-invitation>.raid-invite-side{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:6px;align-items:stretch;grid-column:1/-1;grid-row:auto;align-self:end;position:sticky;bottom:0;margin:0;padding:6px 12px;background:#101c23;border-top:1px solid #4d5a58;border-radius:0 0 11px 11px}.raid-invitation .invite-actions{display:contents}.raid-invitation .invite-actions button:first-child{order:1}.raid-invitation .invite-actions button:last-child{order:2}.raid-invitation .invite-deadline{order:3;justify-content:center}.raid-invitation .invite-actions button{font-size:.875rem}}

/* /party-trade.css */
.party-trade{width:min(720px,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto;padding:18px;display:grid;gap:12px;text-align:left}.party-trade header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.party-trade h2{margin:2px 0}.party-trade .eyebrow{margin:0}.trade-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px}.party-trade fieldset{margin:0;padding:10px 12px;border:1px solid #645b46;border-radius:6px;min-width:0;background:#101c22}.party-trade legend{padding:0 6px;color:#e6c98f;font-size:.8125rem}.party-trade fieldset ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}.party-trade fieldset li{padding:4px 0;border-top:1px solid #34494a;font-size:.875rem}.party-trade fieldset li:first-child{border-top:0}.trade-gold{display:grid;gap:4px;margin-bottom:8px}.trade-gold input,.trade-list input[type=number]{min-height:44px;font-size:1rem;min-width:0;width:100%;box-sizing:border-box}.trade-picker{margin-top:6px}.trade-picker summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:8px}.trade-list{display:grid;gap:4px;max-height:190px;overflow:auto}.trade-list label{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px}.trade-list label>span{flex:1;min-width:0}.trade-list small{color:#aebbb6}.trade-list input[type=checkbox]{width:22px;height:22px;flex:0 0 22px}.trade-list input[type=number]{width:96px;flex:0 0 96px}.trade-status{margin:0;color:#d6cbb5}.trade-error{margin:0;color:#ffb3a7}.trade-open{min-height:44px;margin-top:8px}.trade-reason{display:block;margin-top:4px;color:#aebbb6;font-size:.6875rem;line-height:1.35}.party-trade .az-actions{display:flex;gap:10px;flex-wrap:wrap}.party-trade .az-actions button,.party-trade header button{min-height:44px}
@media(max-width:640px){.trade-columns{grid-template-columns:1fr}.party-trade{padding:12px}.party-trade header{flex-wrap:wrap}}
.trade-set-note{margin:0;font-size:.8125rem;line-height:1.4;overflow-wrap:anywhere}

/* /three-paths.css */
.paths-page{max-width:1280px;margin:auto;--path-tone:#d8b87d}.paths-heading{display:flex;justify-content:space-between;gap:24px;align-items:center}.paths-heading h1{font:2rem Georgia,serif;color:#eed8af;margin:8px 0}.paths-heading p{color:#b9bdba;line-height:1.55}.paths-budgets{display:flex;flex-wrap:wrap;gap:14px;justify-content:flex-end;max-width:340px}.paths-budgets>span{padding:12px;border:1px solid #646358;border-radius:8px;background:#142329}.paths-budgets strong{font:1.625rem Georgia,serif;color:#efd092;margin-right:6px}.paths-budgets small{width:100%;color:#bdc2bd;font-size:.75rem;text-align:right}.path-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:24px 0 0}.path-tabs button{min-height:74px;padding:12px;background:linear-gradient(145deg,#243139,#141a20);border:1px solid #55594f;border-bottom:3px solid var(--tab-tone);border-radius:8px;color:#ddd0b7;text-align:left}.path-tabs button[aria-pressed=true]{background:linear-gradient(145deg,#343c3e,#293138);outline:1px solid var(--tab-tone)}.path-tabs strong,.path-tabs small{display:block;overflow-wrap:anywhere}.path-tabs strong{font:1.125rem Georgia,serif;color:var(--tab-tone)}.path-tabs small{margin-top:7px;font-size:.75rem}.path-intro{padding:20px 0 8px}.path-intro h2{font:1.5625rem Georgia,serif;color:var(--path-tone);margin:6px 0}.path-intro p{line-height:1.6;color:#c0c4be}.paths-workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.9fr);gap:24px;align-items:start}.path-node-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.path-node{position:relative;min-height:120px;display:flex;align-items:center;gap:10px;padding:14px 10px;background:linear-gradient(140deg,#1b2930,#10181e);border:1px solid #515953;border-radius:9px;color:#cdc6b8;text-align:left}.path-node .path-art{width:58px;height:58px;flex-shrink:0}.path-node strong{display:block;font:1rem/1.25 Georgia,serif;margin:6px 0;color:#e9d6b7;overflow-wrap:anywhere}.path-node small{font:.625rem system-ui;color:#a4aba6;letter-spacing:.12em}.path-node em{font:.6875rem system-ui;color:#b1b8b0}.path-node>i{position:absolute;right:7px;top:5px;color:#b69962;font-style:normal}.path-node.selected{border-color:var(--path-tone);box-shadow:inset 0 0 24px #d5bb8112}.path-node.learned{background:linear-gradient(140deg,#2c3334,#16232a)}.path-rule{grid-column:1/-1;font-size:.8125rem;color:#a5aca8;line-height:1.6}.path-inspector{min-width:0;border:1px solid #80705b;border-radius:10px;padding:22px;background:radial-gradient(ellipse at top right,#46403b40,transparent 65%),#151f26;box-shadow:0 10px 26px #0003}.path-inspector-title{display:flex;gap:16px;align-items:center}.path-inspector-title .path-art{width:80px;height:80px;flex-shrink:0}.path-inspector h2{font:1.625rem/1.2 Georgia,serif;color:#ecd6ad;margin:8px 0;overflow-wrap:anywhere}.path-inspector-title strong{font-size:.8125rem;color:var(--path-tone)}.path-trigger{font:.9375rem/1.6 Georgia,serif;color:#d1d8d2;border-left:2px solid var(--path-tone);padding:8px 0 8px 14px}.path-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0}.path-stats>div{background:#0d171c;padding:11px;border-radius:5px}.path-stats dt{font-size:.6875rem;color:#aeb9b5;text-transform:uppercase;letter-spacing:.07em}.path-stats dd{margin:5px 0 0;color:#e8d0a9;font-size:.9375rem}.path-rank-preview h3{font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--path-tone);margin:18px 0 6px}.path-rank-preview p,.path-inspector details p{font-size:.875rem;line-height:1.7;color:#c8c8bd}.path-inspector details{margin-top:14px}.path-inspector summary{min-height:44px;cursor:pointer;color:#d7bf92;line-height:1.5}.path-allocation-reason{font-size:.8125rem;line-height:1.5;color:#b5bcb6;margin-top:20px}.path-learn{width:100%;min-height:48px;white-space:normal;line-height:1.4}.path-passives{margin-top:34px;border-top:1px solid #53574e;padding-top:24px}.path-passives h2{font:1.625rem Georgia,serif;color:#e0cfad}.path-passives header>p{line-height:1.5;color:#b9c2bc}.path-passive-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.path-passive-grid article{display:flex;gap:16px;justify-content:space-between;align-items:center;padding:16px;background:#18262c;border:1px solid #424f4b;border-radius:8px;min-width:0}.path-passive-grid h3{font:1.125rem Georgia,serif;color:#dfc99f;margin:0}.path-passive-grid p{font-size:.8125rem;line-height:1.5;color:#b9bdb5}.path-passive-grid small{color:#9fb6b6}.path-passive-grid button{min-width:48px;min-height:48px;flex-shrink:0}.path-reset,.path-migration{margin-top:22px;border:1px solid #505b55;padding:14px;border-radius:7px}.path-reset summary,.path-migration summary{min-height:44px;cursor:pointer;line-height:1.5}.path-reset p,.path-migration p{line-height:1.6;color:#b5bcb4}.path-portrait-skills{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:4px;margin-top:8px;max-width:100%}.path-portrait-skill{position:relative;display:block;aspect-ratio:1;border:1px solid #78664b;border-radius:5px;overflow:hidden;min-width:0}.path-portrait-skill .path-art{display:block;width:100%;height:100%}.path-portrait-skill>i{position:absolute;inset:auto 0 0;background:#071017bd;pointer-events:none}.path-portrait-skill>small{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:bold .8125rem system-ui;color:#fff8df;text-shadow:0 1px 3px #000}.path-art{display:block}.paths-page button:focus-visible,.path-portrait-skill:focus-visible{outline:2px solid #f4db9e;outline-offset:3px}.path-portrait-skill:focus-visible{outline-offset:-3px}.paths-page button:disabled{opacity:.48;cursor:not-allowed}.sr-only{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important}
@media(max-width:850px){.paths-heading{align-items:start;flex-direction:column;gap:12px}.paths-budgets{justify-content:flex-start;max-width:none}.paths-budgets small{text-align:left}.paths-workspace{grid-template-columns:1fr}.path-node-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.path-node{flex-direction:column;align-items:flex-start;min-height:156px}.path-passive-grid{grid-template-columns:1fr}.path-tabs strong{font-size:1rem}}
@media(max-width:540px){.paths-page{padding:16px 12px}.paths-heading h1{font-size:1.75rem}.path-tabs{gap:6px}.path-tabs button{padding:10px 7px;min-height:82px}.path-tabs strong{font-size:.875rem;line-height:1.3}.path-tabs small{font-size:.6875rem}.path-node-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.path-node{min-height:132px;gap:6px;padding:12px}.path-node .path-art{width:48px;height:48px}.path-node strong{font-size:.9375rem}.path-inspector{padding:16px}.path-inspector h2{font-size:1.5rem}.path-inspector-title .path-art{width:64px;height:64px}.path-portrait-skills{grid-template-columns:repeat(auto-fill,minmax(44px,1fr))}.path-stats{gap:8px}.path-passive-grid article{gap:10px;padding:13px}}
@media(prefers-reduced-motion:reduce){.paths-page *{scroll-behavior:auto!important}}

.party-ability-icons[data-path-basics]>.skill-icon:nth-child(2){display:none}
.path-portrait-skill{padding:0;min-height:44px;min-width:44px;background:#121e26;color:#fff;cursor:pointer}.path-portrait-detail{grid-column:1/-1;padding:12px;border-top:1px solid #756349;background:#11222b;font-size:.8125rem;line-height:1.5}.path-portrait-detail p{margin:6px 0}.path-portrait-detail strong{color:#e8cc96}

.mmo-shell .path-party-card{flex-wrap:wrap}.path-party-card>.path-portrait-skills{flex-basis:100%;width:100%;margin-top:2px;grid-template-columns:repeat(auto-fit,minmax(44px,1fr))}

.mmo-shell .path-party-card{align-content:flex-start;align-items:flex-start}.path-party-card>.path-portrait-skills{align-content:start;align-self:flex-start;flex-grow:0}.path-party-card .portrait-effects{display:flex;height:54px;min-height:54px;overflow-y:auto;align-content:flex-start;overscroll-behavior:contain}.path-party-card .portrait-cast{height:28px}.path-party-card .portrait-cast-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.path-party-card>.portrait-effects{flex-basis:100%;width:100%;height:47px;min-height:47px;max-height:47px;flex-grow:0;scrollbar-gutter:stable}.path-party-card .portrait-effect{display:flex;gap:3px;align-items:center;max-width:100%;height:22px;box-sizing:border-box;flex-shrink:0}.path-party-card .portrait-effect-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.path-party-card .portrait-effect-time{white-space:nowrap;flex-shrink:0}
/* Keep combat first when the desktop columns collapse, including tablets and
   landscape phones. Identity panels remain directly below the battlefield. */
@media(max-width:1179px){.mmo-shell .arena-column{order:0}.mmo-shell .party-rail{order:1}.mmo-shell .right-rail{order:2}}
@media(max-width:540px){.path-tabs{display:flex;flex-wrap:wrap}.path-tabs button{flex:1 1 auto;max-width:100%}.path-tabs strong{white-space:nowrap;overflow-wrap:normal}}

.path-refund-notice{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px;padding:14px;border:1px solid #b99758;background:#182831;color:#f0dfbd;border-radius:8px}.path-refund-notice p{margin:5px 0 0;max-width:65ch}.path-refund-notice button{min-height:44px;flex-shrink:0}@media(max-width:540px){.path-refund-notice{flex-wrap:wrap}.path-refund-notice button{width:100%}}

.path-recommendation{margin:12px 0 20px;padding:12px;border:1px solid #947c50;border-radius:8px;background:#17262e}.path-recommendation summary{display:list-item;min-height:44px;padding:12px;cursor:pointer}.path-recommendation li{margin:7px 0}.path-recommendation button{min-height:44px;max-width:100%}.path-recommendation p{max-width:68ch}

.skill-estimate{border-left:2px solid #a98a57;background:#101b20;padding:.75rem;margin:.8rem 0}.skill-estimate-value{margin:.35rem 0}.skill-estimate-value strong{color:#edce93;font-size:1.25rem}.skill-estimate small,.skill-next-estimate span{color:#bab4a9;font-size:.78rem}.skill-calculation{margin-top:.7rem}.skill-calculation summary{min-height:44px;display:flex;align-items:center;cursor:pointer}.skill-calculation dl>div{display:flex;justify-content:space-between;gap:1rem;margin:.45rem 0}.skill-calculation dd{margin:0;text-align:right;white-space:nowrap}.skill-rank-table{max-height:16rem;overflow:auto}.skill-rank-table table{width:100%;border-collapse:collapse;font-size:.8rem}.skill-rank-table th,.skill-rank-table td{text-align:left;padding:.4rem;border-bottom:1px solid #334048}.skill-rank-table tr[aria-current=true]{background:#403827}.skill-rank-table caption{text-align:left;margin:.6rem 0}.path-portrait-detail .skill-estimate{margin:.4rem 0}

.path-inspector-title .talent-gain{display:block;margin-top:4px;line-height:1.5;color:#a8d8b7}

/* Keep short rank-table labels intact on narrow skill inspectors. */
.skill-rank-table table{table-layout:auto}.skill-rank-table th:nth-child(-n+2),.skill-rank-table td:nth-child(-n+2){white-space:nowrap;overflow-wrap:normal;width:1%}
/* Allocate a reviewed group of points with the same controls on touch and desktop. */
.path-allocation-controls{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
.path-allocation-controls label{display:grid;gap:5px;flex:1;min-width:90px}
.path-allocation-controls select,.path-allocation-controls button{min-height:44px}
.path-allocation-controls select{width:100%;color:inherit;background:#16222c;border:1px solid #796649;border-radius:4px;padding:8px}

/* Two saved skill specs share the existing reset rules. */
.skill-specs{margin:16px 0;padding:16px;border:1px solid #716342;background:#131e29}.skill-specs h2{margin:0 0 8px}.skill-spec-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.skill-spec{min-width:0;padding:12px;border:1px solid #44505b}.skill-spec.selected{border-color:#bba05b;background:#c8ac5810}.skill-spec h3{margin-top:0}.skill-spec-actions{display:flex;flex-wrap:wrap;gap:8px}.skill-spec-actions button{min-height:44px;white-space:normal;flex:1;min-width:110px}@media(max-width:600px){.skill-spec-grid{grid-template-columns:1fr}.skill-specs{padding:12px}.skill-spec-actions button{min-width:100px}}

.path-first-specs{margin:12px 0;border:1px solid #786747;border-radius:4px;padding:0 12px}.path-first-specs>summary{cursor:pointer;min-height:44px;padding:12px 0;color:#e8ce92;font:600 .9rem/1.4 system-ui}.path-first-specs>summary:focus-visible{outline:2px solid #efcf91;outline-offset:2px}

.path-next-cost{display:block;margin-top:3px;color:#c0bba9;font:400 .75rem/1.35 system-ui}
.path-next-milestone{margin:12px 0;padding:12px 16px;border-left:3px solid var(--path-tone,#bda76c);background:#19232b;border-radius:4px}.path-next-milestone p{margin:6px 0;line-height:1.5}.path-next-milestone small{display:block;color:#bdc6cd;line-height:1.5}

.path-unused-skills{margin-top:14px;padding-top:12px;border-top:1px solid #ffffff24}.path-unused-skills>div{display:flex;flex-wrap:wrap;gap:8px}.path-unused-skills button{display:flex;flex-direction:column;align-items:flex-start;max-width:100%;white-space:normal;text-align:left}.path-unused-skills small{opacity:.8}

.skill-spec-abilities{list-style:none;padding:0;margin:10px 0;display:grid;gap:5px}.skill-spec-abilities li{overflow-wrap:anywhere}.skill-spec-abilities small{display:inline-block;min-width:46px;opacity:.75}

.path-milestone-options{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.path-milestone-options button{flex:1 1 150px;min-width:0;text-align:left;white-space:normal}.path-milestone-options button strong{display:block;overflow-wrap:anywhere}.path-milestone-options button small{margin-top:4px}

/* Default choices follow actual unlock levels; the original links stay optional. */
.path-tier-browser{min-width:0;width:100%;box-sizing:border-box}.path-choice-rule{margin:0 0 18px;color:#c3c9c3;font-size:.875rem;line-height:1.6}
.path-tier-group{margin:0 0 20px}.path-tier-group>summary{display:list-item;min-height:44px;box-sizing:border-box;padding:10px 0;border-bottom:1px solid #716448;cursor:pointer;color:#e6d1a2}.path-tier-group[open]>summary{margin-bottom:10px}
.path-tier-group>summary>strong{font:1.25rem Georgia,serif}.path-tier-group>summary>span{float:right;color:#aebbb8;font-size:.75rem;padding-top:4px}.path-tier-group>summary:focus-visible{outline:2px solid #f4db9e;outline-offset:3px}
.path-tier-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.path-tier-choice{display:flex;flex-direction:column;align-items:stretch;gap:9px;min-width:0;min-height:44px;padding:14px;border:1px solid #46554f;border-radius:6px;background:#14232b;text-align:left;color:#d7d9d0;white-space:normal;line-height:1.5;cursor:pointer}
.path-choice-heading{display:flex;align-items:center;gap:9px}.path-choice-heading>.path-art{width:42px;height:42px;flex-shrink:0}.path-choice-heading>span{min-width:0}.path-choice-heading small{display:block;font-size:.625rem;letter-spacing:.06em;color:#b5c3bc}.path-choice-heading strong{display:block;font:1.0625rem/1.3 Georgia,serif;color:#eed9ab;overflow-wrap:anywhere}
.path-choice-effect{font-size:.8125rem}.path-choice-status{margin-top:auto;font-weight:600;font-size:.75rem;color:#c9c3b1}.path-choice-bar{font-size:.75rem;color:#b3c6c6}.path-choice-reason{font-size:.75rem;color:#b8bdb5;border-top:1px solid #ffffff18;padding-top:8px}
.path-choice-fit{font-size:.75rem;color:#b9c8c3;line-height:1.5}
.path-tier-choice.learned{border-color:#79957d}.path-tier-choice.available .path-choice-status{color:#b7d6b5}.path-tier-choice.selected{border-color:#ebca80;box-shadow:inset 0 0 0 1px #ebca80;background:#25332e}.path-tier-choice:hover{background:#25322f}.path-tier-choice:focus-visible{outline:2px solid #f4db9e;outline-offset:3px}
.path-tree-overview{margin-top:22px;border-top:1px solid #716448;padding-top:10px}.path-tree-overview>summary{min-height:44px;display:list-item;padding:10px 0;cursor:pointer;color:#e2c793}.path-tree-overview>p{color:#b9c2bc;font-size:.8125rem;line-height:1.5}
@media(min-width:851px) and (max-width:1180px){.path-tier-options{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:540px){.path-tier-options{grid-template-columns:1fr}.path-tier-choice{padding:12px}.path-choice-heading strong{font-size:1.125rem}}
.skill-effect-list{margin:.4rem 0;padding-left:1.1rem}.skill-effect-list li{margin:.15rem 0}.skill-effect-list strong{color:#edce93}.skill-effect-next{color:#bab4a9;font-size:.85rem}.skill-effect-next strong{color:#a9d9a4}

/* /connected-paths.css */
/* Connected branches have fixed row positions: arrows cannot shift during polling. */
.path-gate-label{font:12px Arial,sans-serif;fill:#b8bfb0;stroke:#121b1d;stroke-width:5px;paint-order:stroke;stroke-linejoin:round}.path-gate-label.met{fill:#dac38f}
.path-loadout{margin:24px 0;border:1px solid #6e634e;padding:18px;background:#111c22;border-radius:10px}.path-loadout h2{margin:0;font:1.375rem Georgia,serif;color:#ead5ad}.path-loadout p{color:#b9c2c0;font-size:.875rem;line-height:1.5}.path-loadout-slots{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.path-loadout-slots article{text-align:center;background:#1c2a30;border:1px solid #475450;border-radius:8px;padding:10px 6px;min-width:0}.path-loadout-slots article>small{font-size:.625rem;letter-spacing:.12em;color:#baa77f}.path-loadout-slots article>button:first-of-type{display:flex;align-items:center;flex-direction:column;gap:6px;background:none;border:0;color:#e5d8c3;width:100%;padding:6px 0;min-height:90px}.path-loadout-slots .path-art{width:48px;height:48px}.path-loadout-slots strong{font:.875rem/1.3 Georgia,serif;overflow-wrap:anywhere}.path-remove{background:none;border:0;color:#c8b496;font-size:.75rem;text-decoration:underline;min-height:44px}.path-empty-slot{display:block;font-size:1.875rem;color:#68766d;margin:12px 0}.path-loadout-slots p{font-size:.75rem;margin:4px}.path-branches{min-width:0}.path-graph{position:relative;height:940px;border:1px solid #756b53;border-radius:10px;background:radial-gradient(ellipse at 50% 20%,#34403670,transparent 70%),linear-gradient(135deg,#1b2628,#101719 60%,#202722);box-shadow:inset 0 0 65px #0008;isolation:isolate}.path-connectors{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;color:#9d8b62}.path-connectors>path{stroke:currentColor;stroke-width:3;fill:none;vector-effect:non-scaling-stroke}.path-connectors>path.locked{color:#57615b;stroke-dasharray:4 5}.path-connectors>path.open{color:#c4ab70;filter:drop-shadow(0 0 3px #caa65855)}.path-branch-node{position:absolute;left:var(--node-x);top:var(--node-y);transform:translate(-50%,-50%);width:29%;height:118px;padding:5px 2px;display:flex;align-items:center;flex-direction:column;gap:4px;border:0;background:transparent;color:#b7bdb7;z-index:1;min-width:0}.path-branch-node .path-art{width:52px;height:52px;flex:none;border:1px solid #656759;border-radius:7px;box-shadow:0 3px 10px #000b}.path-branch-node.passive .path-art{border-radius:50%;border-color:#968562;background:#1b2426}.path-branch-node>small{font-size:.5625rem;letter-spacing:.02em;white-space:nowrap;color:#aaaea4}.path-branch-node>strong{font:.875rem/1.18 Georgia,serif;text-align:center;max-width:100%;padding:1px 3px;color:#c2c6bb;text-shadow:0 2px 3px #000;overflow-wrap:anywhere}.path-node-rank{padding:2px 7px;background:#101819;border:1px solid #46564d;border-radius:4px;font:.6875rem system-ui;white-space:nowrap}.path-branch-node.learned>strong{color:#f1ddb1}.path-branch-node.learned .path-art{border-color:#baa277}.path-branch-node.available .path-node-rank{border-color:#9d895c;color:#f0d19b}.path-branch-node.selected .path-art{outline:2px solid #efd59f;outline-offset:3px}.path-branch-node.selected>strong{color:#fff0d2}.path-inspector{position:sticky;top:16px}.path-requirements{padding:12px 12px 12px 29px;background:#101b20;border-radius:5px;font-size:.8125rem;line-height:1.7}.path-requirements .met{color:#b7d4a7}.path-requirements .unmet{color:#e4b194}.path-equip{margin-top:22px;border-top:1px solid #596355;padding-top:15px}.path-equip h3{font:1.125rem Georgia,serif;color:#e4cb9f}.path-equip p{font-size:.8125rem;line-height:1.5;color:#b6c1b8}.path-equip>div{display:grid;grid-template-columns:1fr 1fr;gap:8px}.path-equip button{padding:10px 6px;white-space:normal;min-width:0;min-height:60px}.path-equip button small,.path-equip button strong{display:block;line-height:1.4}.path-equip button small{font-size:.625rem;color:#b5bbae}.path-equip button strong{font:.875rem/1.3 Georgia,serif}.path-portrait-skills{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:850px){.path-inspector{position:static}.paths-workspace{display:flex;flex-direction:column}.path-branches,.path-inspector{width:100%;box-sizing:border-box}.path-graph{height:950px}.path-branch-node{height:122px}.path-branch-node .path-art{width:58px;height:58px}}
@media(max-width:540px){.path-loadout{padding:12px 8px}.path-loadout-slots{gap:5px}.path-loadout-slots article{padding:8px 3px}.path-loadout-slots strong{font-size:.75rem}.path-loadout-slots .path-art{width:42px;height:42px}.path-graph{height:960px}.path-branch-node{width:31%;height:128px}.path-branch-node .path-art{width:48px;height:48px}.path-branch-node>strong{font-size:.8125rem}.path-branch-node>small{font-size:.5rem}.path-tabs strong{overflow-wrap:normal;word-break:normal;font-size:.8125rem}.path-tabs small{font-size:.625rem}.path-inspector-title .path-art{width:60px;height:60px}.path-portrait-skills{grid-template-columns:repeat(4,minmax(0,1fr))}}

.party-card.path-party-card{position:relative}.path-party-card .path-portrait-detail{position:absolute;top:100%;left:0;right:0;z-index:90;max-height:260px;overflow:auto;background:#12232c;border:1px solid #b29a6a;box-shadow:0 10px 25px #000a;padding:15px;border-radius:7px;margin-top:5px}.path-detail-close{float:right;min-width:44px;min-height:44px;margin:-10px -10px 0 6px;background:transparent;color:#e8d4af;border:0;font-size:1.5rem}.path-portrait-detail p{line-height:1.5;font-size:.8125rem}

.path-gate-badge{position:absolute;z-index:2;font:.6875rem/1.3 Arial,sans-serif;color:#b1bbae;background:#142024;padding:2px 3px;border-radius:3px;white-space:normal;max-width:calc(33.333% - 8px);transform:translateX(-50%);overflow-wrap:anywhere;pointer-events:none}.path-gate-badge.met{color:#e5c990}.path-back{display:none}.path-inspector{scroll-margin-top:76px}@media(max-width:850px){.path-back{display:block;margin-bottom:16px;min-height:44px}}
.path-party-card{container-type:inline-size}.path-party-card>.path-portrait-skills{grid-template-columns:repeat(2,44px);justify-content:start}
@container(min-width:188px){.path-party-card>.path-portrait-skills{grid-template-columns:repeat(4,44px)}}
@media(max-width:600px){.path-party-card>.path-portrait-skills{grid-template-columns:repeat(2,44px);gap:6px}}
@media(max-width:600px){.path-party-card .path-portrait-detail{position:fixed;top:auto;left:12px;right:12px;bottom:calc(86px + env(safe-area-inset-bottom,0px));max-height:42vh;max-height:42svh;margin:0;padding:16px;z-index:110;overscroll-behavior:contain}.path-portrait-detail strong{display:block;padding-right:38px;font:1.125rem/1.4 Georgia,serif}.path-portrait-detail p{font-size:.875rem}}

@media(max-width:360px){.path-equip>div{grid-template-columns:minmax(0,1fr)}.path-equip button{white-space:normal;overflow-wrap:break-word}}

/* Skill panel v1 (switch IRP_SKILL_PANEL_VERSION=1, docs/NEXT_SKILL_PANEL_2026-10-03.md). Every rule is scoped to .skill-panel-v1, a class only the switch-on markup has; with the switch off none of this matches. Colours are the ones the panel already uses. */
.skill-panel-v1 [hidden]{display:none!important}
.skill-panel-v1 button,.skill-panel-v1 summary{min-height:44px}
.skill-panel-v1 .text-button,.skill-panel-v1 .text-link{display:inline-flex;align-items:center;min-height:44px}
.shell .path-inspector.skill-panel-v1 .eyebrow,.shell .path-inspector.skill-panel-v1 small,.shell .path-inspector.skill-panel-v1 dt,.shell .path-inspector.skill-panel-v1 .small-note{font-size:.75rem}
.skill-panel-v1 .path-scale-note{display:none}
.skill-panel-v1 .sp-pips{display:flex;gap:2px;margin:6px 0 0}
.skill-panel-v1 .sp-pip{flex:1 1 0;max-width:20px;height:8px;border:1px solid #6e634e;border-radius:2px;background:#101b20}
.skill-panel-v1 .sp-pip.on{background:#c4ab70;border-color:#edce93}
.skill-panel-v1 .sp-pip.plan{background:#a9d9a455;border-color:#a9d9a4}
.skill-panel-v1 .sp-pip.cap{border-style:dashed;opacity:.5}
.skill-panel-v1 .sp-spend{margin:10px 0;padding:10px;border:1px solid #80705b;border-left:2px solid #a98a57;border-radius:6px;background:#101b20}
.skill-panel-v1 .sp-status{margin:0 0 8px;font-size:.875rem;line-height:1.5;color:#c8c8bd}
.skill-panel-v1 .sp-status.sp-gate{color:#e4b194}
.skill-panel-v1 .sp-stepper{display:grid;grid-template-columns:44px minmax(44px,1fr) 44px auto;gap:6px;align-items:stretch}
.skill-panel-v1 .sp-stepper button,.skill-panel-v1 .sp-stepper input{min-height:44px;box-sizing:border-box;margin:0}
.skill-panel-v1 .sp-step{padding:0;font-size:1.375rem;line-height:1}
.skill-panel-v1 .sp-max{padding:0 8px;white-space:nowrap!important}
.skill-panel-v1 .sp-count{width:100%;min-width:0;text-align:center;font:1.125rem Georgia,serif;color:#edce93;background:#16222c;border:1px solid #796649;border-radius:4px;-moz-appearance:textfield;appearance:textfield}
.skill-panel-v1 .sp-count::-webkit-inner-spin-button,.skill-panel-v1 .sp-count::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.skill-panel-v1 .sp-title{margin:10px 0 0;font:1rem Georgia,serif;color:#e4cb9f}
.skill-panel-v1 .sp-preview,.skill-panel-v1 .sp-preview thead,.skill-panel-v1 .sp-preview tbody{display:block;width:100%}
.skill-panel-v1 .sp-preview thead tr,.skill-panel-v1 .sp-preview .sp-vals{display:flex;gap:8px}
.skill-panel-v1 .sp-preview .sp-label{display:block}
.skill-panel-v1 .sp-preview thead th,.skill-panel-v1 .sp-preview .sp-vals td{flex:1 1 0;min-width:0}
.skill-panel-v1 .sp-preview th,.skill-panel-v1 .sp-preview td{text-align:left;vertical-align:top;padding:2px 6px 2px 0;overflow-wrap:anywhere}
.skill-panel-v1 .sp-preview thead th{padding-bottom:6px;border-bottom:1px solid #334048;font:600 .78125rem/1.3 Arial,sans-serif;color:#bab4a9}
.skill-panel-v1 .sp-preview thead small{display:block;font-weight:400;color:#d7bf92}
.skill-panel-v1 .sp-preview .sp-label th{display:block;padding-top:10px;font:.78125rem/1.3 Arial,sans-serif;font-weight:400;color:#bab4a9}
.skill-panel-v1 .sp-preview .sp-vals td{padding-bottom:4px;border-bottom:1px solid #26323a;font:.9375rem/1.3 Georgia,serif;color:#c8c8bd}
.skill-panel-v1 .sp-preview th.sp-pick,.skill-panel-v1 .sp-preview td.sp-pick{color:#edce93}
.skill-panel-v1 .sp-note{margin:6px 0 0;font-size:.75rem;color:#bab4a9}
.skill-panel-v1 .sp-action{margin:10px 0 4px}
.skill-panel-v1 .sp-cost{margin:6px 0 0;font-size:.8125rem;color:#d7bf92}
.skill-panel-v1 .sp-action .path-learn{width:100%;min-height:44px;white-space:normal}
@media(min-width:761px){.skill-panel-v1 .sp-spend{max-width:640px}.skill-panel-v1 .sp-stepper{grid-template-columns:44px 88px 44px auto;justify-content:start}}

@media(max-width:540px){.shell .path-inspector.skill-panel-v1 .path-inspector-title{gap:12px}.shell .path-inspector.skill-panel-v1 .path-inspector-title .path-art{width:48px;height:48px}.shell .path-inspector.skill-panel-v1 h2{margin:2px 0}.skill-panel-v1 .path-back{margin-bottom:8px}.skill-panel-v1 .path-skill-summary{margin:6px 0;font-size:.875rem;line-height:1.45}.skill-panel-v1 .sp-status{font-size:.8125rem;margin-bottom:6px}}
.shell .path-inspector.skill-panel-v1 .path-back-end{display:none}
@media(max-width:760px){.shell .path-inspector.skill-panel-v1{scroll-margin-top:156px}.shell .path-inspector.skill-panel-v1 .path-back:not(.path-back-end){display:none}.shell .path-inspector.skill-panel-v1 .path-back-end{display:block;margin:16px 0 0;width:100%}}
@media(max-width:540px){.skill-panel-v1 .sp-title{display:none}.skill-panel-v1 .sp-spend{margin:6px 0;padding:8px}.skill-panel-v1 .sp-status{margin:0 0 4px;font-size:.78125rem}.skill-panel-v1 .sp-action{margin:6px 0 0}.skill-panel-v1 .sp-preview .sp-label th{padding-top:4px;font-size:.75rem;line-height:1.25}.skill-panel-v1 .sp-preview .sp-vals td{padding-bottom:2px;font-size:.875rem;line-height:1.25}.skill-panel-v1 .sp-preview thead th{padding-bottom:3px}.skill-panel-v1 .sp-preview thead small{display:inline;margin-left:4px}.skill-panel-v1 .sp-preview thead tr:has(.sp-now) small{display:none}.shell .path-inspector.skill-panel-v1 .path-skill-summary{font-size:.8125rem;line-height:1.35;margin:4px 0}.shell .path-inspector.skill-panel-v1 .path-inspector-title .path-art{width:40px;height:40px}.skill-panel-v1 .sp-pips{margin-top:4px}.shell .path-inspector.skill-panel-v1{padding:10px 12px}.shell .path-inspector.skill-panel-v1 h2{font-size:1.25rem;line-height:1.15;margin:0}.shell .path-inspector.skill-panel-v1 .eyebrow{margin:0}.shell .path-inspector.skill-panel-v1 .path-inspector-title strong{display:block;margin-top:2px}}
/* Threat and tactics (IRP_THREAT_TACTICS_VERSION=1): three tactic slots under the ability bar. Drawn only while the switch is on. */
.path-tactics{margin:24px 0;border:1px solid #6e634e;padding:18px;background:#111c22;border-radius:10px}.path-tactics h2{margin:0;font:1.375rem Georgia,serif;color:#ead5ad}.path-tactics header p{color:#b9c2c0;font-size:.875rem;line-height:1.5}
.path-tactic-slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.path-tactic-slot{border:1px solid #4d5a5c;border-radius:8px;padding:12px;background:#0c1519;min-width:0}
.path-tactic-slot small{display:block;color:#c9a96a;letter-spacing:.08em;font-size:.6875rem}.path-tactic-slot strong{display:block;margin:4px 0;color:#f2e2bf;font-size:1rem;overflow-wrap:anywhere}.path-tactic-slot p{margin:4px 0;color:#b9c2c0;font-size:.8125rem;line-height:1.45}
.path-tactic-options{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.path-tactic-options button{min-height:44px;padding:6px 10px;font-size:.8125rem;max-width:100%;white-space:normal}
@media(max-width:720px){.path-tactic-slots{grid-template-columns:1fr}.path-tactics{padding:12px 10px}}

/* New-player QA (7 Oct): "Sets role" tag on a skill card when its point would change the role. */
.sp-role-tag{display:inline-block;margin:4px 0 0 8px;padding:2px 8px;border:1px solid #d9a441;border-radius:999px;background:rgba(217,164,65,.16);color:#f3cf7a;font-size:.75rem;font-weight:700;letter-spacing:.02em}
/* New-player QA (7 Oct): the note under the skill point count sits on bright banner art; give it a dark backing so it reads. */
.paths-budgets>small{justify-self:end;width:auto;padding:2px 8px;border-radius:6px;background:rgba(8,10,16,.78);color:#ece6d6;text-shadow:0 1px 2px #000}
/* Tier III (IRP_SKILL_TIER3_VERSION=1): five slots in one row; on phones the Ultimate slot takes its own full-width row under the four. */
.path-loadout-slots.five{grid-template-columns:repeat(5,minmax(0,1fr))}.path-loadout-slots .ultimate-slot{border-color:#c9a254;background:#2a2618}.path-loadout-slots .ultimate-slot>small{color:#e8c77f}
@media(max-width:700px){.path-loadout-slots.five{grid-template-columns:repeat(4,minmax(0,1fr))}.path-loadout-slots.five>.ultimate-slot{grid-column:1/-1}}
.path-portrait-skills:has(>:nth-child(5)){grid-template-columns:repeat(5,minmax(0,1fr))}
/* Role slots (IRP_ROLE_SLOTS_VERSION): badges on their own row and a two-line name, so every slot header is the same height and the skill icons line up. */
.path-loadout-slots article>small.role-slot-head{display:flex;flex-direction:column;align-items:center;gap:4px;min-height:calc(32px + 3.2em);line-height:1.6}
.role-slot-head>span:first-child{display:flex;align-items:center;justify-content:center;gap:4px;min-height:28px}

/* /continuous-field.css */
.field-population{position:absolute;inset:0;z-index:5;pointer-events:none}
.field-pack-targets{position:absolute;inset:0;z-index:12;pointer-events:none}
.field-pack-target{position:absolute;left:0;top:0;translate:-50% -50%;min-width:44px;min-height:44px;border:1px solid #b29a6999;border-radius:24px;background:#101d20db;color:#ead8b5;font-size:11px;pointer-events:auto;padding:6px 10px}
.field-controls{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:9px 12px;background:#111e23;border:1px solid #526062;border-top:0;font-size:.75rem;color:#c6c1b4}
.field-controls .field-progress{flex:1;min-width:145px}
.field-controls button{min-height:44px;font-size:.75rem;padding:7px 12px}
.field-revive-choice{display:flex;align-items:center;gap:7px;min-height:44px;cursor:pointer;white-space:nowrap}.field-revive-choice input{width:17px;height:17px;margin:0;accent-color:#d9b676}
.field-overview{width:min(760px,calc(100vw - 24px));max-height:calc(100svh - 32px);box-sizing:border-box;overflow:auto;overscroll-behavior:contain;padding:16px;border:1px solid #ac9563;border-radius:8px;background:#122026;color:#e4d5b9;box-shadow:0 12px 60px #000a}
.field-overview::backdrop{background:#02070ab0}
.field-overview header{display:flex;align-items:center;justify-content:space-between;gap:12px}
.field-overview h2{margin:0;font:1.375rem Georgia;color:#eed3a0}
.field-overview header button{flex:0 0 44px;font-size:1.375rem}
.field-overview p{font-size:.8125rem;color:#b8c5c6}
.field-overview-map svg{display:block;width:100%;max-height:50svh;background:#0b1319;border:1px solid #586363}
.field-overview-packs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:6px;margin-top:12px}
.field-overview-packs button{text-align:left;min-height:48px;background:#1b2c32;border:1px solid #627373;color:#ead9b8;line-height:1.4}
.field-overview-packs button[aria-pressed=true]{border-color:#e7c789;background:#3b3930}
.dungeon-battlefield[data-field-state="transition"]:after{content:"";position:absolute;inset:0;z-index:230;background:#0a1316cc;pointer-events:none;animation:field-crossing .8s ease-in-out}
.dungeon-battlefield[data-field-reduced="true"][data-field-state="transition"]:after{animation:none;background:#0a131644}
@keyframes field-crossing{0%,100%{opacity:0}45%,60%{opacity:1}}
@media(max-width:600px){.field-controls{gap:6px;padding:8px}.field-controls .field-progress{flex-basis:100%}.field-controls button{flex:1}.field-pack-target{font-size:10px}}
@media(prefers-reduced-motion:reduce){.dungeon-battlefield[data-field-state="transition"]:after{animation:none;background:#0a131644}}

.field-scenery{position:absolute;inset:0;overflow:visible;pointer-events:none}

.unit.field-entered{opacity:0;transition:opacity .25s ease}

/* Keep the full boss room readable without tall empty margins on phones. */
@media(max-width:600px){.mmo-shell .arena-column.has-zone-boss-arena{grid-template-rows:auto clamp(250px,70vw,340px) auto}}

/* Intentional rest must not look like a stalled battlefield. */
.shell .field-controls[data-resting="true"]>.field-progress{display:block;flex-basis:100%;grid-column:1/-1;color:#e9d3a3}

/* Boss arenas on a wide stage: the painting dissolves into its own darkened, softer backdrop at the sides instead of ending at a hard edge, so the arena reads as part of the same battle screen as the zone. */
@media(min-width:1001px){
 .mmo-shell .battlefield.zone-boss-arena::before{filter:blur(32px) brightness(.5) saturate(.8)}
 .mmo-shell .battlefield.zone-boss-arena .arena-background{box-shadow:none;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 9%,#000 91%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 9%,#000 91%,transparent 100%)}
}

/* /raid.css */
.raid-page{max-width:1240px;margin:auto}.raid-heading{padding:24px 0 18px}.raid-heading h1{font:2.625rem Georgia,serif;color:#f1ddbc;margin:8px 0}.raid-heading>p:last-child{color:#b8afa0}.raid-company header{display:flex;align-items:center;justify-content:space-between;gap:12px}.raid-company h2 span{font:.875rem system-ui;color:#b7aa97;margin-left:12px}.raid-role-counts{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}.raid-role-counts>span{padding:9px 16px;background:#171b1d;border:1px solid #66503b;border-radius:4px;color:#b9ada0}.raid-role-counts b{color:#ead8b6;margin-right:5px}.raid-role-counts .ready{border-color:#69816a;color:#bdd2b2}.raid-company .small-note{margin:14px 0 10px}.raid-page details{padding:12px 0;border-top:1px solid #76604b44}.raid-page summary{cursor:pointer;color:#d1bd9b;min-height:28px}.raid-page details p,.raid-page li{font-size:.875rem;line-height:1.65;color:#b8b4ad}.raid-page .text-link{background:none;border:none;padding:5px 0;color:#daba80;text-decoration:underline;cursor:pointer}.raid-card{display:grid;grid-template-columns:46% 54%;border:1px solid #805339;background:#171619;box-shadow:0 12px 45px #0005;min-height:490px;margin:24px 0 40px;overflow:hidden;border-radius:6px}.raid-art{background-image:linear-gradient(90deg,#12111600 60%,#171619),var(--raid-art);background-size:cover;background-position:70% 45%;min-height:340px}.raid-card-copy{padding:32px}.raid-card h2{font:2.125rem Georgia,serif;color:#efcb96;margin:10px 0 16px}.raid-flavor{color:#c5b9a6;line-height:1.6;max-width:36em}.raid-seals{display:flex;align-items:center;gap:7px;margin:24px 0}.raid-seals span{display:grid;place-items:center;width:29px;height:33px;border:1px solid #825139;color:#a38a6e;background:#251b19}.raid-seals span.cleared{border-color:#a9804b;color:#f6dda7;background:#665031}.raid-seals>b{font-size:.75rem;font-weight:500;margin-left:6px;color:#a79780}.raid-wip{font-size:.8125rem;line-height:1.5;color:#c5a576;border-left:2px solid #987341;padding-left:11px;margin:18px 0}.raid-card .red-button{margin:6px 0 12px;min-height:44px}.raid-entry-reason{font-size:.8125rem;color:#c7b3a2;margin:0 0 12px}.raid-boss-guide ol{padding-left:24px}.raid-boss-guide li{padding:8px 0}.raid-boss-guide li span{display:block;color:#a69e95}.raid-fill-toggle[aria-pressed=true]{border-color:#739470;color:#cee0bd}.raid-page button{min-height:44px}.raid-group .party-frames{grid-template-columns:repeat(2,minmax(0,1fr))}.raid-group .party-frame{min-width:0}
@media(max-width:760px){.raid-card{grid-template-columns:1fr}.raid-art{min-height:230px;background-image:linear-gradient(0deg,#171619,#17161900 45%),var(--raid-art);background-position:50% 34%}.raid-card-copy{padding:22px;padding-top:0}.raid-card h2{font-size:1.8125rem}.raid-heading h1{font-size:2.125rem}.raid-seals{gap:5px}.raid-seals>b{font-size:.6875rem}.raid-company header{align-items:flex-start}.raid-company h2 span{display:block;margin:5px 0}.raid-role-counts{gap:6px}.raid-role-counts>span{padding:8px 10px}.raid-company .az-actions{align-items:stretch;flex-direction:column}}
.mmo-shell .raid-group #partyCards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;align-items:start}.mmo-shell .raid-group .raid-party-card{display:block;min-height:0;height:auto;padding:7px;margin:0;container-type:normal}.raid-frame-title{display:flex;gap:7px;align-items:center;margin-bottom:5px;min-width:0}.raid-frame-title>img,.raid-frame-title>svg{width:32px;height:36px;object-fit:cover;flex:none}.raid-frame-title>div{min-width:0}.raid-frame-title b,.raid-frame-title small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.raid-frame-title b{font:.75rem Georgia,serif;color:#efd9b0}.raid-frame-title small{font:.625rem system-ui;color:#9aadae;margin-top:3px}.mmo-shell .raid-party-card .hud-bar{margin:3px 0;min-height:14px;height:14px;font-size:10px;line-height:14px}.mmo-shell .raid-party-card .hud-bar em{font:10px/14px system-ui}.mmo-shell .raid-party-card .portrait-cast{min-height:17px;height:17px;font-size:.625rem;margin:3px 0}.raid-frame-skills summary{font:.6875rem/1.4 system-ui;color:#aebdb8;cursor:pointer;min-height:24px;padding:4px 0}.raid-frame-skills .path-portrait-skills{display:grid;grid-template-columns:repeat(2,44px);gap:5px;padding-top:6px}.mmo-shell .raid-party-card .path-portrait-detail{position:relative;top:auto;left:auto;right:auto;padding:8px;max-height:240px;font-size:.75rem}.mmo-shell .raid-party-card .path-detail-close{margin-right:-8px}.raid-frame-skills[open]{grid-column:1/-1}.raid-group .party-rail{min-width:0}
/* The party rail is a fixed-height scrolling column. The battle-height hold (holdBattleHeights in app.js) sets an explicit min-height on #partyCards, which replaces the content-based minimum of a flex item: the frames could then shrink below their content when buffs appear and overlap each other. They never shrink; the rail scrolls. */
.mmo-shell .party-rail>#partyCards{flex-shrink:0;align-content:start}
@media(max-width:1050px){.mmo-shell .raid-group .party-rail{max-height:240px;overflow:auto;overscroll-behavior:contain}.mmo-shell .raid-group #partyCards{grid-template-columns:repeat(5,minmax(140px,1fr));min-width:740px}.raid-frame-skills summary{min-height:44px;padding:12px 0}.mmo-shell .raid-party-card .path-portrait-detail{position:fixed;left:12px;right:12px;bottom:100px;top:auto;z-index:110}}
.raid-frame-title>.outfit-portrait{width:32px;height:36px;flex:0 0 32px;overflow:hidden}.raid-frame-title>div{flex:1}
@media(max-width:1179px){.mmo-shell>.topbar>nav{grid-template-columns:repeat(6,minmax(44px,1fr))}.mmo-shell>.topbar>nav .nav-button{min-width:44px}}@media(max-width:380px){.mmo-shell>.topbar>nav .nav-button{font-size:.63rem;letter-spacing:-.02em}}
@media(max-width:760px){.raid-company .az-actions>button{flex:0 0 auto;min-height:44px}.raid-heading{padding:10px 0 6px}.raid-role-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.raid-role-counts>span{padding:8px 4px;font-size:.75rem;text-align:center}.raid-role-counts b{margin-right:2px}.raid-page summary{min-height:44px;display:flex;align-items:center}.raid-company .small-note{font-size:.8125rem}}

.raid-afflictions:empty{display:none}.raid-afflictions{display:flex;flex-wrap:wrap;gap:3px;margin:4px 0}.raid-afflictions .portrait-effect{font-size:.625rem;color:#ffcb9b;border-color:#a8534b;white-space:normal}

/* One readable portrait frame for both field parties and raid companies. */
.mmo-shell .combat-grid:not(.raid-group) #partyCards{display:grid;grid-template-columns:minmax(0,1fr);gap:7px;align-items:start}
.mmo-shell .compact-party-card{display:block;min-height:0;height:auto;padding:9px;margin:0;container-type:normal;background:linear-gradient(125deg,#232522,#12191c);border:1px solid #6a5940;border-left:2px solid #8b7957;box-shadow:inset 0 1px #dcc49312;border-radius:3px;min-width:0}
.mmo-shell .compact-party-card.role-tank{border-left-color:#bda278}.mmo-shell .compact-party-card.role-healer{border-left-color:#83a794}.mmo-shell .compact-party-card.role-dps{border-left-color:#b98068}
.compact-party-card .raid-frame-title b{font:600 .8125rem/1.3 system-ui;letter-spacing:.01em}.compact-party-card .raid-frame-title small{font-size:.625rem;color:#b4b6ac}
.mmo-shell .compact-party-card .raid-frame-skills>summary{min-height:44px;box-sizing:border-box;padding:13px 0 9px;font:.6875rem/1.4 system-ui;color:#d2bc98;border-top:1px solid #aa926124;margin-top:5px}
.mmo-shell .compact-party-card .raid-frame-skills .path-portrait-skills{grid-template-columns:repeat(auto-fill,44px);justify-content:start;gap:5px;margin:0 0 7px}
.mmo-shell .compact-party-card .raid-frame-skills .path-portrait-skill{display:grid;place-items:center;width:44px;height:44px;aspect-ratio:auto}
.mmo-shell .compact-party-card .raid-frame-skills .path-portrait-skill .path-art{width:32px;height:32px}
.compact-party-card .portrait-xp{display:block;margin-top:3px;font:.625rem/1.3 system-ui;color:#b6d0be;font-variant-numeric:tabular-nums}
.compact-party-card .portrait-xp [data-xp]{font-weight:600;color:#d4e3bc}
.mmo-shell .compact-party-card .raid-frame-skills .portrait-effects{height:auto;min-height:0;max-height:115px;margin:0 0 7px}.mmo-shell .compact-party-card .raid-frame-skills .portrait-effects:empty{display:none}
.mmo-shell .compact-party-card .hud-bar{height:16px;min-height:16px;margin:4px 0}.mmo-shell .compact-party-card .hud-bar em{font:10px/16px system-ui;font-variant-numeric:tabular-nums}
.mmo-shell .compact-party-card .portrait-cast{height:19px;min-height:19px;box-sizing:border-box;padding:1px 4px;font:.625rem/.9375rem system-ui;margin:4px 0 0;border-color:#5d5542}
.mmo-shell .compact-party-card.fallen .portrait-cast{color:#d9bc9a}.mmo-shell .compact-party-card.fallen{opacity:.76}
@media(max-width:1179px){.mmo-shell .combat-grid:not(.raid-group) #partyCards{grid-template-columns:repeat(2,minmax(0,1fr))}.mmo-shell .combat-grid:not(.raid-group) .party-rail{max-height:none;overflow:visible}}
@media(max-width:360px){.compact-party-card .raid-frame-title{gap:5px}.compact-party-card .raid-frame-title b{font-size:.75rem}.mmo-shell .compact-party-card{padding:7px}}
.portrait-effect.conditional{flex-wrap:wrap}.portrait-effect-condition{display:block;flex-basis:100%;font-size:.625rem;line-height:1.4;white-space:normal;color:#dbd0ac}
/* Ten adventurers need a deliberate roster width, independent of the four-person rail. */
.raid-group .raid-frame-title{align-items:flex-start}
.raid-group .raid-frame-title b,.raid-group .raid-frame-title small{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;line-height:1.3}
@media(min-width:1180px){
 .mmo-shell .combat-grid.raid-group{grid-template-columns:340px minmax(0,1fr) 220px;align-items:start}
 .mmo-shell .raid-group .party-rail{max-height:calc(100svh - 80px);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
}
@media(min-width:761px) and (max-width:1179px){
 .mmo-shell .combat-grid.raid-group{display:flex;flex-direction:column;height:auto;min-height:0}
 .mmo-shell .raid-group .party-rail{width:100%;max-height:none;overflow:visible}
 .mmo-shell .raid-group #partyCards{grid-template-columns:repeat(5,minmax(0,1fr));min-width:0}
}
@media(max-width:760px){
 .mmo-shell .raid-group .party-rail{max-height:min(40svh,340px);overflow-y:auto;overscroll-behavior:contain}
 .mmo-shell .raid-group #partyCards{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0}
}
/* Intrinsic label widths let enlarged text add a row instead of splitting words. */
@media(max-width:760px){
 .mmo-shell>.topbar>nav{display:flex!important;flex-wrap:wrap;align-items:stretch;overflow-x:visible!important}
 .mmo-shell>.topbar>nav>.nav-button{flex:1 0 auto;width:auto;min-width:max(44px,4.8em);max-width:100%;min-height:58px;flex-direction:column;justify-content:center;gap:3px;white-space:nowrap;overflow-wrap:normal;word-break:normal}
 .mmo-shell>.topbar>nav>.nav-button .nav-copy,.mmo-shell>.topbar>nav>.nav-button .nav-copy strong{white-space:nowrap;overflow-wrap:normal;word-break:normal}
}

.dungeon-menu>summary{display:flex;gap:14px;align-items:center;cursor:pointer;list-style:none;min-height:64px}.dungeon-menu>summary:after{content:"⌄";margin-left:auto}.dungeon-menu[open]>summary:after{content:"⌃"}.dungeon-menu>summary>img{width:88px;height:64px;object-fit:cover;border-radius:5px}.dungeon-menu>summary strong,.dungeon-menu>summary small{display:block}.dungeon-menu>summary small{margin-top:6px;color:#bbb5a9}.dungeon-menu>.renown-activities{margin-top:24px}.dungeon-entry-state{font-size:.75rem;color:#d3b983;margin-left:auto}@media(max-width:600px){.dungeon-menu>summary{flex-wrap:wrap}.dungeon-menu>summary>img{width:64px;height:54px}.dungeon-entry-state{margin-left:78px}}
/* Reward dungeon summaries keep their image, name and entry state aligned. */
.shell .dungeon-menu>summary{display:grid;grid-template-columns:88px minmax(0,1fr) auto 16px;gap:12px}
.shell .dungeon-menu>summary>span{min-width:0}
.shell .dungeon-menu>summary:after{margin:0;justify-self:end}
.shell .dungeon-menu .dungeon-entry-state{margin:0}
.shell .dungeon-menu .vault-destination{border:0;box-shadow:none;background:transparent;padding:0}
.shell .dungeon-menu .vault-destination:before,.shell .dungeon-menu .vault-destination:after{display:none}
@media(max-width:600px){.shell .dungeon-menu>summary{grid-template-columns:56px minmax(0,1fr) 12px;gap:8px 10px}.shell .dungeon-menu>summary>img{width:56px;height:56px;grid-row:1/3}.shell .dungeon-menu>summary>span:nth-child(2){grid-column:2;grid-row:1}.shell .dungeon-menu .dungeon-entry-state{grid-column:2;grid-row:2}.shell .dungeon-menu>summary:after{grid-column:3;grid-row:1/3}.shell .dungeon-menu>summary strong{font-size:.875rem}.shell .dungeon-menu>summary small{font-size:.75rem}.shell .dungeon-menu .renown-activities{margin-top:16px}.shell .dungeon-menu .vault-facts{gap:10px}}

/* World bosses keep one readable personal frame, including on phones. */
.mmo-shell .combat-grid.worldboss-group #partyCards{grid-template-columns:minmax(0,1fr);min-width:0}
.mmo-shell .combat-grid.worldboss-group .party-rail{min-width:0}
/* Raid size choice (8 or 12 players; only drawn when IRP_RAID_SIZE_VERSION is on). Kit tokens from ui-kit.css; nothing moves; nothing is hover-only. */
.raid-size-choice{margin:0 0 14px;padding:14px}.raid-size-choice h3{margin:0 0 10px}.raid-size-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.raid-size-card{display:grid;gap:6px;justify-items:start;align-content:start;text-align:left;min-height:72px;min-width:0;padding:14px;color:var(--uk-ivory);background:var(--uk-surface);border:1px solid var(--uk-gold-dim);border-radius:var(--uk-radius-card);box-shadow:var(--uk-rule);cursor:pointer;font:inherit}
.raid-size-card strong{font:1.375rem Georgia,serif;color:var(--uk-gold-text)}.raid-size-card em{font-style:normal;color:var(--uk-ivory-dim)}.raid-size-roles{font-size:.8125rem;color:var(--uk-ivory-dim)}.raid-size-why{color:var(--uk-gold-text);font-size:.8125rem}
.raid-size-card[aria-checked="true"]{border-color:var(--uk-gold-hi);background:var(--uk-surface-lit);box-shadow:var(--uk-rule),0 0 0 1px var(--uk-gold-hi)}.raid-size-card[aria-checked="true"] em{color:var(--uk-ivory)}
.raid-size-card:focus-visible{outline:2px solid var(--uk-focus);outline-offset:2px}.raid-size-card:disabled{opacity:.6;cursor:default}.raid-size-card[aria-checked="true"]:disabled{opacity:1}
.raid-size-pips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:16px}.raid-size-pips .pip{display:inline-block;width:12px;height:12px;border:1px solid var(--uk-gold);background:var(--uk-gold)}.raid-size-pips .pip.healer{border-radius:50%;background:var(--uk-ivory)}.raid-size-pips .pip.damage{width:10px;height:10px;margin:0 2px;transform:rotate(45deg);background:var(--uk-navy-0)}
@media(max-width:760px){.raid-size-cards{grid-template-columns:1fr}.raid-size-card{min-height:72px;padding:12px}}
/* Second slice: companion fill note and the personal Oath Marks counter (drawn only when the engine sends them). Kit tokens; nothing moves; nothing is hover-only. */
.raid-fill-note{margin:8px 0}
.raid-marks{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;margin:10px 0;padding:10px 12px;min-width:0;color:var(--uk-ivory);background:var(--uk-surface);border:1px solid var(--uk-gold-dim);border-radius:var(--uk-radius-card);box-shadow:var(--uk-rule)}
.raid-marks b{font:1rem Georgia,serif;color:var(--uk-gold-text)}.raid-marks small{font-size:.8125rem;color:var(--uk-ivory-dim)}
.raid-marks-meter{display:block;height:12px;min-width:0;overflow:hidden;background:var(--uk-navy-0);border:1px solid var(--uk-gold-dim);border-radius:6px}.raid-marks-meter i{display:block;height:100%;max-width:100%;background:var(--uk-gold)}
.raid-marks.full{border-color:var(--uk-gold-hi)}.raid-marks.full small{color:var(--uk-ivory)}
/* Flexible raid (switch IRP_RAID_SIZE_VERSION, docs/NEXT_RAID_FLEX_2026-10-05.md): the "Fill up to" stepper, the lend toggle, the companion lists and the "needs" count. Drawn only with the switch on. Kit tokens;
   nothing moves, nothing is hover-only; every control is at least 44 px; the stepper wraps under its label on a phone; names wrap instead of being cut. */
.raid-company .raid-fill-target{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:10px 0}
.raid-company .raid-fill-target>span{font:600 .9375rem Georgia,serif;color:var(--uk-gold-text)}
.raid-company .raid-stepper{display:inline-flex;align-items:center;gap:8px;max-width:100%}
.raid-company .raid-step{min-width:44px;min-height:44px;padding:0 12px;flex:0 0 auto}
.raid-company .raid-fill-count{min-width:5.5em;text-align:center;font:600 1rem Georgia,serif;color:var(--uk-ivory);overflow-wrap:anywhere}
.raid-company .raid-fill-target>.small-note{flex:1 1 100%;margin:0}
.raid-company .raid-lend{display:grid;gap:6px;justify-items:start;margin:10px 0}
.raid-company .raid-lend-toggle{min-height:44px;max-width:100%;white-space:normal;text-align:left}
.raid-company .raid-lend>.small-note{margin:0}
.raid-company .raid-flex-list{margin:8px 0}
.raid-company .raid-flex-list ul{display:grid;gap:8px;margin:8px 0;padding-left:18px}
.raid-company .raid-flex-list li{min-width:0;overflow-wrap:anywhere}
.raid-company .raid-flex-list li>span{display:block;color:var(--uk-ivory-dim);font-size:.8125rem}
.raid-role-counts>span.needs{color:var(--uk-gold-text)}

/* /progression-renown.css */
.map-pin.route-locked{filter:saturate(.35);border-style:dashed}.route-status{color:#d8c292;font-size:.8rem}.route-progress{padding:12px;border:1px solid #786544;background:#201f1ce0;border-radius:6px}.route-progress progress{width:100%;accent-color:#d0aa61}.route-progress p{margin:8px 0}.chapter-destinations button small{white-space:normal}.town-renown-ladder{margin:20px 0;padding:20px;background:#202329;border:1px solid #555047;border-radius:8px}.town-renown-ladder header{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.town-renown-ladder h2{margin:0}.town-renown-ladder header>span,.town-renown-ladder small{color:#bcb3a0}.renown-table-scroll{max-height:360px;overflow:auto}.town-renown-ladder table{width:100%;border-collapse:collapse;text-align:left}.town-renown-ladder th,.town-renown-ladder td{padding:10px;border-bottom:1px solid #4c4740}.town-renown-ladder td:nth-child(2){overflow-wrap:anywhere}.town-renown-ladder td:last-child,.town-renown-ladder th:last-child{text-align:right;font-variant-numeric:tabular-nums}.renown-own{background:#a78b4530}.town-renown-ladder details{margin-top:12px}.town-renown-ladder summary{min-height:44px;display:flex;align-items:center;cursor:pointer}.renown-badge{display:inline-grid;place-items:center;width:1.55em;height:1.7em;margin-right:5px;border:1px solid currentColor;border-radius:4px 4px 8px 8px;font:bold .8rem Georgia,serif;vertical-align:middle}.renown-gold{color:#ffe09a;background:#705117}.renown-silver{color:#ecf3ff;background:#4a5665}.renown-bronze{color:#ffceb0;background:#6f412a}.chat-name .renown-badge{pointer-events:none}@media(max-width:480px){.town-renown-ladder{padding:12px}.town-renown-ladder th,.town-renown-ladder td{padding:8px 5px}.town-renown-ladder header>span{font-size:.8rem}.route-progress{padding:10px}}
/* Town notice board: one shared progress bar and two clear pages. */
.town-npc[data-town-npc="notice-board"]{width:135px;height:166px}
.town-npc[data-town-npc="notice-board"] .town-prop-sprite{width:135px;height:156px;object-fit:contain;object-position:bottom;filter:drop-shadow(0 3px 2px #0008)}
.town-npc[data-town-npc="notice-board"] .town-name{bottom:164px;max-width:168px}
.town-npc[data-town-npc="notice-board"] .town-name small{display:none}
.modal-backdrop.town-notice-board>section{width:min(800px,calc(100vw - 28px));padding:0;border-top:3px solid #d2af66;background:#111c2a}
.town-notice-board .notice-board-heading{position:relative;align-items:center;padding:20px;gap:15px;border-bottom:1px solid #b69753;background:linear-gradient(90deg,#111c2af2,#111c2aba),url('/assets/town/stonewake-square-v2.webp') center 42%/cover}
.notice-board-heading>img{width:65px;height:75px;object-fit:contain;flex-shrink:0}
.notice-board-heading>div{flex:1;min-width:0}
.town-notice-board .notice-board-heading h2{margin:5px 0 0;font-size:1.875rem}
.town-notice-board .notice-board-heading .eyebrow{font-size:.625rem;line-height:1.5;margin:0}
.notice-renown-progress{padding:18px 24px 10px}
.notice-renown-progress>div{display:flex;justify-content:space-between;gap:16px;align-items:baseline;color:#c5d0db}
.notice-renown-progress strong{color:#f2d396;font-variant-numeric:tabular-nums}
.notice-renown-progress>div>strong{font-size:1.4375rem;font-family:Georgia,serif}
.notice-renown-progress progress{width:100%;height:9px;display:block;margin-top:10px;border:0;border-radius:5px;overflow:hidden;background:#263447;accent-color:#d8b566}
.notice-renown-progress progress::-webkit-progress-bar{background:#263447}
.notice-renown-progress progress::-webkit-progress-value{background:linear-gradient(90deg,#98773d,#f0d18a)}
.town-notice-board .notice-renown-progress p{font-size:.8125rem;margin:8px 0 0;color:#b7c4d1}
.notice-board-tabs{display:flex;margin:8px 24px 0;border-bottom:1px solid #8f7547;gap:8px}
.notice-board-tabs>button{flex:1;min-height:46px;white-space:normal;padding:10px;border:0;border-radius:0;background:transparent;color:#c4cddb;box-shadow:none}
.notice-board-tabs>button[aria-selected="true"]{color:#f5d997;background:linear-gradient(#b5964514,#b596452c);box-shadow:inset 0 -3px #d9b76b}
#notice-board-content{padding:8px 24px 20px;min-height:220px}
.town-notice-board .town-renown-ladder{border:0;background:transparent;padding:0;margin:14px 0 0;border-radius:0}
.town-notice-board .town-renown-ladder .eyebrow{display:none}
.town-notice-board .town-renown-ladder h2{font-size:1.25rem}
.town-notice-board .town-renown-ladder p{font-size:.875rem}
.town-notice-board .town-renown-ladder header>span{font-size:.75rem}
.town-notice-board .town-renown-ladder table{table-layout:fixed}
.town-notice-board .town-renown-ladder th:first-child{width:55px}
.town-notice-board .town-renown-ladder th:last-child{width:105px}
.renown-rewards{list-style:none;padding:0;margin:6px 0}
.renown-reward{display:grid;grid-template-columns:100px minmax(0,1fr) 30px;gap:16px;align-items:center;padding:18px 0;border-bottom:1px solid #b49a603b}
.renown-reward:last-child{border-bottom:0}
.renown-reward>img{width:100px;height:90px;object-fit:cover;border:1px solid #ae8b4e;clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px)}
.renown-reward.is-locked>img{filter:saturate(.5);opacity:.7}
.renown-reward h3{font-size:1.125rem;margin:6px 0;color:#f1d28d}
.town-notice-board .renown-reward p{font-size:.875rem;line-height:1.5;color:#cad4e0;margin:0}
.renown-reward .eyebrow{font-size:.625rem;letter-spacing:.08em;color:#acc6bb}
.renown-reward.is-locked .eyebrow{color:#c5bca9}
.renown-stage{font:1.5rem Georgia,serif;color:#d4ad65;text-align:center}
@media(max-width:480px){.modal-backdrop.town-notice-board>section{width:calc(100vw - 16px)}.town-notice-board .notice-board-heading{padding:14px;gap:10px}.notice-board-heading>img{width:42px;height:54px}.town-notice-board .notice-board-heading h2{font-size:1.4375rem}.notice-renown-progress{padding:16px 14px 8px}.notice-board-tabs{margin:8px 14px 0;gap:3px}.notice-board-tabs>button{font-size:.8125rem;padding:9px 5px}#notice-board-content{padding:8px 14px 14px}.renown-reward{grid-template-columns:65px minmax(0,1fr) 18px;gap:10px;padding:14px 0}.renown-reward>img{width:65px;height:74px}.renown-reward h3{font-size:1rem}.town-notice-board .renown-reward p{font-size:.8125rem}.town-notice-board .town-renown-ladder th:last-child{width:80px}.town-notice-board .town-renown-ladder th:first-child{width:40px}.town-notice-board .town-renown-ladder td,.town-notice-board .town-renown-ladder th{font-size:.8125rem}}

.modal-backdrop.town-notice-board{padding:8px;grid-template-columns:minmax(0,1fr)}
.modal-backdrop.town-notice-board>section{justify-self:center;max-width:100%;padding:0}
.notice-renown-progress{display:block;background:transparent;border:0}
.modal-backdrop.town-discovery{padding:12px}
.modal-backdrop.town-discovery>section{width:min(560px,100%);padding:0;max-height:calc(100dvh - 24px);overflow:auto}
.town-discovery-art{width:100%;height:190px;object-fit:cover;object-position:center;border-bottom:2px solid #be9d5b}
/* The Alchemist is a tall full-figure portrait: a centered crop showed only her apron, so keep her face and flask in the frame. */
.town-discovery-art[src*="alchemist-v1"]{object-position:50% 6%}
.town-discovery-copy{padding:20px 24px 24px}
.town-discovery-copy .eyebrow{font-size:.625rem;color:#cfb474;letter-spacing:.1em}
.town-discovery-copy h2{font:1.625rem Georgia,serif;color:#f2d497;margin:10px 0}
.town-discovery-copy>p:not(.eyebrow){line-height:1.6;color:#d5dfe8}
.town-discovery-actions{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.town-discovery-actions>button{min-height:46px;flex:1;white-space:normal}
@media(max-width:480px){.town-discovery-art{height:140px}.town-discovery-copy{padding:16px}.town-discovery-copy h2{font-size:1.4375rem}}

.town-notice-board .notice-board-hint{margin:0 24px 8px}
@media(max-width:480px){.town-notice-board .notice-board-hint{margin-inline:14px}}

/* /endgame.css */
.endgame-travel{margin-top:28px;padding:22px;border:1px solid #756149;background:#10191e}.endgame-travel header,.endgame-introduction header{display:flex;align-items:center;justify-content:space-between;gap:12px}.endgame-travel h2{margin:5px 0 18px}.endgame-regions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.endgame-region{position:relative;padding:20px 16px;border:1px solid #45545c;background:linear-gradient(145deg,#263941,#10191d);overflow:hidden}.endgame-region.east{background:linear-gradient(145deg,#443128,#181c17)}.endgame-region.south{background:linear-gradient(145deg,#1d3a42,#10191d)}.endgame-region.west{background:linear-gradient(145deg,#352d40,#10141c)}.endgame-region h3{font-size:1.3125rem;margin:12px 0;color:#e9dfc7}.endgame-region p{line-height:1.55;color:#c1c8c8}.endgame-region small{display:block;color:#aeb7bb}.endgame-region button{width:100%;margin-top:18px;text-align:left;white-space:normal}.endgame-region button span{display:block;font-size:.75rem;margin-top:5px;color:#b7c7cf}.endgame-compass{position:absolute;right:12px;top:0;font:6.25rem Georgia;color:#ffffff07;pointer-events:none}.endgame-unfinished{display:block;margin-top:24px;color:#9ca5a5;font-size:.8125rem}.endgame-introduction{width:min(600px,95vw);padding:28px}.endgame-introduction p{line-height:1.65}.endgame-rule{color:#b6d0d8}.quest-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.quest-card{padding:20px;border:1px solid #534b3b;background:#131a1e}.quest-card p{color:#c5c7c2;line-height:1.5}.quest-card h3{margin:8px 0}.quest-card button{margin:8px 8px 0 0}.quest-reward{color:#e3c685}.zone-unlock{position:fixed;right:20px;bottom:24px;z-index:110;max-width:min(400px,calc(100vw - 32px));padding:20px;background:#16272f;border:1px solid #caa66b;box-shadow:0 10px 35px #000b}.zone-unlock h2{font-size:1.375rem;margin:6px 0}.zone-unlock p{line-height:1.5}.zone-unlock button{margin:6px 8px 0 0}.leaderboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.leaderboard-panel{padding:20px;background:#111b20;border:1px solid #65543b;min-width:0}.leaderboard-panel table{border-collapse:collapse;width:100%}.leaderboard-panel td,.leaderboard-panel th{text-align:left;padding:10px 6px;border-bottom:1px solid #ffffff15;overflow-wrap:anywhere}.leaderboard-panel select{max-width:100%;margin-bottom:16px}.rarity-unique{--rarity:#e9b879;color:#f6d4a0}.unique-power{padding:12px;border-left:2px solid #e9b879;background:#201b16;color:#efcc95}.leaderboard-empty{color:#a8b6ba;line-height:1.6}
@media(max-width:1100px){.endgame-regions{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.endgame-regions,.quest-grid,.leaderboard-grid{grid-template-columns:1fr}.endgame-travel{padding:14px}.endgame-travel header{align-items:flex-start}.zone-unlock{bottom:88px;right:16px}.endgame-introduction{padding:20px}}
.gear-icon.unique-art{border:3px solid transparent!important;background:linear-gradient(#15151a,#15151a) padding-box,conic-gradient(from 30deg,#f595b6,#b6a1ff,#72cffa,#90e4a6,#f8df83,#ffa878,#f595b6) border-box!important;box-shadow:0 0 8px #e0b1f144!important;border-radius:8px}.unique-art .item-tier-badge{color:#fff7ed;background:#241d31;border:1px solid #d8b4ef;letter-spacing:.04em}.unique-power strong{color:#ffe4b4}

.endgame-routes{display:grid;gap:.45rem;margin-top:.8rem}.endgame-routes>button{min-height:44px;display:grid;text-align:left;gap:.2rem;width:100%;white-space:normal}.endgame-routes span,.endgame-routes small{font-size:.78rem;color:var(--muted,#b9aaa0)}.stormgrave-card{margin-top:1rem;border:1px solid #6b817a;background:linear-gradient(135deg,#102525,#13191f 65%);padding:1.2rem;color:#e1e7df}.stormgrave-card h2,.stormgrave-card h4{color:#d1e7d9;margin:.4rem 0}.stormgrave-card.compact{padding:.7rem;margin-top:.6rem}.stormgrave-card details{margin-top:1rem}.stormgrave-card details p{max-width:75ch}.stormgrave-card .az-actions{display:flex;gap:.5rem;flex-wrap:wrap}.stormgrave-card button{min-height:44px}.stormgrave-card.compact .az-actions button{flex:1}

.solo-help-dialog{width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 32px);overflow:auto;padding:1.3rem}.solo-help-dialog h2{font-size:1.4rem}.solo-help-dialog dl{display:grid;gap:.35rem}.solo-help-dialog dt{font-weight:700;color:#dfbc7e}.solo-help-dialog dd{margin:0 0 .65rem}.solo-help-dialog .az-actions{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:1rem}.solo-help-dialog button,.solo-help-dialog .checkbox-row{min-height:44px}.solo-help-dialog .checkbox-row{display:flex;gap:.6rem;align-items:center;font-size:.85rem}.solo-help-dialog input{flex:none;width:20px;height:20px}

.world-spawn-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:10px 18px;padding:14px 20px;border:1px solid #769bbc;background:linear-gradient(105deg,#20364a,#15202e);box-shadow:0 3px 14px #0004}.world-spawn-banner div{display:grid;gap:4px;min-width:0}.world-spawn-banner strong{color:#ecd29b}.world-spawn-banner small{color:#b9c6d2}.world-spawn-banner button{flex-shrink:0;min-height:44px}.world-spawn-banner [data-storm-countdown]{font-variant-numeric:tabular-nums}@media(max-width:500px){.world-spawn-banner{margin:8px;padding:12px;gap:8px;font-size:.8125rem}.world-spawn-banner button{padding:8px 10px}.world-spawn-banner small{font-size:.6875rem}}

/* Regional atlas. The painting keeps its full composition at every viewport. */
.endgame-travel{margin:0;padding:0;border:0;background:none}
.region-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;margin:0 0 22px;padding:5px;border:1px solid #796544;background:#151c20}
.region-tabs button{min-width:0;min-height:46px;padding:9px 5px;background:transparent;border:1px solid transparent;color:#bac4c8;font:inherit;font-size:.875rem;font-weight:600;line-height:1.3;cursor:pointer;transition:background .15s,color .15s}
.region-tabs button:hover{background:#293338;color:#f2dfb7}.region-tabs button[aria-selected=true]{border-color:#b79759;background:linear-gradient(#4a4030,#302e27);color:#ffe0a1;box-shadow:inset 0 0 12px #ba915012}
.region-tabs button:focus-visible,.regional-pin:focus-visible,.regional-place:focus-visible{outline:3px solid #f0d295;outline-offset:3px}
.region-title{margin-bottom:22px}.region-title h1{font-family:Georgia,serif;font-size:clamp(1.5625rem,3vw,2.375rem);line-height:1.12;color:#efd7a4;margin:7px 0 10px}.region-title p{margin:0;color:#bcc6c6;line-height:1.5}.region-title .eyebrow{color:#c4ad78;font-size:.6875rem;letter-spacing:.12em}.region-title>.text-link{white-space:nowrap;min-height:44px}
.regional-workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,300px);gap:22px;align-items:start}.regional-geography{min-width:0}
.region-atlas{position:relative;aspect-ratio:3/2;background:#22272a;border:1px solid #8e764e;box-shadow:0 8px 28px #0007;isolation:isolate}
.region-atlas>img{display:block;width:100%;height:100%;object-fit:contain}
.regional-pin{position:absolute;left:clamp(24px,var(--region-x),calc(100% - 24px));top:clamp(24px,var(--region-y),calc(100% - 24px));transform:translate(-50%,-50%);width:46px;height:46px;min-height:46px;padding:4px;background:#11252deb;border:2px solid #dab36a;border-radius:50%;box-shadow:0 3px 7px #000c,0 0 0 3px #15212abf;color:#ffda89;font:700 1.125rem Georgia,serif;cursor:pointer;transition:background .15s,box-shadow .15s}
.regional-pin.locked{background:#202730eb;border-color:#c0b7a1;color:#ddd5c0}.regional-pin:hover{background:#4b3d2c;box-shadow:0 3px 7px #000c,0 0 0 4px #e6c57c77}.regional-pin.selected{color:#261c0f;background:#f1d18e;border-color:#fff0c5;box-shadow:0 3px 7px #000c,0 0 0 4px #151d27c9,0 0 19px #ebc776a0}
.regional-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:14px}
.regional-place{display:flex;align-items:center;gap:9px;min-height:60px;min-width:0;padding:9px 10px;text-align:left;border:1px solid #465457;background:#131e24;color:#dfd5bd;cursor:pointer}.regional-place>span:nth-child(2){min-width:0;flex:1}.regional-place strong{font-size:.8125rem;line-height:1.35;display:block;overflow-wrap:anywhere}.regional-place small{display:block;font-size:.6875rem;line-height:1.5;color:#a9b9bd;margin-top:3px}.regional-place:hover{background:#263135;border-color:#9b835a}.regional-place.selected{border-color:#c29c5c;background:#303126}.regional-place.locked{color:#c3c6c2}.regional-place.locked small{color:#b4b4ad}
.regional-number{display:grid;place-items:center;width:25px;height:25px;flex:none;border:1px solid #9c8254;border-radius:50%;color:#ecd29d;font:700 .875rem Georgia,serif}.regional-lock{font-size:.6875rem;flex:none}
.regional-destination{padding:22px;background:linear-gradient(145deg,#243139,#151d22 70%);border:1px solid #77694e;box-shadow:0 7px 20px #0003;scroll-margin:90px;min-width:0}.regional-destination:focus{outline:2px solid #c7a663;outline-offset:3px}.endgame-travel .regional-destination h2{color:#edd29b;font-family:Georgia,serif;line-height:1.2;font-size:1.5625rem;margin:10px 0 15px}.regional-destination p{font-size:.875rem;line-height:1.6;color:#c4cccc}.regional-destination .eyebrow{font-size:.625rem;line-height:1.5;letter-spacing:.1em;color:#c4ad78;margin:0}.regional-facts{display:flex;gap:6px;flex-wrap:wrap;margin:18px 0}.regional-facts span{font-size:.6875rem;color:#c7d5d5;border:1px solid #5b6d70;padding:5px 7px;background:#101c20}.regional-route-state.unlocked{color:#bed3b3}.regional-route-state.locked{color:#dcc9a6}.regional-destination .regional-lock-reason{font-size:.75rem;color:#d4c4a6}.regional-destination>.text-link{display:inline-block;margin-top:16px;min-height:44px}.regional-destination .full{width:100%;min-height:46px;white-space:normal}.regional-destination .stormgrave-card.compact{border:0;background:none;padding:0;margin:12px 0 0}.regional-destination .stormgrave-card h4{font:1.5625rem/1.2 Georgia,serif;color:#edd29b}.regional-destination details{font-size:.8125rem;line-height:1.5}.regional-destination summary{min-height:44px;cursor:pointer}
@media(max-width:1100px){.regional-workspace{grid-template-columns:minmax(0,1fr)}.regional-destination{max-width:none}.regional-destination>p{max-width:75ch}.regional-destination .full{width:auto;min-width:200px}.regional-destination .stormgrave-card .az-actions{max-width:440px}}
@media(max-width:600px){.region-tabs{gap:2px;padding:3px;margin-bottom:18px}.region-tabs button{font-size:.75rem;min-height:46px;padding:8px 2px}.region-title{margin-bottom:18px}.region-title h1{font-size:1.625rem}.region-title p{font-size:.8125rem}.region-title .eyebrow{font-size:.5625rem;letter-spacing:.07em}.regional-workspace{gap:18px}.regional-legend{gap:6px;margin-top:10px}.regional-place{padding:8px 7px;gap:6px;min-height:66px}.regional-place strong{font-size:.75rem}.regional-place small{font-size:.625rem}.regional-number{width:22px;height:22px;font-size:.75rem}.regional-lock{display:none}.regional-destination{padding:17px}.regional-destination .full{width:100%}.regional-destination>.text-link{margin-top:10px}}

.region-tabs button span{display:block;overflow-wrap:normal;word-break:normal}.region-tabs button small{display:block;font-size:.6875rem;font-weight:400;margin-top:5px;color:#b9ad91}.region-atlas-viewport{overflow:auto;max-width:100%;border:1px solid #8e764e;overscroll-behavior-x:contain}.region-atlas-viewport:focus-visible{outline:2px solid #f0d295;outline-offset:3px}.region-atlas{min-width:640px;border:0;box-shadow:none}.regional-pin-name{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);display:block;width:146px;max-width:none;padding:6px 8px;box-sizing:border-box;background:#101c21ee;border:1px solid #ac9162;border-radius:4px;font:600 .8125rem/1.4 system-ui;color:#f5dfb1;white-space:normal;overflow-wrap:normal;word-break:normal;text-shadow:0 1px 2px #000;pointer-events:none}.regional-pin.selected .regional-pin-name{background:#3e3424f5;border-color:#f0cb87;color:#fff0cb}.regional-pin.locked .regional-pin-name{color:#d2d4d0;border-color:#828a88}.regional-place strong{overflow-wrap:normal;word-break:normal}.regional-map-hint{font:.75rem/1.5 system-ui;color:#b7c3c2;margin:10px 0}.regional-legend{margin-top:10px}
@media(max-width:700px){.region-tabs{display:flex;flex-wrap:wrap}.region-tabs button{flex:1 1 145px;padding:10px;font-size:.8125rem}.regional-legend{grid-template-columns:minmax(0,1fr)}.regional-place strong{font-size:.875rem}.regional-place small{font-size:.75rem}}

.regional-pin{width:58px;height:58px;padding:3px}.regional-destination-art{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%;pointer-events:none}.regional-pin.locked .regional-destination-art{filter:grayscale(.85) brightness(.7)}.regional-landmark{display:block;flex:0 0 44px;width:44px;height:44px;padding:2px;border:1px solid #b89961;border-radius:50%;background:#111b20}.regional-place.locked .regional-landmark{filter:grayscale(.85)}
.endgame-party-art{display:block;width:100%;height:120px;object-fit:cover;border:1px solid #b39a63;margin-bottom:16px;border-radius:3px}
[data-endgame-party-warning] .solo-help-dialog .az-actions>button{min-height:44px;flex-shrink:0}
.quest-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 24px}
.shell .quest-tabs>button{min-height:44px;flex:1 1 120px;max-width:240px}
.quest-tabs>button[aria-pressed=true]{border-color:#d9b66b;background:#3a3428;color:#ffe6ad}
@media(max-width:360px){.shell .quest-tabs{display:grid;grid-template-columns:minmax(0,1fr)}.shell .quest-tabs>button{max-width:none;width:100%;white-space:normal;overflow-wrap:break-word}}

.map-quest-badges{display:inline-flex!important;gap:4px;align-items:center;margin-left:5px;vertical-align:middle}.map-quest-badges b{font:700 .75rem/1.125rem system-ui;min-width:18px;text-align:center;border:1px solid #efc46b;border-radius:50%;background:#302a18;color:#ffe2a1}.map-quest-badges b.guild-objective{border-color:#83c7d1;background:#17313a;color:#c9f4ff}.map-objectives{padding:12px;margin:8px 0;border:1px solid #a68a4b;background:#14232b}.map-objectives h3{margin:0 0 8px}.map-objectives p{margin:6px 0}.map-objectives button{min-height:44px}.map-objective-key{display:flex;gap:16px;flex-wrap:wrap;padding:10px 0}.map-pin .map-quest-badges{position:absolute;right:-5px;top:-10px}.regional-pin .map-quest-badges{position:absolute;right:0;top:0}

.player-inspection{width:min(620px,calc(100vw - 24px));max-height:85dvh;overflow:auto;padding:18px;box-sizing:border-box;border:1px solid #c3a35b}.player-inspection>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.player-inspection button,.player-inspection summary{min-height:44px}.player-inspection [data-inspect-close]{flex:0 0 44px;width:44px;height:44px;padding:0}.player-inspection summary{cursor:pointer;padding:8px;box-sizing:border-box}.inspect-equipment{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.inspect-equipment details,.inspect-skills details{border:1px solid #69746e;background:#14222a;padding:6px;overflow-wrap:anywhere}.inspect-equipment summary span{display:block;color:#cab580;font-size:.75rem;text-transform:capitalize}.inspect-equipment dl>div{display:flex;justify-content:space-between;gap:8px}.inspect-equipment dd{margin:0}.rank-table [data-inspect-player],.rank-honour [data-inspect-player]{min-height:44px}@media(max-width:440px){.inspect-equipment{grid-template-columns:1fr}}

.inspect-equipment summary .gear-icon{float:left;width:40px;height:40px;margin:0 8px 4px 0}.inspect-equipment summary{min-height:60px;display:flow-root}

.rank-xp{display:flex;flex-direction:column;gap:4px;max-width:190px;font:.75rem/1.35 system-ui;text-align:left;color:#d6e0dc;white-space:normal}.rank-xp progress{width:100%;height:7px;accent-color:#d7b465}.rank-xp small{font-size:.625rem;overflow-wrap:anywhere;color:#abbab7}@media(max-width:600px){.rank-xp{font-size:.625rem;max-width:110px}.rank-xp small{font-size:.5625rem}}

.rank-table th:first-child{white-space:nowrap}.rank-xp{text-align:right;margin-left:auto}@media(max-width:600px){.rank-table th:first-child{width:40px}.rank-xp{font-size:.6875rem}.rank-xp small{font-size:.625rem}}

/* Keep the decorative frame outside the scrolling inspection content. */
.modal-backdrop .player-inspection{overflow:hidden;padding:0}.player-inspection-content{max-height:85dvh;overflow:auto;box-sizing:border-box;padding:18px;overscroll-behavior:contain}.player-inspection-content>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.world-spawn-clock{display:grid;gap:5px;margin:12px 0;padding:10px 12px;border:1px solid #9d854955;background:#c7a8550d;color:#efdeb3;font-variant-numeric:tabular-nums}.world-spawn-clock small{color:#b9c7cb;font-size:.75rem;line-height:1.5}.regional-place .world-spawn-clock{margin:5px 0 0;padding:0;border:0;background:none;font-size:.75rem}.world-spawn-clock strong{font-weight:600}

.adventure-rates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px;padding:9px 12px;border:1px solid #9d854950;background:#111c28}.adventure-rates>span{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0}.adventure-rates strong{color:#e6c16e;font-variant-numeric:tabular-nums}.adventure-rates small{font-size:.6875rem;color:#b8c5d1}.adventure-rates>[data-rate-note]{grid-column:1/-1;text-align:center}@media(max-width:400px){.adventure-rates>span{display:grid;gap:2px}.adventure-rates{gap:4px 10px}}

/* Compact, shared record cards keep every leaderboard readable on phones. */
.honour-records{list-style:none;margin:1rem 0;padding:0;display:grid;gap:.65rem}.honour-record{display:grid;grid-template-columns:3rem minmax(0,1fr) auto;align-items:center;gap:.8rem;padding:1rem;border:1px solid #73613d66;border-radius:8px;background:linear-gradient(115deg,#182434,#101820)}.honour-record.own{border-color:#c3a063;background-color:#292719}.honour-identity{min-width:0;overflow-wrap:anywhere}.honour-identity>strong,.honour-identity>small,.honour-score>strong,.honour-score>small{display:block}.honour-identity small,.honour-score small,.rank-presence{color:#b4c5ce;font-size:.78rem}.honour-score{text-align:right}.honour-score strong{color:#edc778;font-size:1.35rem}.rank-presence{display:block;margin-top:.55rem}.rank-presence.is-online{color:#99cfaa}.honour-identity button{min-height:44px}.guild-hunt-section [data-realm="guild-reset-quest"]{min-height:44px;margin-top:.55rem;white-space:normal;max-width:100%}.guild-gather-task{flex-wrap:wrap}.guild-gather-task>[data-realm="guild-reset-quest"]{flex:1 0 100%;width:100%;grid-column:auto}.rank-tabs{flex-wrap:wrap}
@media(max-width:480px){.honour-record{grid-template-columns:2rem minmax(0,1fr);padding:.7rem;gap:.45rem}.honour-score{grid-column:2;text-align:left}.honour-score strong,.honour-score small{display:inline;margin-right:.4rem}.rank-honours{grid-template-columns:1fr}.rank-presence time{display:block}}

.companion-banter{position:absolute;z-index:8;left:50%;transform:translateX(-50%);width:max-content;max-width:132px;padding:5px 7px;border:1px solid #c6ac73;border-radius:7px;background:#16212bee;color:#fff1cc;font:.6875rem/1.3 system-ui;text-align:center;pointer-events:none;box-shadow:0 2px 5px #0008}.companion-banter:after{content:"";position:absolute;left:46%;bottom:-5px;border:5px solid transparent;border-bottom:0;border-top-color:#c6ac73}
.map-quest-badges b.mystery-objective{border-color:#b79cf0;background:#251d3b;color:#e6dcff}
.quest-raid-note{margin:.35rem 0;padding:.4rem .6rem;border-left:3px solid #c46a4a;background:#2a1a17;color:#f3d6c8;font-size:.9rem}.quest-raid-note b{color:#ffb48f}

/* Inspect card actions (Whisper, Invite to party, Block, Report) and the short report form. */
.inspect-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}.inspect-actions>button{flex:0 1 auto}.inspect-done{display:inline-flex;align-items:center;min-height:44px;padding:0 6px;color:#cfe0b4;font-size:.875rem}
.inspect-report[hidden]{display:none}.inspect-report{display:grid;gap:8px;margin-top:10px;padding:10px;border:1px solid #9d854966;background:#c7a8550d}.inspect-report label{display:grid;gap:4px;font-size:.875rem}.inspect-report input{min-height:44px;font-size:1rem;box-sizing:border-box;width:100%}.inspect-quote{margin:0;font-size:.875rem;color:#d6e0dc;overflow-wrap:anywhere}
.report-problem{width:min(480px,calc(100vw - 24px));padding:18px;box-sizing:border-box}.report-problem label{display:grid;gap:6px}.report-problem textarea{width:100%;box-sizing:border-box;font:inherit;font-size:1rem;min-height:96px}.report-problem .az-actions button{min-height:44px}
/* Zone walls (10 Oct 2026, combat overhaul only): the zone's element wall on its Map card. */
.zone-wall{border-left:3px solid #8e9aa0;padding:6px 10px;background:#0f191d;font-size:.8125rem;line-height:1.5;margin:10px 0}.zone-wall strong{color:#edd29b}.zone-wall-fire{border-color:#d8834f}.zone-wall-frost{border-color:#86c4dd}.zone-wall-nature{border-color:#8fbf6a}.zone-wall-shadow{border-color:#a28ad0}

/* /town-systems.css */
.storage-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}.storage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:12px}.storage-item{min-width:0;padding:14px;background:#171c21;border:1px solid #514633;border-radius:6px}.storage-item-heading{display:flex;align-items:center;gap:12px}.storage-item-heading>.item-icon{flex:0 0 54px;width:54px;height:54px}.storage-item h3{font-size:1rem;line-height:1.4;margin:0;overflow-wrap:normal;word-break:normal}.storage-item p{margin:5px 0 10px}.storage-item details{margin:12px 0}.storage-item summary{cursor:pointer;color:#d7ba80}.account-storage h2{display:flex;justify-content:space-between;gap:16px}.account-storage h2 small{font:500 .85rem system-ui;color:#b6b4aa;white-space:nowrap}.storage-empty{padding:24px;line-height:1.6;color:#b9b6ab}.town-prop-sprite{display:block;width:155px;height:130px;object-fit:contain}.account-storage a{color:#dac38e}@media(max-width:760px){.storage-columns{grid-template-columns:1fr}.account-storage .exp-heading{padding-inline:4px}.storage-item{padding:12px}}

.auction-summary,.auction-tabs{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:16px 0}.auction-summary{font-size:.9rem;color:#c6bdad}.auction-summary strong,.auction-price{color:#e9c879}.auction-tabs button[aria-pressed=true]{border-color:#d2ad61;background:#514127}.auction-filters{display:grid;grid-template-columns:2fr 1fr 1fr auto;align-items:end;gap:12px;margin:20px 0}.auction-filters label,.auction-house .storage-item label{display:grid;gap:6px}.auction-filters input,.auction-filters select,.auction-house .storage-item input{min-width:0;width:100%;min-height:44px;padding:9px;border:1px solid #5a513d;border-radius:4px;background:#10151a;color:#f1e6d0}.auction-house .storage-item button{min-height:44px;margin-top:10px}.auction-price{font-size:1.3rem}.auction-price small{font-size:.8rem}.storage-item-heading>.gear-icon,.storage-item-heading>.gear-icon-sprite{flex-shrink:0;width:54px;height:54px}.auction-house .storage-item .gear-comparison{max-width:100%;overflow:auto}@media(max-width:650px){.auction-filters{grid-template-columns:1fr 1fr}.auction-filters label:first-child{grid-column:1/-1}.auction-summary{gap:8px 16px}}

.guild-page form{display:grid;gap:14px}.guild-page label{display:grid;gap:6px}.guild-page input{background:#10151a;border:1px solid #5a513d;border-radius:4px;color:#f1e6d0;padding:10px;min-height:44px;min-width:0;width:100%}.guild-summary{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin:20px 0;color:#d8bd86}.guild-summary input{width:175px;font:600 1rem monospace;letter-spacing:1px}.guild-page .exp-panel{margin-bottom:18px}.guild-task-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.guild-task-grid progress{width:100%;height:14px;accent-color:#b39051}.guild-upgrades{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.guild-upgrade{border:1px solid #504330;padding:16px;background:#191e23;border-radius:6px}.guild-upgrade h3{font-size:1rem}.guild-upgrade strong{display:block;font-size:.9rem}.guild-emblem{font-size:1.75rem;color:#d4b679}.guild-page button{min-height:44px}.guild-roster-scroll{max-width:100%;overflow:auto}.guild-roster{border-collapse:collapse;width:100%;text-align:left}.guild-roster td,.guild-roster th{padding:12px;border-bottom:1px solid #443d32}.guild-roster td small{display:block;color:#aeb5b9}.guild-roster details button{display:block;margin:6px 0;width:100%}.guild-online{color:#8ad4a7}.guild-footer{display:flex;align-items:center;gap:16px;margin:20px 0}.town-npc[data-town-npc=guild] .town-prop-sprite{width:118px;height:150px;object-fit:contain;object-position:bottom}@media(max-width:1000px){.guild-upgrades{grid-template-columns:1fr 1fr}}@media(max-width:540px){.guild-upgrades,.guild-task-grid{grid-template-columns:1fr}.guild-roster th,.guild-roster td{padding:8px;font-size:.85rem}.guild-summary{align-items:start;flex-direction:column}}

.vault-destination{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(260px,1fr);gap:24px;align-items:center}.vault-destination>img{width:100%;height:auto;border-radius:8px}.vault-facts{display:grid;grid-template-columns:1fr 1fr;gap:16px}.vault-facts dt{color:#b6a78e;font-size:.85rem}.vault-facts dd{margin:4px 0 0}.renown-activities table{width:100%;border-collapse:collapse}.renown-activities td,.renown-activities th{text-align:left;padding:10px;border-bottom:1px solid #77634155}@media(max-width:760px){.vault-destination{grid-template-columns:1fr}.vault-facts{grid-template-columns:1fr}}

.town-npc[data-town-npc="chest"] .town-prop-sprite,.town-npc[data-town-npc="guild-chest"] .town-prop-sprite{width:84px;height:78px;object-fit:contain}.town-npc[data-town-npc="chest"] .town-name,.town-npc[data-town-npc="guild-chest"] .town-name{bottom:96px;width:180px}

.guild-directory{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:16px;margin-top:16px}.guild-directory article{min-width:0;display:flex;flex-direction:column;gap:10px}.guild-directory h3,.guild-directory p{margin:0;overflow-wrap:anywhere}.guild-directory small{color:var(--muted,#b2b5b7);line-height:1.5}.guild-directory button{align-self:flex-start;min-height:44px}.guild-permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0}.guild-permission-grid fieldset{border:1px solid #554631;padding:16px;min-width:0}.guild-page label{display:grid;gap:8px;margin:12px 0}.guild-page input,.guild-page select,.guild-page textarea{max-width:100%;min-width:0;font:inherit;box-sizing:border-box}.guild-page textarea{width:100%;padding:12px;line-height:1.5}.guild-page .section-tabs{flex-wrap:wrap}.chat-channels{flex-wrap:wrap}.chat-channels button{min-height:44px}@media(max-width:600px){.guild-permission-grid{grid-template-columns:1fr}.guild-summary{flex-wrap:wrap}.guild-page .guild-roster{min-width:0}.guild-page .guild-roster th,.guild-page .guild-roster td{padding:8px 6px}.guild-page .guild-roster td{overflow-wrap:anywhere}}
/* Narrow guild rosters keep identity, presence and actions on readable rows. */
@media(max-width:600px){
 .shell .guild-page .guild-roster,.shell .guild-page .guild-roster tbody{display:block;width:100%}
 .shell .guild-page .guild-roster thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
 .shell .guild-page .guild-roster tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:14px 0;border-bottom:1px solid #b6985d30}
 .shell .guild-page .guild-roster td{display:block;min-width:0;padding:0;border:0;font-size:.8125rem!important;overflow-wrap:anywhere}
 .shell .guild-page .guild-roster td:first-child{padding-left:0}
 .shell .guild-page .guild-roster td:nth-child(2){white-space:nowrap;color:#d8bd86}
 .shell .guild-page .guild-roster td:nth-child(n+3){grid-column:1/-1;font-size:.75rem!important;line-height:1.5}
 .shell .guild-page .guild-roster td:nth-child(4){margin-top:6px}
 .shell .guild-page .guild-roster details button{min-height:44px;width:100%;font-size:.8125rem!important;overflow-wrap:normal}
}

/* /character-build.css */
.character-build.character-panel{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:28px;align-items:start}.character-level-progress{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:0 0 16px;color:#d8c99e}.character-level-progress progress{flex:1;min-width:150px;max-width:360px;height:8px;accent-color:#d1b772}.attribute-panel{min-width:0;background:#101b22;border:1px solid #66583e;border-radius:5px;padding:18px}.attribute-panel h2{margin:0 0 6px}.attribute-panel header>strong{font:.875rem var(--ui);color:#dbbb74}.attribute-row{padding:12px 0;border-bottom:1px solid #ffffff12}.attribute-row>div:first-child{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}.attribute-row strong{white-space:nowrap;font-size:.9375rem}.attribute-row b,.attribute-gain{color:#95d8ab}.attribute-row details{flex:0 0 100%;font-size:.75rem}.attribute-row summary{cursor:pointer;color:#adbaaF;min-height:24px}.attribute-row details p{font-size:.8125rem;line-height:1.5;margin:4px 0}.attribute-controls{display:flex;justify-content:flex-end;gap:6px;margin-top:5px}.attribute-controls button{min-width:42px;min-height:36px;padding:5px 9px}.attribute-actions{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 4px}.attribute-actions button{font-size:.8125rem}.attribute-panel .small-note{font-size:.8125rem;line-height:1.5}.attribute-confirmation{width:min(620px,calc(100vw - 28px));padding:24px;max-height:calc(100dvh - 40px);overflow:auto}.attribute-review-table{overflow:auto}.attribute-review-table table{width:100%;border-collapse:collapse;font:.875rem/1.5 var(--ui);font-variant-numeric:tabular-nums}.attribute-review-table th,.attribute-review-table td{padding:9px 8px;border-bottom:1px solid #ffffff14;text-align:right;white-space:nowrap}.attribute-review-table th:first-child{text-align:left;white-space:normal}.character-build .paper-doll{min-width:0}.character-build .paper-doll figure img{width:100%;max-height:510px;object-fit:contain}
@media(max-width:760px){.character-build.character-panel{grid-template-columns:minmax(0,1fr);gap:20px}.attribute-panel{padding:14px}.attribute-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.attribute-controls{align-self:start}.attribute-row details{margin-top:1px}.attribute-confirmation{padding:16px}.attribute-review-table th,.attribute-review-table td{padding:8px 4px;font-size:.75rem}.attribute-controls button{min-height:44px}}

/* Rune sockets use the existing Character frame and palette. */
.character-runes{position:relative;border-color:var(--exp-border,#625337);overflow:hidden}
.character-runes>header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.character-runes>header h2{margin:0}.rune-availability{color:#c9b891;font:.8125rem var(--ui);border:1px solid #75613e;border-radius:3px;padding:5px 9px}
.rune-sockets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:18px}
.rune-socket{display:flex;align-items:center;gap:18px;min-width:0;padding:18px;border:1px solid #776343;border-radius:5px;background:radial-gradient(ellipse at 12% 50%,#bf95451a,transparent 65%),#0c1720;box-shadow:inset 0 0 0 3px #15232b,inset 0 0 0 4px #74603e55}
.rune-socket h3{margin:0}.rune-socket p{margin:3px 0 0;color:#baaf97;font-size:.875rem}
.rune-socket-setting{display:grid;place-items:center;flex:0 0 66px;height:66px;border:1px solid #9d8154;border-radius:50%;background:radial-gradient(circle,#080f17 42%,#ac894532 44%,#0b1620 48%,#0b1620 61%,#b8995e66 63%,#0b1620 65%);box-shadow:0 3px 12px #0006,inset 0 0 12px #0008}
.rune-socket-setting>span{display:block;width:29px;height:29px;transform:rotate(45deg);border:1px solid #a38a5d88;background:#0a141b;box-shadow:inset 0 0 0 4px #142129}
@media(max-width:480px){.rune-sockets{gap:10px}.rune-socket{flex-direction:column;gap:12px;padding:16px 8px;text-align:center}.rune-socket-setting{flex-basis:60px;width:60px;height:60px}.rune-socket h3{font-size:1.125rem}.character-runes>p{font-size:.875rem}}

.rune-socket-setting>.hunt-rune-icon{width:50px;height:50px;flex:none}.rune-socket-setting:focus-visible{outline:2px solid #ebca81;outline-offset:4px}.boss-hunt-art>.enemy-portrait{width:128px;height:128px}.rune-socket>div{min-width:0}.rune-socket p{overflow-wrap:anywhere}
/* paper doll rune and charm boxes */
.paper-doll{grid-template-columns:minmax(64px,128px) minmax(120px,1fr) minmax(64px,128px)}
.paper-doll>div{justify-items:center}
.paper-slot-set{display:grid;gap:6px;width:100%;box-sizing:border-box;padding:8px 6px;border:1px solid #776343;border-radius:6px;background:linear-gradient(160deg,#182234,#0c1420);box-shadow:inset 0 0 0 2px #0c1420,inset 0 0 0 3px #74603e55}
.paper-slot-set h3{margin:0;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:#e0c483;text-align:center}
.paper-slot-set>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.paper-slot-set .rune-socket,.paper-slot-set .charm-socket{display:grid;justify-items:center;align-content:start;gap:3px;min-width:0;padding:0;border:0;background:none;box-shadow:none;text-align:center}
.paper-slot-set .rune-socket-setting{flex:none;width:52px;height:52px;min-width:44px;min-height:44px;padding:0;cursor:pointer}
.paper-slot-set .rune-socket-setting>.hunt-rune-icon{width:40px;height:40px}
.paper-slot-set .item-tile{width:52px;height:52px;min-width:44px;min-height:44px;margin:0}
.paper-slot-set .item-tile.empty{border-style:dashed;opacity:.65;cursor:default}
.paper-slot-set b{display:block;font-size:.6875rem;line-height:1.25;font-weight:normal;color:#f0d9a0;overflow-wrap:anywhere}
.paper-slot-set small{display:block;font-size:.6875rem;line-height:1.25;color:#b9c3cf;overflow-wrap:anywhere}
.paper-slot-set .socket-inactive{color:#e7a586}
@media(max-width:640px){.paper-doll .paper-slot-set{order:2;align-self:stretch}.paper-slot-set b,.paper-slot-set small{font-size:.75rem}.paper-slot-set .item-tile,.paper-slot-set .rune-socket-setting{width:48px;height:48px}}
@media(min-width:641px){.paper-slot-set{min-height:9.5rem;align-content:start}}
.paper-slot-set .item-tile.empty{border:1px dashed #9d8154;background:#0a121b;opacity:.8}
.gear-icon.hunt-rune-icon,.gear-icon.charm-icon{border:0;background:none;box-shadow:none;border-radius:0;filter:drop-shadow(0 2px 3px #000a)}
.paper-slot-set .rune-socket-setting,.paper-slot-set .charm-slot-button,.paper-slot-set .item-tile.empty{border:0;background:none;box-shadow:none;border-radius:0;padding:0;opacity:1}
.paper-slot-set .gear-icon{width:100%;height:100%;max-height:none}
.paper-slot-set .rune-socket-setting:focus-visible,.paper-slot-set .charm-slot-button:focus-visible{outline:2px solid #ebca81;outline-offset:2px}
.gear-icon.rune-empty,.gear-icon.charm-empty{filter:none}
.ui-help-question{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;cursor:help}
.ui-help-mark,.stat-help>summary::after{display:inline-grid;place-items:center;flex:none;width:18px;height:18px;border:1px solid #b6985d;border-radius:50%;color:#e0c483;font:600 .75rem/1 system-ui;text-decoration:none}
.stat-help>summary{text-decoration:none;gap:8px}
.stat-help>summary::after{content:"?";margin-left:8px}
.stat-help[open]>summary::after{background:#3a2f1a}
.ui-tooltip-more{display:block;width:100%;min-height:44px;margin-top:10px;border:1px solid #b6985d;border-radius:4px;background:#2a2114;color:#f0d9a0;cursor:pointer;font:inherit}
/* ? help buttons sit inside headings and rows: keep the 44px touch target but do not make the line taller */
.ui-help-question{margin-block:-13px;margin-inline:3px}
.ui-help-question .ui-help-mark{text-transform:none;letter-spacing:0;background:transparent}
.ui-help-question:hover .ui-help-mark,.ui-help-question:focus-visible .ui-help-mark{background:#3a2f1a;border-color:#e0c483}
.paper-slot-set h3 .ui-help-question{display:flex;margin:-13px auto}
.shell .paper-slot-set h3{font-size:.75rem;line-height:1.3}
/* Charms and Runes are their own item classes: jade talisman frame and slate tablet frame, never the Unique rainbow. */
.rarity-charm{--rarity:#63c7b8}.rarity-rune{--rarity:#8fa6c2}
.item-tile.rarity-charm:not(.charm-slot-button),.storage-slot.rarity-charm,.market-bag-item.rarity-charm,.party-gear-tile.rarity-charm{border-color:#4fb3a5;border-image:none;border-radius:14px 14px 5px 5px;background:radial-gradient(circle at 50% 38%,#1e3c3b,#0b151b)}
.item-tile.rarity-rune:not(.charm-slot-button),.storage-slot.rarity-rune,.market-bag-item.rarity-rune,.party-gear-tile.rarity-rune{border-color:#7f97b5;border-image:none;border-radius:3px;background:radial-gradient(circle at 50% 40%,#26313f,#0b131a);box-shadow:inset 0 0 0 2px #0b131a,inset 0 0 0 3px #52657d}
.item-tier.item-class-badge{font-size:.625rem;line-height:1.3;letter-spacing:.02em;padding:0 3px}
.rarity-charm .item-class-badge{color:#c9f3ea;background:#0d2a2ae6}.rarity-rune .item-class-badge{color:#dbe6f5;background:#141f2ce6}
.item-details.rarity-charm,.item-details.rarity-rune{border-left:3px solid var(--rarity)}
.chat-item.chat-item-charm[open]{border-color:#4fb3a5}.chat-item.chat-item-rune[open]{border-color:#7f97b5}
.chat-item.chat-item-charm summary{color:#7fe0d0}.chat-item.chat-item-rune summary{color:#a9c0e0}
.chat-item.chat-item-charm .gear-icon,.chat-item.chat-item-rune .gear-icon{width:48px;height:48px;display:block;margin:4px 0}
/* Large browser text: an attribute row narrower than 15rem (large text on a phone, or a 320 px phone at the default size) puts the
   -/+1/+5 buttons under the name and help text, so the help text uses the full width instead of a sliver beside the buttons. */
.attribute-row{container:attribute-row/inline-size}
@container attribute-row (max-width:15rem){.attribute-row>*{grid-column:1/-1}}

/* /chat-compact.css */
/* Chat is a compact chronological log; linked details expand on demand. */
.community-chat .chat-messages{padding:8px 10px}.community-chat .chat-message,.community-chat .chat-message.own{display:block;margin:0;padding:4px 2px;border:0;border-bottom:1px solid #ffffff08;font:.8125rem/1.55 system-ui;overflow-wrap:anywhere}.community-chat .chat-message:nth-child(even){background:#ffffff03}.community-chat .chat-message>time{position:static;display:inline;color:#91a0a8;font-size:.625rem;margin-right:6px;white-space:nowrap}.community-chat .chat-message>div,.community-chat .chat-message.own>div,.community-chat .chat-message.system>div{display:contents;background:none;border:0;border-radius:0;padding:0}.community-chat .chat-message .chat-name,.community-chat .chat-message .chat-author{display:inline;min-height:0;max-width:none;padding:1px 0;margin:0 6px 0 0;font:700 .8125rem/1.55 system-ui;color:#d6bd7f;vertical-align:baseline}.community-chat .chat-message p{display:inline;font:.8125rem/1.55 system-ui;white-space:pre-wrap;margin:0;color:#dce2e2}.community-chat .chat-message.unique-drop>div>p,.community-chat .chat-message.unique-drop>div>p strong{color:#ff7474;font-weight:700}.community-chat .chat-item{display:inline;margin:0 0 0 5px;padding:0;border:0;background:transparent;font-size:.8125rem}.community-chat .chat-item summary{display:inline;min-height:0;padding:0;color:#dabe7d;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.community-chat .chat-item[open]{display:block;background:#111d25;border:1px solid #58604a;margin:6px 0}.community-chat .chat-item[open] summary{display:block;padding:7px 9px}.community-chat .chat-item>div{padding:8px 10px}.community-chat .chat-item>div>p{display:block}.community-chat .chat-heading{padding:10px 14px}.wayfarer-shell .chat-heading h2{font-size:1.25rem}.community-chat .chat-eyebrow{display:none}.community-chat .chat-channels{padding:5px 8px 0;gap:3px}.community-chat .chat-channels>button{min-height:44px;padding:6px 8px;font-size:.75rem}.community-chat .chat-destination{padding:4px 10px;font-size:.6875rem}.community-chat #chatForm{padding:8px 10px}.community-chat #chatForm textarea{min-height:44px;padding:9px;max-height:95px}.community-chat .chat-input-help{margin:3px 0}.community-chat #chatError:empty{display:none}.community-chat .chat-privacy summary{min-height:32px;padding:7px 0;font-size:.75rem}
.chat-notification{position:fixed;right:14px;top:74px;z-index:180;width:min(350px,calc(100vw - 28px));padding:10px 13px;background:#152a34;border:1px solid #aa915e;border-radius:5px;box-shadow:0 6px 24px #0008;color:#eee3c7;text-align:left;font:.8125rem/1.5 system-ui;cursor:pointer}.chat-notification strong{display:block;color:#e0bd77}.chat-notification span{display:block;overflow-wrap:anywhere}
.bug-report-list{width:min(800px,calc(100vw - 24px));padding:22px;max-height:calc(100dvh - 32px);overflow:auto}.bug-report-list article{border-top:1px solid #ffffff20;padding:12px 0}.bug-report-list article p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.875rem}.bug-report-list small{color:#aab9bf}.bug-report-list .az-actions{display:flex;flex-wrap:wrap;gap:6px}.bug-report-list .az-actions button{min-height:36px;font-size:.75rem}
@media(max-width:760px){.community-chat .chat-heading{padding:6px 10px}.community-chat .chat-message{padding:4px 1px}.community-chat .chat-channels>button{min-height:44px}.chat-notification{top:calc(var(--mobile-utility-height,58px) + 8px)}}

.community-chat .chat-command-suggestion{display:flex;flex-wrap:wrap;gap:3px 12px;align-items:center;width:100%;min-height:48px;margin:4px 0 7px;padding:9px 12px;text-align:left;background:#223138;border:1px solid #b49659;color:#f0dbac;border-radius:5px;font:.8125rem/1.5 system-ui}.community-chat .chat-command-suggestion[hidden]{display:none}.chat-command-suggestion strong{color:#f0cf83}.chat-command-suggestion small{color:#acbdc0}.chat-command-suggestion:focus-visible{outline:2px solid #f0cf83;outline-offset:2px}.nav-battle[hidden]{display:none!important}.nav-battle{color:#f2d291;border-color:#b2955b;min-height:44px;white-space:normal}.attribute-suggest{min-height:44px;width:100%}

.nav-battle-desktop{display:none}@media(min-width:1180px){.nav-battle-desktop:not([hidden]){display:block;min-height:44px;margin:-16px 0 8px}.nav-account .nav-battle{display:none}}@media(max-width:760px){.nav-battle{font-size:.75rem;padding:8px;min-height:44px}}

.community-chat .chat-channels{display:flex;flex-wrap:wrap;overflow-x:visible}.community-chat .chat-channels>button{flex:0 0 auto}.chat-readonly{font:.75rem/1.5 system-ui;color:#adbac8;padding:8px 10px;margin:0;border-top:1px solid #ffffff12}

/* Verified owner identity, independent of renown or chat-name colour. */
.chat-dev-badge{display:inline-block;vertical-align:middle;margin:0 .4em;padding:1px 5px;border:1px solid #bda064;border-radius:3px;background:linear-gradient(135deg,#49381e,#261f16);box-shadow:inset 0 1px #f3d59233;color:#ffe4a4;font:700 .5625rem/1.4 system-ui,sans-serif;letter-spacing:.08em;text-decoration:none;white-space:nowrap}
/* Earned titles (IRP_EARNED_TITLES_VERSION): a short italic title after the sender's name. */
.chat-title{margin-left:.35em;color:#d9bf7f;font-style:italic;font-weight:400;font-size:.85em;white-space:nowrap}
/* Earned titles (IRP_EARNED_TITLES_VERSION): the title under the name on the inspect card. */
.player-inspection .inspect-title{margin:0;color:#d9bf7f;font-style:italic}
/* Party chat feedback (14 Oct): a listing names the roles it still needs, so it is not read as the party's make-up or as an invite. */
.recruitment-listings .eyebrow{text-transform:uppercase;letter-spacing:.08em}.recruitment-listings .recruitment-needs{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:8px 0 12px}.recruitment-needs-label{color:#f2d6a0;font-weight:700}.recruitment-role{display:inline-flex;align-items:center;min-height:28px;padding:2px 10px;border:1px solid #c9a35d;border-radius:999px;background:#2a2417;color:#f6e3bb;font-weight:700}.recruitment-needs-or{color:#bcc9c8}.recruitment-needs small{flex-basis:100%;color:#bcc9c8}

/* Guild chat: rank tag before the name. The class colour is set inline on the name. */
.chat-guild-tag{margin:0 .35em 0 0;font:600 .75rem/1.4 system-ui;white-space:nowrap}
.chat-guild-tag.leader{color:#e8c56f}
.chat-guild-tag.officer{color:#8fb9dc}

/* /unique-guide.css */
.unique-skills{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;color:#e1c498}.unique-skills>strong{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}.unique-skills .text-button{font-size:.8125rem;padding:2px 0;min-height:25px;text-decoration:underline}.unique-guide-catalog{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin:22px 0}.unique-guide-catalog>a{display:flex;align-items:center;gap:12px;padding:12px;background:#111d25;border:1px solid #5b5150;border-radius:5px;color:#e8d5ad;text-decoration:none}.unique-guide-catalog>a:hover{border-color:#c3a56e;background:#1b2930}.unique-guide-catalog small{display:block;color:#b4c0c5;font:.75rem/1.5 system-ui;margin-top:5px}.unique-guide-art{display:inline-grid;position:relative;place-items:center;flex-shrink:0;width:82px;height:96px;padding:3px;border:2px solid transparent;border-radius:5px;background:linear-gradient(#10191d,#10191d) padding-box,conic-gradient(#fc9acb,#c5a3ff,#8dcaff,#8ce8b0,#f3da89,#fc9acb) border-box;overflow:hidden}.unique-guide-art svg{width:100%;height:100%}.unique-guide-art b{position:absolute;right:3px;top:2px;color:#fff;font:bold .625rem system-ui;text-shadow:0 1px 3px #000}.unique-guide-showcase{display:flex;align-items:center;gap:20px;margin:15px 0 25px;padding:18px;background:#111c23;border:1px solid #5a5144}.unique-guide-showcase .unique-guide-art{width:150px;height:180px}.unique-guide-showcase figcaption{max-width:28ch;line-height:1.8;color:#d8bd81}@media(max-width:520px){.unique-guide-showcase{gap:12px;padding:10px}.unique-guide-showcase .unique-guide-art{width:110px;height:135px}.unique-guide-catalog{grid-template-columns:minmax(0,1fr)}}
.zone-uniques{margin:12px 0}.zone-uniques h3{margin:0 0 8px;font-size:.875rem;color:#e1c498}.zone-unique-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px}.zone-unique{display:flex;flex-direction:column;align-items:center;gap:4px;min-height:44px;padding:4px;background:#111d25;border:1px solid #3d4448;border-radius:5px;color:#e8d5ad;font:inherit;text-align:center;cursor:pointer}button.zone-unique:hover,button.zone-unique:focus-visible{border-color:#c3a56e;background:#1b2930}.zone-unique.mine{border-color:#8a7445}.zone-unique .unique-guide-art{width:52px;height:60px}.zone-unique strong{display:block;font-size:.6875rem;line-height:1.25;overflow-wrap:anywhere}.zone-unique small{display:block;color:#9eabb0;font:.625rem/1.3 system-ui}
.unique-growth{margin:6px 0;color:#f0b49a;font-weight:600;overflow-wrap:anywhere}

/* /dev-controls.css */
.dev-tools-backdrop{z-index:210}.dev-tools-backdrop[hidden]{display:none}.dev-tools{width:min(1000px,calc(100vw - 24px));max-height:calc(100dvh - 28px);overflow:auto;padding:20px;background:#13212b}.dev-tools header{display:flex;justify-content:space-between;gap:12px;align-items:center}.dev-tools h2{margin:0}.dev-tools nav{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0}.dev-tools button,.dev-tools input,.dev-tools select{min-height:44px}.dev-tools button[aria-pressed=true]{border-color:#d8b66b;background:#493e2b}.dev-tools form{display:flex;flex-wrap:wrap;align-items:end;gap:10px;margin:12px 0}.dev-tools label{display:grid;gap:5px;flex:1;min-width:160px;font-size:.8125rem}.dev-tools input,.dev-tools select{width:100%;max-width:100%;min-width:0;padding:8px;background:#0d1820;color:#e8e0cf;border:1px solid #5c645e;border-radius:4px}.dev-tools details{border-top:1px solid #53616a;padding:9px 0}.dev-tools summary{min-height:36px;cursor:pointer}.dev-player-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:20px}.dev-player-list{display:flex;flex-direction:column;gap:5px;max-height:600px;overflow:auto}.dev-player-list button{text-align:left;font-size:.75rem}.dev-tools dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;font-size:.75rem}.dev-tools dt{color:#a8b9c0;overflow-wrap:anywhere}.dev-tools dd{margin:0;font-size:1rem}.dev-tools article{border-bottom:1px solid #ffffff20;padding:10px 0}.dev-tools article p{margin:5px 0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.8125rem}.dev-tools small{display:block;color:#a8b9c0}.dev-tools .dev-error{color:#ffabab}.dev-tools .dev-status{color:#b7dfb6}.dev-error:empty,.dev-status:empty{display:none}.dev-tools details p{overflow-wrap:anywhere;font-size:.75rem}.dev-control-icon{color:#e5bb69}
@media(max-width:700px){.dev-tools{padding:12px}.dev-player-layout{grid-template-columns:1fr}.dev-player-list{max-height:180px}.dev-tools dl{grid-template-columns:repeat(2,minmax(0,1fr))}}

.dev-health{padding:16px;border:1px solid #64583d;border-radius:6px;margin:16px 0 24px;background:#131b20}.dev-health dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}.dev-health dt{font-size:.75rem;color:#aba79d}.dev-health dd{margin:4px 0}.dev-health details{margin:14px 0}.dev-health li{margin:10px 0}

.sus-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:10px 0 14px}
.sus-tile{display:grid;gap:2px;padding:10px 12px;border:1px solid rgba(214,177,102,.35);border-radius:8px;background:linear-gradient(180deg,rgba(214,177,102,.12),rgba(0,0,0,.18))}
.sus-tile small{text-transform:uppercase;letter-spacing:.08em;font-size:11.5px;opacity:.75}.sus-tile b{font-size:22px;font-family:Georgia,serif;color:#f0d9a0}.sus-tile span{font-size:12px;opacity:.7}
.sus-list{display:grid;gap:12px;margin:8px 0 12px}
.sus-card{display:grid;gap:10px;padding:12px 14px;border:1px solid rgba(255,255,255,.14);border-left:4px solid #d6a24a;border-radius:8px;background:rgba(0,0,0,.22)}
.sus-card.is-high{border-left-color:#e0574f;background:linear-gradient(90deg,rgba(224,87,79,.12),rgba(0,0,0,.22))}
.sus-card header{display:flex;justify-content:space-between;align-items:center;gap:10px}.sus-card header div{display:grid}.sus-card header strong{font-size:18px;font-family:Georgia,serif}.sus-card header small{opacity:.7}
.sus-badge{padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700;background:#d6a24a;color:#1b1206}.is-high .sus-badge{background:#e0574f;color:#fff}
.sus-reasons{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.sus-reasons li{padding:3px 10px;border-radius:999px;font-size:13px;border:1px solid rgba(214,162,74,.55);background:rgba(214,162,74,.14)}
.sus-meters{display:grid;gap:7px}.sus-meter{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:10px;font-size:13px}
.sus-bar{position:relative;display:block;height:10px;border-radius:5px;background:rgba(255,255,255,.1);overflow:hidden}.sus-fill{position:absolute;inset:0 auto 0 0;border-radius:5px;background:#6fa8d6}.sus-fill.is-hot{background:#e0574f}
.sus-bar u{position:absolute;top:-2px;bottom:-2px;width:2px;background:#f0d9a0;text-decoration:none}
.sus-meter-num{white-space:nowrap}.sus-meter-num em{font-style:normal;color:#ffb3a8;font-weight:700}
.sus-empty{display:grid;gap:2px;padding:18px;text-align:center;border:1px dashed rgba(255,255,255,.2);border-radius:8px}.sus-empty b{color:#9ccea1;font-size:18px}
@media(max-width:700px){.sus-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.sus-meter{grid-template-columns:36px minmax(0,1fr)}.sus-meter-num{grid-column:1/-1}}
.dev-tools .sus-card{padding:14px 16px 14px 18px}.dev-tools .sus-card>button{justify-self:start;width:auto;min-width:140px}

/* /gathering.css */
.gathering-page,.crafting-preview{max-width:1400px;margin:auto}.gathering-facts{display:flex;gap:12px 24px;flex-wrap:wrap;align-items:center;color:#c5c9be}.gathering-facts b{color:#efdab4}.gather-dispatch{display:flex;align-items:center;gap:24px;border:1px solid #8d7950;padding:24px;background:linear-gradient(110deg,#243330,#172327);border-radius:8px;margin:24px 0}.gather-dispatch h2,.gather-dispatch p{margin:6px 0}.gather-clock{margin-left:auto;display:grid;gap:4px;white-space:nowrap;text-align:center}.gather-clock strong{font:1.75rem/1.4 Georgia,serif;font-variant-numeric:tabular-nums;color:#edd09c}.gather-clock span{color:#becabc}.gathering-emblem{display:grid;place-items:center;flex-shrink:0;width:70px;height:70px;border:1px solid var(--gather-color);border-radius:50%;color:var(--gather-color);font:2.375rem Georgia,serif;background:radial-gradient(#304540,#122025);box-shadow:inset 0 0 0 5px #182628}.gather-squires{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:20px 0}.gather-squire{padding:24px;border:1px solid #645b46;border-radius:8px;background:linear-gradient(145deg,#233034,#111c23);min-width:0}.gather-squire>.gathering-emblem{margin-bottom:18px}.gather-squire h2{font-size:1.6875rem;margin:8px 0}.gather-squire p span{color:#aebbb6}.gather-squire progress{width:100%;height:7px;accent-color:#ceb079}.gather-squire dl{margin:22px 0}.gather-squire dl div{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;margin:10px 0}.gather-squire dt{color:#b6c3bb}.gather-squire dd{margin:0;color:#efdab4}.gather-squire button{width:100%;min-height:44px}.gather-ready{border-left:3px solid #bda36e;padding:12px 16px;background:#21302f;margin:24px 0}.gather-log,.gather-materials,.gather-coming{border:1px solid #5a604f;padding:24px;border-radius:8px;margin:24px 0;background:#142127}.gather-log header,.gather-materials header{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.gather-log h2,.gather-materials h2,.gather-coming h2{margin:0}.gather-log ol{list-style:none;padding:0;max-height:390px;overflow:auto}.gather-log li{border-top:1px solid #394b4c;padding:14px 0}.gather-log li>div{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.gather-log time{font-size:.75rem;color:#b1b8ab}.gather-log li p{margin:7px 0;color:#d6cbb5}.gather-coming{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.gather-coming>div{flex:1 1 320px}.gather-coming p{margin-bottom:0}.gather-material-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.gather-material-grid h3{display:flex;align-items:center;gap:10px}.gather-material-grid .gathering-emblem{width:32px;height:32px;font-size:20px;box-shadow:none}.gather-material-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid #34494a}.gather-material-row>span:nth-child(2){flex:1;min-width:0}.gather-tier{font-size:.6875rem;border:1px solid #7b6d4c;padding:2px 5px;color:#d2be91}.preview-banner{padding:16px;border:1px solid #8c794b;background:#302f24;border-radius:6px}.crafting-preview-layout{display:grid;grid-template-columns:minmax(230px,1fr) 2fr;gap:20px}.crafting-preview-layout>.exp-panel{min-width:0;padding:24px}.preview-choices{display:flex;flex-direction:column;gap:12px}.preview-choices button{min-height:48px;text-align:left}.preview-choices .selected{border-color:#d4b278;background:#3b392b}.preview-ingredients{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0 30px}.preview-ingredients>span{flex:1 1 110px;border:1px solid #74613d;padding:18px;color:#e8d1a3}.preview-ingredients small{display:block;font:.75rem/1.5 Arial,sans-serif;color:#adb8ae;margin-top:6px}.preview-result{padding:20px;border:1px dashed #9a865f;margin:16px 0 22px}.preview-result strong{font:1.375rem Georgia,serif;color:#e6c48c}.future-shop-seal{font:4.375rem Georgia,serif;text-align:center;color:#bdab7c}.crafting-preview .exp-panel{text-align:left}.gather-log button,.gather-coming button,.gather-materials button{min-height:44px}
.gather-squire form{display:grid;gap:12px}.gather-squire form label{display:grid;gap:8px;color:#c9d1c5}.gather-squire select{width:100%;min-height:44px;font-size:1rem;background:#101d23;border:1px solid #7a7056;color:#ecdbb8;padding:8px;border-radius:5px}.rarity-material form{display:grid;gap:12px}.rarity-material form label{display:grid;gap:6px}.rarity-material input{min-height:44px;font-size:1rem;min-width:0;width:100%}.rarity-material .gathering-emblem{width:50px;height:50px;font-size:1.75rem}.gather-squires .small-note{line-height:1.5}
@media(max-width:1000px){.gather-squires{gap:12px}.gather-squire{padding:18px}.gather-material-grid{grid-template-columns:1fr}.gather-material-grid>section{min-width:0}}
@media(max-width:650px){.gather-squires,.crafting-preview-layout{grid-template-columns:1fr}.gather-dispatch{flex-wrap:wrap;padding:18px;gap:14px}.gather-dispatch>div:not(.gather-clock){flex:1;min-width:180px}.gather-clock{margin:0;width:100%;border-top:1px solid #536450;padding-top:12px}.gather-squire{display:grid;grid-template-columns:1fr auto}.gather-squire>.gathering-emblem{grid-column:2;grid-row:1/4;margin:0}.gather-squire>*{grid-column:1/-1}.gather-squire>.eyebrow,.gather-squire>h2{grid-column:1}.gather-log,.gather-materials,.gather-coming{padding:16px}.gather-material-row{font-size:.875rem}.gathering-facts{gap:10px 16px}.preview-choices{flex-direction:row;flex-wrap:wrap}.preview-choices button{flex:1}.crafting-preview-layout>.exp-panel{padding:16px}}
.preview-order{margin-top:20px;padding:24px}.preview-order header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.preview-order-time{color:#bead88;font:1.375rem Georgia,serif}.preview-order-track{height:7px;background:#0c181d;border:1px solid #47534d;border-radius:4px;margin:18px 0}.preview-order h3{margin-bottom:8px}

.squire-idle-reminder{display:flex;align-items:center;gap:12px;margin:10px 16px;padding:8px 10px;border:1px solid #aa8c55;border-top:2px solid #d1b177;background:linear-gradient(110deg,#253127,#111c2b);color:#dfd7bc}.squire-idle-reminder>div{flex:1;min-width:0}.squire-idle-reminder strong,.squire-idle-reminder span{display:block}.squire-idle-reminder span{font-size:.75rem;margin-top:3px;color:#bcc5bd}.shell .squire-idle-reminder button{min-height:44px}.squire-idle-reminder .notice-close{position:static;width:44px;min-width:44px;height:44px;border:0;background:transparent;color:#e6d0a6;font-size:1.375rem}@media(max-width:480px){.squire-idle-reminder{margin:8px;gap:5px;flex-wrap:wrap}.squire-idle-reminder>div{flex-basis:calc(100% - 54px)}.squire-idle-reminder>.secondary{order:3;width:100%}}
.gather-squires{grid-template-columns:repeat(4,minmax(0,1fr))}.gather-material-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.gather-squire.is-focus{border-color:#d4b278;box-shadow:0 0 0 1px #d4b27855}.squire-scene.fishing{background:radial-gradient(ellipse,#7fc4d626,transparent 70%),#10202a}
@media(max-width:1200px){.gather-squires,.gather-material-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1000px){.gather-material-grid{grid-template-columns:1fr}}
@media(max-width:650px){.gather-squires{grid-template-columns:1fr}}

a[data-guide-topic="gathering"]{display:inline-flex;align-items:center;min-height:44px}
.gather-squire dl .gather-aura dd{text-align:right}.gather-squire dl .gather-aura.is-active dt{color:#e6c48c}.gather-squire dl .gather-aura .small-note{display:block;color:#aebbb6}

/* /game-navigation.css */
.nav-more,.nav-label-short{display:none}
@media(max-width:1000px){
 .mmo-shell>.topbar>nav{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr));flex-wrap:nowrap;overflow:visible!important}
 .mmo-shell>.topbar>nav>.nav-secondary{display:none!important}
 .mmo-shell>.topbar>nav>.nav-primary{width:100%;min-width:0;min-height:58px;padding:5px 2px;gap:3px;flex:none}
 .mmo-shell>.topbar>nav>.nav-primary .nav-label-short{display:block}
 .mmo-shell>.topbar>nav>.nav-primary .nav-label-full:has(+.nav-label-short){display:none}
 .mmo-shell>.topbar>nav>.nav-primary .nav-copy strong{font-size:.72rem;line-height:1.2}
 .nav-more{display:block;position:static;min-width:0}
 .nav-more>summary{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:58px;list-style:none;cursor:pointer;border:1px solid #625337;border-radius:6px;background:#18252a;color:#ddd8c9;font:600 .72rem/1.2 system-ui;padding:5px 2px}
 .nav-more>summary::-webkit-details-marker{display:none}
 .nav-more>summary .icon{width:20px;height:20px}
 .nav-more>summary:focus-visible{outline:2px solid #efcf91;outline-offset:2px}
 .nav-more[open]>summary{background:linear-gradient(180deg,#d9b873,#c9a468 45%,#8f6f3c);border-color:#e6c98f;color:#1b1509;box-shadow:inset 0 1px 0 #fff2c95c,inset 0 0 0 2px #8a682f66}
 .nav-more-panel{position:absolute;bottom:100%;left:8px;right:8px;background:#171f25;border:1px solid #aa874e;border-radius:8px 8px 0 0;padding:12px;box-shadow:0 -10px 28px #0009;max-height:calc(100dvh - var(--mobile-nav-height,80px) - var(--mobile-utility-height,70px) - 24px);overflow:auto;overscroll-behavior:contain;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .nav-more-panel>strong{grid-column:1/-1;font:600 1rem/1.4 system-ui;color:#f2dfb1;padding:4px}
 .mmo-shell>.topbar>nav .nav-more-panel>.nav-button{display:flex!important;align-items:center;justify-content:flex-start;flex-direction:row;min-width:0;min-height:48px;width:100%;padding:10px;gap:8px;text-align:left;white-space:normal}
 .nav-more-panel .nav-copy{min-width:0}
 .nav-more-panel .nav-copy strong{white-space:normal!important;overflow-wrap:normal;word-break:normal;line-height:1.4}
 .mmo-shell>.topbar>nav .nav-more-panel .nav-copy small{display:block;margin-top:3px;color:#c0bba9;font:400 .72rem/1.35 system-ui;white-space:normal}
 .nav-more-panel .icon{flex:0 0 20px}
 .nav-more-utilities{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:4px;padding-top:10px;border-top:1px solid #aa874e55}
 .nav-more-utilities>button{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;min-height:48px;margin:0;padding:8px;font:600 .875rem/1.3 system-ui}
 .nav-more-utilities svg{width:20px;height:20px;flex:none}
 .nav-more-utilities .patch-new{position:absolute;top:3px;right:4px;margin:0;font-size:.5rem;line-height:.625rem;padding:0 3px}
}
@media(max-width:380px){.nav-more-panel{grid-template-columns:minmax(0,1fr)}}
@media(min-width:1001px){.nav-more-utilities{display:none}}
.release-archive>summary{cursor:pointer;min-height:44px;padding:14px 0;color:#e1bb80;font:600 1rem/1.5 system-ui}
.release-archive>summary small{display:block;font-weight:400;color:#b6b5b2}

.shell.mmo-shell.wayfarer-shell>.topbar>nav>.nav-account{display:flex;flex-direction:column;gap:8px;width:100%;min-width:0}
.shell .nav-account .account-block{display:flex;align-items:center;justify-content:center;gap:5px;width:100%;margin:0;flex-wrap:wrap}
.sidebar-character-portrait{display:grid;place-items:center;width:44px;height:44px;overflow:hidden;flex:none;border:1px solid #b8985b;background:#14202a}
.sidebar-character-portrait .outfit-portrait{width:40px;height:40px;display:block}
.shell .nav-account .account-block>.icon-button{display:flex;align-items:center;justify-content:center;width:44px;height:44px;min-width:44px;min-height:44px;padding:6px}
.player-menu{position:relative;width:100%;border:0;margin:0;padding:0}
.player-menu>summary{display:none}
.sidebar-actions{display:flex;flex-direction:column;gap:7px;width:100%}
.shell .nav-account .sidebar-actions>.chat-access{position:static;width:100%;margin:0}
.shell .nav-account .sidebar-actions>button,.shell .nav-account .sidebar-actions>a,.shell .nav-account .sidebar-actions>.chat-access>button{display:flex;align-items:center;justify-content:flex-start;gap:8px;width:100%;min-width:0;min-height:44px;height:auto;box-sizing:border-box;margin:0;padding:10px 12px;border:1px solid #c7a4678c;border-top:2px solid #d7b475;border-radius:3px;color:#e8ce92;background:linear-gradient(110deg,#b1873338,#172a47);box-shadow:inset 0 1px #ffe6a12b;font:600 .75rem/1.3 system-ui;text-decoration:none}
.sidebar-actions .icon,.sidebar-actions svg,.sidebar-actions .change-log-symbol{width:22px;height:22px;flex:0 0 22px;text-align:center;font-size:1.375rem;line-height:1.375rem}
.sidebar-actions .chat-unread{margin-left:auto}
.sidebar-actions>button{position:relative}
.sidebar-actions .patch-new{position:absolute;right:4px;top:2px;font-size:.5rem;line-height:.625rem;padding:0 3px;margin:0}
.sidebar-actions>button>span:not(.patch-new):not(.change-log-symbol){white-space:nowrap}
.shell .nav-account .sidebar-actions button:focus-visible,.shell .nav-account .sidebar-actions a:focus-visible{outline:2px solid #efcf91;outline-offset:2px}
@media(max-width:1000px){
 .shell.mmo-shell.wayfarer-shell>.topbar>nav>.nav-account{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;align-items:center}
 .shell .nav-account .account-block{justify-content:flex-start;width:auto;gap:4px;flex-wrap:nowrap}
 /* Phone menu merge (option A): Chat and Bag are one-tap icons; Settings and Patch notes live at the foot of More; Discord stays in the top strip. */
 .player-menu{width:auto;grid-column:2;grid-row:1;position:static}
 .player-menu>.sidebar-actions{flex-direction:row;align-items:center;gap:6px;width:auto}
 .shell .nav-account .sidebar-actions>:is([data-action="patch-notes"],[data-action="settings"],.nav-discord){display:none}
 .shell .nav-account .sidebar-actions>.chat-access{position:relative;width:auto}
 .shell .nav-account .sidebar-actions>button,.shell .nav-account .sidebar-actions>.chat-access>button{width:44px;height:44px;min-height:44px;padding:0;gap:0;justify-content:center;font-size:0}
 .sidebar-actions .nav-inventory>span:not(.bag-upgrade-dot){display:none}
 .sidebar-actions .chat-access .chat-unread{position:absolute;top:-7px;right:-7px;margin:0;min-width:18px;height:18px;padding:0 4px;border-radius:9px;box-sizing:border-box;font:700 .6875rem/1.125rem system-ui;text-align:center}
 .shell .nav-account>.nav-battle:not([hidden]){grid-column:1/-1;grid-row:2}
}

@media(max-width:1000px){.mmo-shell>.topbar>nav .nav-more-panel .nav-copy strong{font-size:min(.875rem,16px)!important;line-height:1.4!important}.nav-more:not([open])>.nav-more-panel{display:none}}

@media(min-width:761px) and (max-width:1000px){
 .mmo-shell>.topbar{height:auto;min-height:0}
 .mmo-shell>.topbar>nav>.nav-account{grid-column:1/-1;justify-content:flex-end}
 .mmo-shell>.topbar>nav .nav-more-panel{position:fixed;top:12px;bottom:12px;left:12px;right:12px;max-height:calc(100dvh - 24px);z-index:120;align-content:start}
}

@media(min-width:1001px){
 .mmo-shell>.topbar>nav>.nav-discovery{display:block;width:100%}
 .nav-discovery>summary{cursor:pointer;min-height:44px;padding:12px;color:#e8ce92;border:1px solid #786747;border-radius:4px}
 .nav-discovery .nav-more-panel{padding:8px 0;display:grid;gap:6px}
 .nav-discovery:not([open])>.nav-more-panel{display:none}
 .nav-discovery .nav-more-panel>strong{font:600 .8rem/1.4 system-ui;color:#e8ce92}
 .mmo-shell>.topbar>nav .nav-discovery .nav-more-panel>.nav-button{width:100%;min-height:48px;padding:9px;white-space:normal;text-align:left}
 .mmo-shell>.topbar>nav .nav-discovery .nav-copy small{display:block;font:400 .72rem/1.35 system-ui;color:#c0bba9;margin-top:3px}
}

/* Keep the current discovery destination in its direct desktop position. */
@media(min-width:1001px){.mmo-shell>.topbar>nav .nav-discovery .nav-more-panel>.nav-current-duplicate{display:none!important}}
@media(max-width:1000px){.nav-more-current>summary{border-color:#efcf91;box-shadow:inset 0 -3px #efcf91}}

/* 1001-1179px shows the same left sidebar as wide screens. The tablet top-bar rules (wrapping nav, a 100%-wide
   account block) pushed the account buttons into a hidden second column at the panel's right edge. Keep everything in one column. */
@media(min-width:1001px) and (max-width:1179px){
 .shell.mmo-shell.wayfarer-shell>.topbar>nav{display:flex!important;flex-direction:column;flex-wrap:nowrap;align-items:stretch;overflow-x:hidden;overflow-y:auto}
 .shell.mmo-shell.wayfarer-shell>.topbar>nav>.nav-account{display:flex;flex-direction:column;flex:0 0 auto;flex-wrap:nowrap;gap:8px;width:100%;min-width:0;margin:auto 0 0;padding:16px 0 0;border-top:1px solid #595047;grid-column:auto;justify-content:normal;align-items:stretch;box-sizing:border-box}
 .shell .nav-account .account-block{display:flex;flex-wrap:wrap;justify-content:center;gap:5px;width:100%}
 .shell .nav-account .player-menu{display:block;position:relative;width:100%;grid-column:auto}
 .shell .nav-account .player-menu>summary{display:none}
 .shell .nav-account .player-menu>.sidebar-actions{display:flex!important;flex-direction:column;position:static;width:100%;padding:0;border:0;background:none;box-shadow:none;max-height:none;overflow:visible}
}

/* New-player QA (7 Oct): new wearable gear in the bag. */
[data-open-inventory],[data-player-menu]>summary,[data-page="pack"]{position:relative}
.bag-upgrade-dot{position:absolute;top:3px;right:3px;width:10px;height:10px;border-radius:50%;background:#5fd36b;box-shadow:0 0 0 2px rgba(20,14,8,.9),0 0 6px rgba(95,211,107,.8);pointer-events:none}

/* New-player QA (7 Oct): the notices above the game show one at a time, in page order (Alpha, squires, recovery, unspent points).
   Closing or acting on one shows the next. The world boss banner is timed, so it always shows. Phones with the notice strip move these into chips first. */
.shell:has(>.alpha-notice)>#squireIdleReminder,
.shell:has(>.alpha-notice)>.recovery-help,.shell:has(>#squireIdleReminder .squire-idle-reminder)>.recovery-help,
.shell:has(>.alpha-notice)>.path-refund-notice,.shell:has(>#squireIdleReminder .squire-idle-reminder)>.path-refund-notice,.shell:has(>.recovery-help)>.path-refund-notice{display:none}
/* New-player QA (7 Oct): a zone whose minimum level is above yours shows its level range in warning colour (entry is not blocked). */
.zone-level-under{color:#ff9a5c!important;font-weight:700}
/* Phone QA 2026-10-07: the "added to Party bag" and other adventure notices sat over the open More menu and hid its last row; hide them while a navigation menu is open (they come back when it closes). */
@media(max-width:1000px){body:has(.nav-more[open]) .adventure-notices{visibility:hidden}}
/* Reveal by milestone (GAPS D2, 9 Oct): a destination that just opened shows a small New until it is opened once; on phones the More button carries a dot while one waits inside. */
.nav-new{display:inline-block;margin-left:.45rem;padding:0 4px;border-radius:3px;background:#f4d78f;color:#1b1509;font:700 .62rem/1.1rem system-ui;letter-spacing:.04em;vertical-align:middle}
.nav-more>summary{position:relative}
.nav-more-new{position:absolute;top:5px;right:8px;width:9px;height:9px;border-radius:50%;background:#f4d78f;box-shadow:0 0 0 2px rgba(20,14,8,.9);pointer-events:none}
/* Simpler screens #10 (IRP_UI_PLAIN_VERSION): small group headings in the desktop sidebar and in the phone More sheet. The phone bottom bar shows none.
   A heading takes about 16px (its negative bottom margin cancels most of the nav gap); on short mouse windows grouped buttons give back 3px each so the list still fits above the pinned account block. */
.nav-group-heading{margin:2px 8px -4px;padding:0;color:#c9a96b;font:700 .625rem/12px system-ui;letter-spacing:.12em;text-transform:uppercase;pointer-events:none}
.mmo-shell>.topbar>nav>.nav-group-heading{flex:none;width:auto}
@media(min-width:1180px) and (max-height:1120px) and (pointer:fine){.shell.mmo-shell.wayfarer-shell>.topbar>nav>.nav-button.nav-grouped{min-height:33px}}
/* The selected sidebar item's highlight started right under its group heading, so "TOWN" sat on the gold box while ADVENTURE, SOCIAL and HELP had
   clear space (13 Oct pass). The highlight (and its gold edge) now starts 5px lower; the button and its click area are unchanged. */
@media(min-width:1001px){.shell.mmo-shell.wayfarer-shell>.topbar>nav>.nav-button.nav-grouped.active{box-shadow:none;background:linear-gradient(#e5c483,#e5c483) 0 100%/2px calc(100% - 5px) no-repeat,linear-gradient(90deg,#b69a503d,#18283a96) 0 100%/100% calc(100% - 5px) no-repeat}}
@media(max-width:1000px){.mmo-shell>.topbar>nav>.nav-group-heading{display:none!important}.nav-more-panel>.nav-group-heading{grid-column:1/-1;margin:2px 4px -4px}}
/* QA 2026-10-12 (PR285_QA.md #3): the grouped More sheet must fit between the account bar and the bottom bar at 390x844. Grouped buttons keep their 48px
   touch height with 6px instead of 10px vertical padding, and a New mark sits in the button's corner (as Patch notes' NEW does) instead of taking a line. */
@media(max-width:1000px){
 .mmo-shell>.topbar>nav .nav-more-panel>.nav-button.nav-grouped{position:relative;padding-top:6px;padding-bottom:6px}
 /* QA 2026-10-16: the Quests count (26) wrapped to "2" over "6" in this 17px pill inside the More sheet. */
 .nav-more-panel>.nav-button.nav-grouped .quest-ready-badge{flex:none;white-space:nowrap}
 .mmo-shell>.topbar>nav .nav-more-panel>.nav-button.nav-grouped :is(.nav-new,.boss-hunt-new){position:absolute;top:3px;right:4px;margin:0;padding:0 3px;border-radius:3px;background:#f4d78f;color:#1b1509;font:700 .5rem/.625rem system-ui;letter-spacing:.04em}
}
/* The desktop sidebar the same way, so a grouped list with every New mark still ends above the pinned account block at 1440x900. */
@media(min-width:1001px){
 .shell.mmo-shell>.topbar>nav>.nav-button.nav-grouped{position:relative}
 .shell.mmo-shell>.topbar>nav>.nav-button.nav-grouped>.nav-copy>:is(.nav-new,.boss-hunt-new){position:absolute;top:2px;right:4px;margin:0;padding:0 3px;border-radius:3px;background:#f4d78f;color:#1b1509;font:700 .5rem/.625rem system-ui;letter-spacing:.04em}
}
/* With the headings, a 901-1000px tall mouse window (1920x950) puts Patch notes, Settings and Discord on one icon row, as the desktop-fit change already does at 900px and below. */
@media(min-width:1180px) and (min-height:901px) and (max-height:1000px) and (pointer:fine){
 .shell.mmo-shell .nav-grouped-account .sidebar-actions{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))}
 .shell.mmo-shell .nav-grouped-account .sidebar-actions>:is(.chat-access,.nav-inventory){grid-column:1/-1}
 .shell.mmo-shell .nav-grouped-account .sidebar-actions>:is([data-action="patch-notes"],[data-action="settings"],.nav-discord){justify-content:center;padding-left:0;padding-right:0;font-size:0;gap:0}
 .shell.mmo-shell .nav-grouped-account .sidebar-actions>:is([data-action="patch-notes"],[data-action="settings"],.nav-discord)>span:not(.change-log-symbol):not(.patch-new){display:none}
}

/* /skill-cast-hud.css */
/* Evermarch spell frames: the border casts; the artwork recovers. */
.raid-party-card>.path-portrait-skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(44px,1fr));gap:6px;width:100%;max-width:248px;margin:6px 0 0;flex:none;min-width:0}
.mmo-shell .raid-party-card .path-portrait-skill{isolation:isolate;overflow:visible;border:0;border-radius:0;background:transparent;box-shadow:none;min-width:44px;min-height:44px;aspect-ratio:1;padding:5px!important}
.path-portrait-skill .path-art{width:100%;height:100%;border-radius:0;clip-path:polygon(12% 0,88% 0,100% 12%,100% 88%,88% 100%,12% 100%,0 88%,0 12%);overflow:hidden;filter:saturate(.9)}
.path-portrait-skill>i{inset:5px;height:auto!important;background:linear-gradient(#050912cb,#081321a6);clip-path:polygon(12% 0,88% 0,100% 12%,100% 88%,88% 100%,12% 100%,0 88%,0 12%);transform:scaleY(0);transform-origin:top;z-index:1;border-bottom:1px solid #d3b47966}
.path-portrait-skill>small{z-index:3;font:700 .8125rem/1 system-ui;color:#fff3d8;text-shadow:0 1px 3px #000,0 0 5px #000;pointer-events:none}
.skill-cast-frame{position:absolute;inset:0;width:100%;height:100%;fill:none;pointer-events:none;z-index:2;overflow:visible}
.skill-frame-track{stroke:#89754e;stroke-width:1.4}
.skill-frame-inner{stroke:#dbbb7466;stroke-width:.65}
.skill-cast-trace{stroke:#ffdb8d;stroke-width:3;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;opacity:0;filter:drop-shadow(0 0 2px #e9ad43)}
.path-portrait-skill[data-skill-state=casting] .skill-cast-trace{opacity:1}
.path-portrait-skill[data-skill-state=casting]{box-shadow:0 0 13px #e2b05930}
.path-portrait-skill[data-skill-state=casting] .path-art{filter:saturate(1.1) brightness(1.12)}
.path-portrait-skill[data-skill-state=waiting] .path-art{filter:saturate(.35) brightness(.7)}
.path-portrait-skill[data-skill-state=defeated] .path-art{filter:grayscale(1) brightness(.45)}
.path-portrait-skill[data-ready-flash=true] .skill-frame-track{animation:skill-ready-glint .65s ease-out}
.path-portrait-skill:hover .skill-frame-track,.path-portrait-skill:focus-visible .skill-frame-track,.path-portrait-skill[aria-expanded=true] .skill-frame-track{stroke:#ffe2a2;stroke-width:2}
.path-portrait-skill:focus-visible{outline:2px solid #ffe2a2;outline-offset:2px}
.raid-party-card .portrait-cast[hidden]{display:none!important}
.raid-party-card .raid-afflictions:empty{display:none}
.mmo-shell .compact-party-card{padding:7px}
.mmo-shell .raid-party-card .raid-frame-title{margin-bottom:3px;gap:6px}
.mmo-shell .raid-party-card .party-status-portrait{position:relative;display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;min-height:44px;padding:0;border:0;background:transparent;box-shadow:none}
.party-status-portrait>.outfit-portrait,.party-status-portrait>img,.party-status-portrait>svg{width:36px;height:40px;object-fit:cover}
.party-status-portrait:after{content:attr(data-effect-count);position:absolute;right:0;bottom:0;min-width:14px;border:1px solid #83ac96;background:#17372b;color:#e1f1db;font:700 .5625rem/.875rem system-ui;border-radius:50%}
.party-status-portrait:not([data-effect-count]):after{display:none}
.party-status-portrait[data-harmful=true]:after{background:#582b32;border-color:#dc9582;color:#ffe5d2}
.party-status-portrait:focus-visible{outline:2px solid #e4c38a;outline-offset:1px}
.path-portrait-detail{border-top:2px solid #bb995e;background:linear-gradient(130deg,#202838,#0b1521);box-shadow:inset 0 1px #f7dca336;padding:12px}
@keyframes skill-ready-glint{0%{stroke:#fff3c4;stroke-width:3;filter:drop-shadow(0 0 5px #e8bb67)}100%{stroke:#89754e;stroke-width:1.4;filter:none}}
@media(prefers-reduced-motion:reduce){.path-portrait-skill[data-ready-flash=true] .skill-frame-track{animation:none}.skill-cast-trace{filter:none}}
@media(max-width:540px){.raid-party-card>.path-portrait-skills{max-width:240px;gap:7px}.path-portrait-skill>small{font-size:.75rem}}

/* Four fixed slots retain their size even before the first skill is learned. */
.mmo-shell .path-portrait-skills,
.mmo-shell .compact-party-card .raid-frame-skills .path-portrait-skills{display:grid;grid-template-columns:repeat(4,44px);gap:4px;justify-content:start;width:188px;max-width:none;flex:none}
.mmo-shell .path-portrait-skills>.path-portrait-skill,
.mmo-shell .path-portrait-skills>.path-portrait-empty{box-sizing:border-box;width:44px;height:44px;min-width:44px;min-height:44px;margin:0}
.path-portrait-empty{display:grid;place-items:center;border:1px solid #71634766;background:#0b141b88;color:#7e7e6d;font-size:1.25rem;clip-path:polygon(12% 0,88% 0,100% 12%,100% 88%,88% 100%,12% 100%,0 88%,0 12%)}
.shell.mmo-shell .combat-grid:not(.raid-group) #partyCards{grid-template-columns:repeat(auto-fit,minmax(12.75rem,1fr))}
.mmo-shell .raid-group #partyCards{grid-template-columns:repeat(auto-fit,minmax(204px,1fr))}
@media(max-width:1050px){.mmo-shell .raid-group #partyCards{grid-template-columns:repeat(auto-fit,minmax(204px,1fr));min-width:0}}

.combat-effect-row{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}.combat-effect-row[hidden]{display:none}.combat-effect-icon{position:relative;flex:0 0 36px;width:36px;height:40px;min-height:40px;padding:3px 3px 12px;border:1px solid #bea16a;background:#152824;color:#eed6a1;border-radius:4px}.combat-effect-icon.debuff{border-style:double;border-width:3px;background:#341f27}.combat-effect-icon svg,.combat-effect-icon .path-icon{width:24px;height:24px;display:block}.combat-effect-icon svg path{fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.effect-polarity{position:absolute;right:1px;top:-3px;font:bold .8125rem system-ui}.effect-duration{position:absolute;bottom:0;left:0;right:0;font:.625rem system-ui;text-align:center;white-space:nowrap;overflow:hidden}.effect-fire{color:#ffb16e}.effect-poison{color:#bfe483}.effect-bleed{color:#ffafb2}.effect-slow{color:#a7e2ff}.effect-stun{color:#ffe39a}.effect-wound{color:#f0b2ef}.combat-effect-icon:focus-visible{outline:2px solid #fff0c0;outline-offset:2px}@media(pointer:coarse),(max-width:480px){.combat-effect-icon{flex-basis:44px;width:44px;height:44px;min-height:44px;padding:4px 6px 12px}}

/* Active equipped/imprinted Unique powers; independent of cooldown state. */
.skill-unique-badge{position:absolute;left:2px;bottom:2px;z-index:5;min-width:14px;padding:1px 2px;background:#211b12;color:#ffe0a0;border:1px solid #c9a254;border-radius:3px;font:bold .625rem/.75rem system-ui;pointer-events:none}.skill-unique-badge[hidden]{display:none}.path-loadout-slots button{position:relative}.skill-unique-details{border-left:2px solid #c9a254;padding:8px 10px;background:#b68d3820;margin:10px 0}.skill-unique-details>strong,.skill-unique-details b{color:#edce91}.skill-unique-details p{font-size:.8125rem;line-height:1.5;margin:8px 0;overflow-wrap:anywhere}

/* Tier III (IRP_SKILL_TIER3_VERSION=1): a fifth ability (the Ultimate) on the party frames. Only a bar of five matches. */
.mmo-shell .path-portrait-skills:has(>:nth-child(5)),.mmo-shell .compact-party-card .raid-frame-skills .path-portrait-skills:has(>:nth-child(5)){grid-template-columns:repeat(auto-fill,44px);width:auto;max-width:236px}

/* /ui-character.css */
/* Character screen (Gear tab) on the UI kit (switch IRP_UI_CHARACTER_VERSION, default off; public/ui-character.js). Page-local layout only: colours, frames and shadows come from ui-kit.css tokens and classes. */
/* The kit scopes heading type and the focus ring to .uk-page; the game screen scopes them here instead. */
.uc-screen :where(h1,h2,h3){margin:0;font-family:var(--uk-serif);font-weight:500;letter-spacing:.02em;color:var(--uk-gold-text);text-wrap:balance}
.uc-screen :focus-visible{outline:3px solid var(--uk-focus);outline-offset:2px}
/* .uk-stack / .uk-stat set display and beat the hidden attribute (kit request 10). */
.uc-screen [hidden]{display:none!important}
/* The Rows group heading is an h3 here: keep the kit's small caps size, not the heading size. */
.uc-screen h3.uk-rows-group{font:700 .72rem/1.3 var(--uk-sans);letter-spacing:.12em;color:var(--uk-ivory-dim)}
/* A painted item model or rune or charm art fills the slot (the game's own markup keeps its own look). */
.uc-screen .uk-slot>.uc-icon{display:grid;place-items:center}
.uc-screen .uk-slot .gear-icon{width:100%;height:100%;max-height:none;border:0;border-radius:0;box-shadow:none}
/* The slot buttons are the kit's: neutralise the older button rules that apply to every button in the game. */
.uc-screen .uk-slot{font:inherit}
.uc-screen .uk-slot.uc-blocked{cursor:default}
/* Spending attribute points: one row per attribute, three 44 px buttons that wrap under the name on a phone. */
.uc-left{margin:0 0 6px;color:var(--uk-ivory-dim)}
.uc-left b{font:600 1.05rem var(--uk-serif);color:var(--uk-gold-text)}
.uc-alloc{display:grid;gap:6px;margin:0 0 10px;padding:0;list-style:none}
.uc-alloc-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 10px}
.uc-alloc-name{min-width:0}
.uc-alloc-name b{font:600 1.05rem var(--uk-serif);color:var(--uk-gold-text)}
.uc-alloc-btns{display:flex;gap:6px}
.uc-alloc-btns .uk-btn{min-width:var(--uk-tap);padding-inline:10px}
.uc-screen .uc-actions{margin-top:16px}
/* Below the two panels. */
.uc-more{display:grid;gap:var(--uk-gap);min-width:0}
.uc-all-stats>:not(summary){margin-top:var(--uk-gap)}
/* Spending panel: two columns of rows on a wide screen. */
@media(min-width:900px){.uc-alloc{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 28px}}
/* The game's painted item models carry a tier badge: keep it above the kit's 11.5 px text floor. */
.uc-screen .uk-slot .item-tier-badge{font-size:.72rem}
/* Attribute values can carry two decimals ("48.48"): keep each on one line inside its tile on a phone. */
.uc-screen .uk-attrs dd{white-space:nowrap}
@media(max-width:480px){.uc-screen .uk-attrs dd{font-size:.92rem}.uc-screen .uk-attrs>div{padding-inline:1px}}
/* The app's unspent-points badge on the Abilities tab: same 11.5 px floor. */
.uc-screen .attention-badge{font-size:.72rem}
/* The game's older heading rule (.exp-page h2) adds margins: the kit screen sets them itself. */
.exp-page .uc-screen :is(h1,h2,h3){margin:0}
/* Kit request 21: the slot label is 11.2 px in the kit; keep it at the 11.5 px floor here. */
.uc-screen .uk-slot-label{font-size:.72rem}

/* /paladin-defeat.css */
.paladin-defeat-fallback{position:absolute;left:0;top:0;pointer-events:none}
.paladin-defeat-fallback[hidden]{display:none!important}
.paladin-resting-body{position:absolute;overflow:hidden;max-width:none;filter:drop-shadow(0 3px 3px #0006)}
.unit.paladin-fallen .respawn-clock{top:8px;left:0;transform:translateX(-50%);width:max-content;max-width:110px;padding:2px 5px;background:#0a1117b8;border:0;border-radius:3px;color:#ff7777;font:700 .75rem/1.2 Arial,sans-serif;text-shadow:0 1px 2px #000;pointer-events:none}

/* /class-tree.css */
.paths-page:has(.class-tree){max-width:1840px;width:100%}.paths-workspace.unified-tree-workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;align-items:start}.class-tree{min-width:0;color:#e7dcc7;--branch-tone:#caa569;border:1px solid #76614070;background:#0b1018;box-shadow:0 15px 55px #0005;position:relative}.class-tree:before,.class-tree:after{content:"✦";color:#b6985d;position:absolute;top:-10px;font-size:1.0625rem;z-index:2}.class-tree:before{left:-7px}.class-tree:after{right:-7px}.tree-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 18px;background:linear-gradient(90deg,#1b1c20,#111923);border-bottom:1px solid #8b74404f}.tree-toolbar nav,.tree-zoom{display:flex;gap:5px;align-items:center}.tree-toolbar button{background:transparent!important;border:1px solid transparent!important;border-radius:2px!important;color:#b5b7bd!important;font-size:.75rem!important;padding:8px 12px!important;min-height:44px;white-space:nowrap}.tree-toolbar button[aria-pressed=true]{color:#eadab7!important;border-color:#b7965770!important;background:#9a74351c!important}.tree-toolbar button[data-tree-focus]:not([data-tree-focus=all]){color:var(--branch-tone)!important}.tree-toolbar button:hover{border-color:#bea169!important}.tree-zoom button{font-size:1.0625rem!important;min-width:44px;padding:6px!important}.tree-zoom button[data-tree-zoom=fit]{font-size:.6875rem!important}.tree-legend{display:flex;gap:17px;align-items:center;flex-wrap:wrap;padding:10px 18px;font-size:.625rem;letter-spacing:.04em;color:#929bac;border-bottom:1px solid #202939}.tree-legend span{display:flex;gap:6px;align-items:center}.tree-legend i{width:6px;height:6px;border:1px solid #586171;border-radius:50%}.tree-legend i.learned{background:#d6b274;border-color:#d6b274;box-shadow:0 0 6px #d6b274}.tree-legend i.available{border-color:#d6b274}.class-tree-viewport{height:min(79vh,1080px);min-height:490px;overflow:auto;overscroll-behavior:contain;scrollbar-color:#725d3c #0e1420;position:relative;background:radial-gradient(ellipse at 18% 36%,#8b321b21,transparent 35%),radial-gradient(ellipse at 51% 41%,#264f7227,transparent 35%),radial-gradient(ellipse at 84% 45%,#4d2d7726,transparent 35%),#0b1018}.class-tree-viewport:focus-visible{outline:2px solid #dab878;outline-offset:-3px}.class-tree-stage{position:relative;margin:0 auto}.class-tree-canvas{position:absolute;left:0;top:0;width:1380px;height:1130px;transform-origin:0 0;background-image:radial-gradient(#a7bcd922 .6px,transparent .6px);background-size:26px 26px}.class-tree-root{position:absolute;left:50%;top:24px;transform:translateX(-50%);width:180px;height:112px;text-align:center;z-index:1}.tree-crest{width:58px;height:58px;margin:0 auto 7px;display:grid;place-items:center;border:1px solid #c9a565;transform:rotate(45deg);background:linear-gradient(135deg,#323239,#101721);box-shadow:0 0 0 5px #151c24,0 0 0 6px #6d5d3e,0 0 40px #d4a15520}.tree-crest:before{content:"";position:absolute;inset:5px;border:1px solid #ad8e5459}.tree-crest span{transform:rotate(-45deg);font:2.125rem Georgia,serif;color:#edcf92;text-shadow:0 2px #000}.class-tree-root h2{font:1.3125rem Georgia,serif;margin:14px 0 3px;color:#e9d4a8;letter-spacing:.18em;text-transform:uppercase}.class-tree-root small{font-size:.5625rem;letter-spacing:.17em;color:#8f9aa8}.tree-root-lines{position:absolute;inset:0;width:1380px;height:1040px;pointer-events:none}.tree-root-lines path{fill:none;stroke:#9c80516b;stroke-width:1.5}.class-tree-path{position:absolute;top:0;width:460px;height:1030px}.class-tree-path[hidden]{display:none}.class-tree-path-root{position:absolute;top:162px;left:50%;transform:translateX(-50%);width:185px;text-align:center}.class-tree-path-root small{font-size:.5625rem;letter-spacing:.2em;text-transform:uppercase;color:#8a95a4}.class-tree-path-root h3{margin:5px 0 0;font:1.5rem Georgia,serif;letter-spacing:.05em;color:var(--branch-tone);text-shadow:0 0 24px var(--branch-tone)}.class-tree-path-root:after{content:"";display:block;height:1px;width:110px;margin:12px auto 0;background:linear-gradient(90deg,transparent,var(--branch-tone),transparent)}.tree-branch-lines{position:absolute;width:460px;height:1040px;inset:0;pointer-events:none}.tree-link{fill:none;stroke:var(--branch-tone);stroke-opacity:.3;stroke-width:2}.tree-link.learned{stroke-opacity:.8;filter:drop-shadow(0 0 3px var(--branch-tone))}.class-tree-skill{position:absolute;z-index:2;width:166px;height:130px;transform:translate(-50%,-32px);text-align:center}.class-tree-node{position:absolute;top:0;left:50%;transform:translateX(-50%);width:64px;height:64px;min-height:0!important;border-radius:50%!important;border:2px solid #59616b!important;background:#0b121b!important;padding:5px!important;box-shadow:0 3px 9px #000b,0 0 0 4px #0d1420;overflow:visible!important;color:#b9bbbc!important;transition:box-shadow .15s,border-color .15s}.class-tree-node-icon{display:block;width:50px;height:50px;overflow:hidden;border-radius:50%;background:#141b23}.class-tree-node-icon svg,.class-tree-node-icon img{width:100%;height:100%;display:block;object-fit:cover}.class-tree-skill.locked .class-tree-node-icon{filter:saturate(.45) brightness(.62)}.class-tree-skill.available .class-tree-node{border-color:var(--branch-tone)!important}.class-tree-skill.learned .class-tree-node{border-color:#cbaa67!important;box-shadow:0 0 0 4px #171b20,0 0 0 5px #9e7c405f,0 0 22px #ae803a30}.class-tree-node.selected{border-color:#ffe0a0!important;box-shadow:0 0 0 4px #151b24,0 0 0 5px #e0b766,0 0 29px #d6b27466!important}.class-tree-node.selected:before{content:"";position:absolute;inset:-12px;border:1px solid #b28e4b70;border-radius:50%;border-left-color:transparent;border-right-color:transparent}.class-tree-node:hover{border-color:#f6d798!important;box-shadow:0 0 24px #d6b27455}.class-tree-rank{position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);border:1px solid #8c754e;background:#151b23;border-radius:3px;min-width:34px;padding:1px 4px;line-height:.875rem;font:.625rem Georgia,serif;color:#e9d9b8;white-space:nowrap}.class-tree-slot{position:absolute;right:-6px;top:-3px;display:grid;place-items:center;width:17px;height:17px;background:#bd9857;border:1px solid #e2c184;border-radius:50%;color:#121821;font-weight:700;font-size:.625rem}.class-tree-level{position:absolute;top:-18px;left:0;width:100%;font-size:.5625rem;letter-spacing:.1em;color:#98a2b2}.class-tree-skill-name{position:absolute;top:76px;left:-12px;width:190px;font:.875rem Georgia,serif;line-height:1.125rem;color:#cccece;text-shadow:0 1px 4px #000,0 0 5px #000;background:radial-gradient(ellipse,#0b1018dd,transparent 76%);pointer-events:none}.class-tree-skill.learned .class-tree-skill-name{color:#ebd5a8}.class-tree-upgrades{position:absolute;top:107px;left:50%;transform:translateX(-50%);display:flex;gap:21px;width:max-content}.class-tree-upgrades:before{content:"";position:absolute;top:-9px;left:13px;right:13px;height:18px;border-top:1px solid #8b76544d;border-left:1px solid #8b76544d;border-right:1px solid #8b76544d}.class-tree-upgrade{position:relative;width:26px;height:26px;min-height:0!important;display:grid;place-items:center;padding:0!important;border-radius:2px!important;border:1px solid #68707b!important;background:linear-gradient(135deg,#263140,#10151f)!important;transform:rotate(45deg);box-shadow:0 2px 5px #0008;color:#9ba6b8!important}.class-tree-upgrade span{transform:rotate(-45deg);font:.625rem Georgia,serif;line-height:1}.class-tree-upgrade.chosen{color:#ffe4a5!important;border-color:#deb66a!important;background:linear-gradient(135deg,#87683b,#3f311f)!important;box-shadow:0 0 12px #d9a85a55}.class-tree-upgrade:hover{border-color:#f3d491!important;color:#f3d491!important}.class-tree-subbranch{display:contents}.class-tree .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}.tree-foundation-rule{position:absolute;top:970px;left:12%;width:76%;height:1px;background:linear-gradient(90deg,transparent,#8d755850,transparent);text-align:center;z-index:1}.tree-foundation-rule span{position:relative;top:-6px;padding:0 20px;font-size:.5625rem;letter-spacing:.19em;color:#9c8c71;background:#0b1018}.class-tree-foundations{position:absolute;inset:0;pointer-events:none}.class-tree-foundations .class-tree-skill{pointer-events:auto;--branch-tone:#c3b18b}.class-tree-foundations .class-tree-node{width:48px;height:48px;top:8px;border-radius:8px!important}.class-tree-foundations .class-tree-node-icon{width:34px;height:34px;border-radius:3px}.class-tree-foundations .class-tree-skill-name{font-size:.75rem;top:66px}.class-tree-foundations .class-tree-level{display:none}.class-tree[data-focus=single] .tree-root-lines{display:none}.class-tree[data-focus=single] .class-tree-foundations{display:none}.class-tree[data-focus=single] .tree-foundation-rule{display:none}.tree-map-hint{padding:9px 15px;margin:0!important;background:#101722;color:#9aa5b4;font-size:.6875rem!important;border-top:1px solid #8b744032;line-height:1.5}.class-tree button:focus-visible{outline:3px solid #ecd29b;outline-offset:6px}.tree-build-management{margin:0 0 18px;border:1px solid #7163484d;background:#111823}.tree-build-management>summary{padding:12px 18px;color:#cbbb9b;font-size:.8125rem;cursor:pointer}.tree-build-management[open]{padding-bottom:14px}.tree-build-management .path-loadout,.tree-build-management .skill-specs{margin:12px}.class-tree-detail{position:sticky;top:16px;max-height:calc(100dvh - 32px);overflow-y:auto;scrollbar-gutter:stable;scrollbar-color:#766140 #0e1520}.unified-tree-workspace .path-inspector{position:static;margin:0}.skill-upgrade-details{padding:18px;border:1px solid #89704466;background:linear-gradient(145deg,#19212c,#101722);margin-bottom:14px}.skill-upgrade-details h3{font:1.375rem Georgia,serif;color:#e8d0a0;margin:14px 0}.skill-upgrade-details>p{font-size:.75rem;color:#aeb8c5;line-height:1.6}.skill-upgrade-option{padding:14px;margin:14px 0;border:1px solid #59657566;background:#0d1520}.skill-upgrade-option h4{margin:0 0 8px;font:1.0625rem Georgia,serif;color:#e1c791}.skill-upgrade-option p{font-size:.75rem;line-height:1.65}.skill-upgrade-option.previewed{border-color:#ddbb78;box-shadow:inset 3px 0 #c6a15f}.skill-upgrade-option.chosen{border-color:#98bbaa}.skill-upgrade-option button{width:100%;min-height:44px;white-space:normal;font-size:.75rem}.upgrade-tradeoff{color:#a5b2c3;font-style:italic}.skill-upgrade-option:focus{outline:2px solid #eccb80;outline-offset:2px}
@media(max-width:1600px){.paths-workspace.unified-tree-workspace{grid-template-columns:minmax(0,1fr)}.class-tree-detail{position:static;max-height:none;overflow:visible}.unified-tree-workspace .path-back{display:inline-flex}.class-tree-viewport{height:72vh}.class-tree-skill-name{font-size:.9375rem}.class-tree-upgrade{width:31px;height:31px}.class-tree-upgrades{gap:17px}.tree-toolbar{flex-wrap:wrap;gap:5px}.tree-toolbar nav{flex:1;justify-content:space-between}.tree-toolbar button{padding:8px!important}.tree-legend{gap:10px}.tree-legend span:last-child{margin-left:auto}}
@media(max-width:600px){.tree-toolbar{padding:9px}.tree-toolbar nav{width:100%;flex:none}.tree-toolbar nav button{font-size:.75rem!important;min-height:44px}.tree-zoom{width:100%;justify-content:flex-end}.tree-zoom button{min-height:44px}.tree-legend{font-size:.5625rem;padding:8px}.tree-legend span:last-child{width:100%;margin:0}.class-tree-viewport{height:70vh;min-height:450px}.tree-map-hint{font-size:.625rem!important}.class-tree-detail .path-inspector,.skill-upgrade-details{padding:16px}.class-tree-upgrade:after{content:"";position:absolute;inset:-5px}.class-tree-upgrade{width:34px;height:34px}.class-tree-upgrade span{font-size:.8125rem}.class-tree-upgrades{gap:10px;top:100px}.paths-page:has(.class-tree){padding-left:8px;padding-right:8px}}
/* Upgrade comparison lives in a native modal: background stays inert; Escape closes. */
.skill-upgrade-launch{padding:22px 18px;margin-top:16px;border:1px solid #8b704452;background:linear-gradient(135deg,#252535,#101924)}.skill-upgrade-launch small{font-size:.5625rem;letter-spacing:.13em;color:#bd9c66}.skill-upgrade-launch h3{font:1.25rem Georgia,serif;color:#ead5ac;margin:12px 0}.skill-upgrade-launch p{font-size:.75rem;line-height:1.6}.skill-upgrade-launch button{width:100%;min-height:44px}
.skill-upgrade-dialog{box-sizing:border-box;width:min(1050px,calc(100vw - 40px));max-width:none;max-height:calc(100dvh - 40px);padding:0;overflow:auto;border:1px solid #aa8755;border-radius:12px;color:#e8e0d0;background:radial-gradient(ellipse at 50% 0,#44344b80,transparent 65%),#101722;box-shadow:0 30px 100px #000c,0 0 0 5px #090e17b0;scrollbar-color:#826948 #111823}.skill-upgrade-dialog::backdrop{background:#030811c9;backdrop-filter:blur(5px)}.upgrade-dialog-close{position:absolute;right:16px;top:14px;z-index:2;width:44px;height:44px;padding:0!important;border:1px solid #7b715e80!important;background:#121924!important;color:#d2bc94!important;font-size:1.6875rem!important}.upgrade-dialog-heading{display:flex;gap:20px;align-items:center;padding:34px 40px 27px;border-bottom:1px solid #b1925c35}.upgrade-dialog-heading h2{font:2.125rem Georgia,serif;color:#f0d9ac;margin:5px 0 8px}.upgrade-dialog-heading p{margin:0;font-size:.8125rem;color:#b4bac4}.upgrade-dialog-heading .eyebrow{font-size:.5625rem;letter-spacing:.2em;color:#bd9d6a}.upgrade-parent-icon{width:68px;height:68px;display:grid;place-items:center;border:1px solid #b49b65;border-radius:50%;background:#111522;box-shadow:0 0 0 5px #b4945730}.upgrade-parent-icon img,.upgrade-parent-icon svg{width:51px!important;height:51px!important}.upgrade-point-cost{margin-left:auto;margin-right:28px;white-space:nowrap;font-size:.625rem;letter-spacing:.12em;color:#d9bc86;border:1px solid #a68b5544;padding:12px}.upgrade-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;padding:28px 30px}.upgrade-choice-grid .skill-upgrade-option{margin:0;padding:24px 22px 20px;position:relative;display:flex;flex-direction:column;border:1px solid #67718350;border-radius:7px;background:radial-gradient(ellipse at 50% 0,color-mix(in srgb,var(--upgrade-tone) 14%,transparent),transparent 65%),#0c1420;min-width:0}.upgrade-choice-grid .skill-upgrade-option.previewed{border-color:var(--upgrade-tone);box-shadow:0 0 22px color-mix(in srgb,var(--upgrade-tone) 9%,transparent)}.upgrade-choice-grid .skill-upgrade-option.chosen{border-color:#d7b77b;box-shadow:inset 0 3px #d7b77b,0 0 22px #d7b77b12}.upgrade-card-art{width:90px;height:90px;position:relative;display:grid;place-items:center;align-self:center;margin:3px 0 24px}.upgrade-card-orbit{position:absolute;inset:3px;border:1px solid var(--upgrade-tone);transform:rotate(45deg);border-radius:15px;box-shadow:0 0 22px color-mix(in srgb,var(--upgrade-tone) 20%,transparent)}.upgrade-card-art img,.upgrade-card-art svg{position:relative;width:53px!important;height:53px!important;z-index:1}.upgrade-numeral{position:absolute;bottom:-9px;background:#131c28;color:var(--upgrade-tone);font:.75rem Georgia,serif;padding:3px 10px;border:1px solid var(--upgrade-tone);z-index:2}.upgrade-use-case{text-align:center;font-size:.625rem;letter-spacing:.1em;text-transform:uppercase;color:var(--upgrade-tone);line-height:1.5;min-height:30px}.upgrade-choice-grid h3{font:1.375rem Georgia,serif;color:#f0dfbd;text-align:center;line-height:1.2;margin:8px 0 15px;min-height:52px}.upgrade-choice-grid p{font-size:.8125rem;line-height:1.75}.upgrade-effect{margin:0 0 14px;color:#d3d8de}.upgrade-choice-grid .upgrade-tradeoff{padding-top:14px;border-top:1px solid #75829935;font-size:.75rem;color:#a8b4c5;margin:0 0 20px}.upgrade-card-action{margin-top:auto}.upgrade-card-action button{min-height:46px!important;border-color:color-mix(in srgb,var(--upgrade-tone) 50%,transparent)!important;background:color-mix(in srgb,var(--upgrade-tone) 10%,#121b27)!important;color:#eadbc0!important}.upgrade-card-action button:disabled{opacity:.75}.upgrade-selected-label{display:block;text-align:center;font-size:.6875rem;color:#e8c989;margin:0 0 9px}.upgrade-dialog-footer{display:flex;align-items:center;justify-content:space-between;gap:25px;border-top:1px solid #b1925c35;padding:20px 32px;background:#0b121b70}.upgrade-dialog-footer span{max-width:580px;color:#a5afbe;font-size:.75rem;line-height:1.65}.upgrade-dialog-footer button{white-space:nowrap;min-height:44px}.skill-upgrade-dialog button:focus-visible{outline:2px solid #f4d8a0;outline-offset:4px}
@media(max-width:700px){.skill-upgrade-dialog{width:calc(100vw - 20px);max-height:calc(100dvh - 20px)}.upgrade-dialog-heading{padding:25px 20px;gap:15px}.upgrade-dialog-heading h2{font-size:1.6875rem}.upgrade-parent-icon{width:48px;height:48px;flex-shrink:0}.upgrade-parent-icon img,.upgrade-parent-icon svg{width:38px!important;height:38px!important}.upgrade-point-cost{display:none}.upgrade-choice-grid{grid-template-columns:1fr;padding:20px;gap:16px}.upgrade-choice-grid .skill-upgrade-option{padding:20px}.upgrade-card-art{width:64px;height:64px;margin-bottom:19px}.upgrade-card-art img,.upgrade-card-art svg{width:42px!important;height:42px!important}.upgrade-use-case,.upgrade-choice-grid h3{min-height:0}.upgrade-choice-grid h3{font-size:1.5rem}.upgrade-dialog-heading>div:nth-child(2){padding-right:30px}.upgrade-dialog-close{right:10px;top:10px}.upgrade-dialog-footer{position:sticky;bottom:0;padding:12px 16px;background:#101721;gap:10px}.upgrade-dialog-footer span{font-size:.625rem}.upgrade-dialog-footer button{font-size:.6875rem}}
.skill-upgrade-dialog{position:fixed;inset:0;margin:auto}
dialog.skill-upgrade-dialog{position:fixed;inset:0;margin:auto}
.skill-upgrade-dialog .upgrade-error{margin:12px 0;padding:12px 16px;border:1px solid #cc7468;border-radius:6px;background:#391d24;color:#ffe2dc;line-height:1.5;}
/* Threat and tactics (IRP_THREAT_TACTICS_VERSION=1): the three tactic menus in the tree's top bar (drawn by public/path-ui.js tacticSlots). */
.tree-tactics{display:flex;gap:6px;align-items:center;position:relative;flex:0 1 auto;min-width:0}
.tree-tactic{position:relative;min-width:0}
.tree-tactic>summary{list-style:none;display:flex;align-items:center;gap:8px;min-height:44px;padding:3px 10px 3px 4px;border:1px solid #b7965740;border-radius:2px;background:#0d151d;cursor:pointer;color:#eadab7;min-width:0}
.tree-tactic>summary::-webkit-details-marker{display:none}
.tree-tactic>summary:hover,.tree-tactic[open]>summary{border-color:#bea169;background:#9a74351c}
.tree-tactic>summary:focus-visible{outline:2px solid #e0bd73;outline-offset:2px}
.tree-tactic-icon{display:block;flex:none;width:36px;height:36px}.tree-tactic-icon svg{display:block;width:100%;height:100%}
.tree-tactic-text{display:grid;min-width:0;line-height:1.15}.tree-tactic-text small{font:600 .5625rem/1.2 system-ui;letter-spacing:.09em;text-transform:uppercase;color:#c9a96a}
.tree-tactic-text b{font:600 .75rem/1.25 system-ui;color:#f2e4c4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tree-tactic-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:40;width:320px;max-width:calc(100vw - 32px);display:grid;gap:4px;padding:6px;background:linear-gradient(180deg,#18212c,#0e1620);border:1px solid #b7965780;border-top:2px solid #c4a165;box-shadow:0 14px 30px #000a}
.tree-tactic:last-child .tree-tactic-menu{left:auto;right:0}
.tree-toolbar .tree-tactic-option{display:grid!important;grid-template-columns:40px minmax(0,1fr);gap:10px;align-items:center;text-align:left;white-space:normal!important;padding:6px 8px!important;min-height:52px;color:#eadab7!important;width:100%}
.tree-tactic-option .tree-tactic-icon{width:40px;height:40px}
.tree-tactic-option b{display:block;font:600 .8125rem/1.25 system-ui;color:#f2e4c4}.tree-tactic-option small{display:block;font:.75rem/1.35 system-ui;color:#aeb7c1;margin-top:2px}
.tree-toolbar .tree-tactic-option[aria-pressed=true]{border-color:#e0bd73!important;background:#9a743526!important;cursor:default;opacity:1}
.tree-tactic-more{margin:4px 6px 2px;font:.6875rem/1.4 system-ui;color:#9fa9b3}.tree-tactic-option small.tree-tactic-clash{color:#e0bd73}
.tree-toolbar:has(.tree-tactics){flex-wrap:wrap}.tree-toolbar:has(.tree-tactics) nav{flex:0 1 auto;justify-content:flex-start}.tree-tactics{flex:1 1 520px;justify-content:center}.tree-tactic{flex:0 1 210px}.tree-toolbar:has(.tree-tactics) .tree-zoom{width:auto;margin-left:auto}
.tree-tactic-menu .tree-tactic-more{font-size:.75rem!important}
@media(max-width:600px){.tree-tactics{flex-basis:100%}.tree-tactic{position:static;flex:1 1 0}.tree-tactic>summary{padding:3px 5px 3px 3px;gap:5px}.tree-tactic>summary .tree-tactic-icon{width:28px;height:28px}.tree-tactic-text b{white-space:normal;font-size:.6875rem;line-height:1.15}.tree-tactic-text small{font-size:.5rem}.tree-tactic-menu,.tree-tactic:last-child .tree-tactic-menu{left:0;right:0;width:auto;max-width:none}}
/* Skill page menus (IRP_SKILL_MENUS_VERSION=1; public/skill-menus.js): Abilities, Saved builds, Auto-switch and the tactic menus share one row of the tree's top bar. */
.tree-toolbar:has(.tree-menus){flex-wrap:wrap}.tree-toolbar:has(.tree-menus) nav{flex:0 1 auto;justify-content:flex-start}.tree-toolbar:has(.tree-menus) .tree-zoom{width:auto;margin-left:auto}
.tree-menus{display:flex;gap:6px;align-items:center;position:relative;flex:1 1 100%;order:3;justify-content:flex-start;min-width:0}
.tree-menus>.tree-tactic{flex:0 1 200px}
.tree-menu-panel{width:min(760px,calc(100vw - 32px));max-height:min(70vh,640px);overflow:auto;overscroll-behavior:contain;padding:10px 14px;display:block}
.tree-menus>.tree-menu{position:static}.tree-menus>.tree-menu>.tree-menu-panel{left:0;right:auto;width:min(760px,100%)}
.tree-menus>.tree-tactic:not(.tree-menu):last-child .tree-tactic-menu{left:auto;right:0}
.tree-menu-panel>section,.tree-menu-panel>details,.tree-menu-panel>.uk-card{margin:0!important;border:0!important;background:none!important;box-shadow:none!important;padding:0!important}
.tree-menu-panel .path-loadout>header>p,.tree-menu-panel .path-unused-skills>p,.tree-menu-panel .skill-specs>header>p{display:none}
.tree-menu-panel .path-loadout>header h2,.tree-menu-panel .skill-specs>header h2{font-size:1rem;margin:0 0 8px}
.tree-menu-panel .ab-summary{margin:0 0 8px}
@media(max-width:600px){.tree-menus{flex-wrap:wrap;gap:4px}.tree-menus>.tree-tactic{position:static;flex:1 1 calc(33% - 4px)}.tree-menus .tree-tactic .tree-tactic-menu{left:0;right:0;width:auto;max-height:65vh}.tree-menus>.tree-tactic>summary{padding:3px 5px 3px 3px;gap:5px}.tree-menus .tree-tactic>summary .tree-tactic-icon{width:28px;height:28px}}
@media(max-width:520px){.tree-menu-panel .path-loadout-slots{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Phones held sideways show the tree at the same 0.72 zoom as upright phones, so they get the same 44 px upgrade diamonds (I/II/III). */
@media(orientation:landscape) and (max-height:500px) and (max-width:1000px){.class-tree-upgrade:after{content:"";position:absolute;inset:-7px}.class-tree-upgrade{width:43px;height:43px}.class-tree-upgrade span{font-size:.8125rem}.class-tree-upgrades{gap:24px;top:100px}}
/* Class skill overhaul (IRP_CLASS_SKILLS_VERSION=1): three columns (Offense, Defense, Utility) by two tiers. Only drawn while the switch is on. */
.class-tree-path:has(.class-tree-columns) .class-tree-skill{width:146px}
.class-tree-columns span{position:absolute;top:252px;transform:translateX(-50%);font-size:.6875rem;letter-spacing:.14em;color:var(--branch-tone,#c3b18b);white-space:nowrap}
/* Phone upgrade dialog: the same skill icon repeats on all three cards, so keep it small and let the effect text lead. */
@media(max-width:480px){.upgrade-choice-grid{padding:14px;gap:12px}.upgrade-choice-grid .skill-upgrade-option{padding:16px}.upgrade-card-art{width:44px;height:44px;margin:0 0 16px}.upgrade-card-art img,.upgrade-card-art svg{width:30px!important;height:30px!important}.upgrade-choice-grid h3{font-size:1.25rem}.upgrade-dialog-heading{padding:18px 16px}.upgrade-dialog-footer span{font-size:.75rem}.upgrade-dialog-footer button{white-space:nowrap}}
/* Tier III (IRP_SKILL_TIER3_VERSION=1): the Ultimate row under Tier II and its lock note. Nothing here renders while the switch is off. */
.class-tree-tier3{position:absolute;left:12%;width:76%;text-align:center;z-index:1;border-top:1px solid #c9a25455;padding-top:4px}.class-tree-tier3 span{display:block;font-size:.6875rem;letter-spacing:.16em;color:#e2c27e}.class-tree-tier3 small{display:block;margin-top:2px;font-size:.75rem;color:#e4b194}.class-tree-skill.ultimate .class-tree-node-icon{outline:2px solid #c9a254;outline-offset:2px;border-radius:9px;box-shadow:0 0 14px #c9a25466}.class-tree-skill.ultimate.locked .class-tree-node-icon{outline-color:#6d6450;box-shadow:none}
/* Class skill overhaul (IRP_CLASS_SKILLS_VERSION=1): Pat's painted badges (skill-badges-v1, a 3×4 sprite) for the slot types and the upgrade styles. Only written into the page while the switch is on. */
.skill-badge{display:inline-block;flex:none;width:1.6em;height:1.6em;margin-right:.4em;vertical-align:-.5em;background:url(/assets/spell-fx/skill-badges-v1.webp) no-repeat;background-size:300% 400%}
.skill-badge[data-badge=offense]{background-position:0 0}.skill-badge[data-badge=defense]{background-position:50% 0}.skill-badge[data-badge=utility]{background-position:100% 0}
.skill-badge[data-badge=edge]{background-position:0 33.333%}.skill-badge[data-badge=guard]{background-position:50% 33.333%}.skill-badge[data-badge=party]{background-position:100% 33.333%}
.upgrade-use-case .skill-badge{width:24px;height:24px;vertical-align:middle}

/* Second fix (14 Oct): bigger slot badges. The gold number on a tree skill (its ability-bar slot) grows from 17px to 30px and sits further out on
   the node's corner, so it stays off the skill icon; the tree's zoom draws it at about 22–25px on phone and 1440px screens. The Offense, Defense and
   Utility badge beside each ability-bar slot name grows from 1.6em (about 16px) to 28px; the painted mark inside it is about 22px. */
.class-tree-slot{width:30px;height:30px;right:-15px;top:-13px;font-size:.9375rem;line-height:1;z-index:2;box-shadow:0 0 0 2px #0b121b,0 2px 4px #000b}
.path-loadout .skill-badge{width:28px;height:28px;vertical-align:middle}

/* /auction-market.css */
.market-page{max-width:1520px;padding:20px;margin:auto;color:#e0d8c6}.market-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:16px 20px;background:linear-gradient(110deg,#30281b,#171b1d);border-bottom:1px solid #8b7448}.market-heading h1{margin:3px 0;color:#efd6a3;font-size:1.8125rem}.market-heading .eyebrow{font-size:.6875rem;margin:0}.market-heading aside{display:grid;text-align:right;gap:5px}.market-heading aside strong{font-size:1.3125rem;color:#ead19a}.market-heading small,.market-heading aside span{font:.6875rem system-ui;color:#b5b4a6}.market-tabs{display:flex;gap:4px;align-items:center;padding:6px 12px;background:#121719;border-bottom:1px solid #5c5138}.market-tabs button{padding:10px 22px;color:#cfc6ad;background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;min-height:44px}.market-tabs button[aria-pressed=true]{border-color:#d4ad60;color:#ffe1a0;background:#d4ad600c}.market-tabs a{margin-left:auto;font-size:.75rem}.market-body{display:grid;grid-template-columns:10.625rem minmax(0,1fr) 14.875rem;min-height:470px;background:#12191c}.market-categories{padding:14px 8px;background:#1c211f;border-right:1px solid #66553455}.market-categories h2{font:.6875rem system-ui;text-transform:uppercase;letter-spacing:.12em;color:#9b987f;margin:3px 8px 12px}.market-categories button{display:flex;align-items:center;gap:9px;width:100%;padding:5px 8px;min-height:44px;text-align:left;border:0;border-left:2px solid transparent;background:none;color:#c7c5b6;border-radius:0;font:.75rem system-ui}.market-categories button[aria-pressed=true]{background:#bb93411c;border-left-color:#d3ae69;color:#f0d299}.market-categories .gear-icon,.market-categories .crafted-icon{width:26px;height:29px;flex:0 0 26px}.market-categories .crafted-icon b,.market-categories .item-tier-badge{display:none}.market-categories p{font:.6875rem/1.8 system-ui;color:#a09e8c;margin:18px 9px}.market-subcategories{margin:8px 0 0 12px;padding-top:7px;border-top:1px solid #78603b55}.market-subcategories button{font-size:.6875rem;min-height:44px}.market-subcategories .gear-icon{width:21px;height:24px;flex-basis:21px}.market-results{padding:16px;min-width:0}.market-filters{display:grid;grid-template-columns:minmax(6.875rem,1fr) 6.5625rem 7rem auto;gap:8px;align-items:end}.market-filters label,.market-sell-form label{font-size:.6875rem;color:#b9bdac}.market-filters input,.market-filters select,.market-sell-form input{width:100%;box-sizing:border-box;display:block;min-height:44px;margin-top:5px;padding:9px 7px;border:1px solid #5e6051;border-radius:3px;background:#0c1215;color:#e3dfcf}.market-filters button{padding:9px 12px;min-height:44px}.market-result-count{display:flex;justify-content:space-between;gap:10px;font-size:.6875rem;color:#acb9b2;padding:14px 0 8px}.market-result-count span{color:#818f89}.market-lot{margin:0;border:0;border-bottom:1px solid #5b624333;background:#1b262730;border-left:2px solid var(--rarity,#736441)}.market-lot:nth-of-type(even){background:#ada36b08}.market-lot-main{display:flex;gap:10px;align-items:center;min-height:64px;padding:8px 10px}.market-lot-main>.gear-icon,.market-lot-main>.crafted-icon,.market-lot-main>.gathering-emblem{width:36px;height:40px;flex:0 0 36px;font-size:1.3125rem}.market-item-name{flex:1;min-width:0}.market-name-button{padding:0;border:0;background:none;box-shadow:none;color:#e4c990;text-align:left;font-size:.8125rem;font-weight:600;white-space:normal;line-height:1.3}.market-name-button:hover{color:#ffdf90}.market-item-name small,.market-item-name>span{font:.625rem/1.4 system-ui;display:block;color:#a4b1ab;margin-top:3px}.market-price{text-align:right;min-width:58px;color:#edc977}.market-price strong{font-size:.875rem}.market-price small{font-size:.625rem;display:block;color:#b7b7a4;margin-top:2px}.market-lot-main>.secondary{font-size:.6875rem;padding:8px 10px;min-height:44px;white-space:nowrap}.market-lot>.small-note{font-size:.6875rem;margin:0;padding:0 10px 8px}.market-inventory{padding:14px;background:linear-gradient(#282a23,#171d1e);border-left:1px solid #73604477;align-self:start;position:sticky;top:14px;max-height:calc(100dvh - 70px);overflow:auto}.market-inventory header{display:flex;align-items:center;justify-content:space-between;gap:8px}.market-inventory h2{font-size:1.1875rem;color:#dec184;margin:0}.market-inventory header>span{font:.6875rem system-ui;color:#aaa790}.market-inventory nav{display:flex;gap:4px;margin-top:12px}.market-inventory nav button{flex:1;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:#b3b6a4;padding:8px 4px;font:.6875rem system-ui}.market-inventory nav button[aria-pressed=true]{color:#f0d69e;border-color:#c9a760}.market-inventory>.small-note{font-size:.625rem;margin:10px 0;color:#9b9d8d}.market-bag-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.market-bag-item{position:relative;min-width:0;aspect-ratio:1;padding:4px;border:1px solid #736e51;border-radius:4px;background:#0e171b;overflow:hidden}.market-bag-item>.gear-icon,.market-bag-item>.crafted-icon,.market-bag-item>.gathering-emblem{display:block;width:100%;height:100%;font-size:1.5rem}.market-bag-item.selected{outline:2px solid #f0d38b;outline-offset:1px}.market-bag-item:hover{background:#363c31}.market-bag-item.rarity-rare{border-color:#5f9cd0}.market-bag-item.rarity-epic{border-color:#c5b35d}.market-bag-item.rarity-legendary{border-color:#d77357}.market-bag-item.rarity-magic{border-color:#739757}.market-bag-item.rarity-unique{border-image:linear-gradient(120deg,#ed658c,#edc864,#72dcbf,#9294ec) 1}.market-item-lock{position:absolute;right:2px;top:2px;width:12px;height:14px;z-index:2}.market-item-lock svg{width:100%;height:100%}.market-item-equipped{position:absolute;left:2px;bottom:1px;font:bold .625rem system-ui;color:#f0d490;text-shadow:0 1px #000}.market-item-quantity{position:absolute;right:3px;bottom:1px;font:bold .6875rem system-ui;color:#fff;text-shadow:0 1px 2px #000}.market-sell-selection{max-width:650px;margin:12px auto}.market-selected-heading,.market-preview-heading{display:flex;align-items:center;gap:14px}.market-selected-heading>.gear-icon,.market-selected-heading>.crafted-icon,.market-selected-heading>.gathering-emblem,.market-preview-heading>.gear-icon,.market-preview-heading>.crafted-icon{width:58px;height:64px;flex:0 0 58px}.market-selected-heading h2{font-size:1.3125rem;margin:0 0 6px;color:#e5cf9f}.market-selected-heading small{font-size:.75rem;color:#acb6ad}.market-selected-actions{display:flex;gap:8px;margin:18px 0}.market-selected-actions button{font-size:.75rem;min-height:44px}.market-sell-form{display:flex;gap:12px;align-items:end;flex-wrap:wrap;padding:16px 0;border-top:1px solid #76654466}.market-sell-form label{flex:1;min-width:100px}.market-sell-form button{min-height:44px}.market-blocked{padding:12px 0;color:#e8b184;font-size:.8125rem}.market-empty{text-align:center;padding:70px 15px;color:#9eaca7}.market-empty h2{font-size:1.375rem;color:#ccbb98}.market-empty p{max-width:340px;margin:12px auto;line-height:1.5;font-size:.8125rem}.market-hover{width:360px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);overflow:hidden}.market-preview h3{margin:0;color:#e6ca8f}.market-preview-heading{margin-bottom:14px}.market-detail-dialog{width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 32px);overflow:auto;padding:20px}.market-detail-dialog>button{display:block;width:100%;margin-top:16px}@media(max-width:1250px){.market-body{grid-template-columns:9.0625rem minmax(0,1fr) 13.125rem}.market-results{padding:12px}.market-filters{grid-template-columns:1fr 1fr}.market-filters label:first-child{grid-column:1/-1}.market-filters button{grid-column:1/-1}}@media(max-width:1050px){.market-body{grid-template-columns:minmax(0,1fr) 13.125rem}.market-categories{grid-column:1/-1;display:flex;flex-wrap:wrap;border-bottom:1px solid #73604455;padding:8px}.market-categories h2,.market-categories p{display:none}.market-categories button{width:auto;flex:0 0 auto;gap:5px;font-size:.6875rem;padding:4px 7px;border-left:0;border-bottom:2px solid transparent;min-height:44px}.market-categories button[aria-pressed=true]{border-bottom-color:#d3ae69}.market-subcategories{display:flex;width:100%;margin:6px 0 0;padding:4px 0 0}.market-categories .gear-icon,.market-categories .crafted-icon{width:22px;height:25px;flex-basis:22px}}@media(max-width:700px){.market-page{padding:8px}.market-heading{padding:12px;gap:10px}.market-heading h1{font-size:1.4375rem}.market-heading .eyebrow{font-size:.5625rem}.market-heading aside strong{font-size:1rem}.market-heading aside span{font-size:.625rem}.market-tabs{gap:0;padding:4px;flex-wrap:wrap}.market-tabs button{flex:1;padding:9px 7px;font-size:.75rem;white-space:nowrap}.market-tabs a{width:100%;text-align:right;font-size:.625rem;padding:3px 6px}.market-body{display:flex;flex-direction:column;min-height:0}.market-results{padding:10px}.market-inventory{position:static;width:auto;max-height:280px;border:0;border-top:1px solid #73604455;padding:10px;order:3}.market-selling .market-inventory{order:1}.market-selling .market-results{order:2}.market-categories{order:0;gap:2px}.market-subcategories{overflow:auto}.market-bag-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}.market-inventory h2{font-size:1rem}.market-inventory nav{margin-top:6px}.market-inventory>.small-note{margin:6px 0}.market-result-count{font-size:.625rem}.market-result-count span{max-width:130px;text-align:right}.market-lot-main{gap:7px;padding:8px 5px;flex-wrap:wrap}.market-item-name{flex-basis:calc(100% - 60px)}.market-price{margin-left:43px;text-align:left;flex:1}.market-lot-main>.secondary{min-width:80px;min-height:44px}.market-sell-selection{margin:8px 0}.market-selected-heading h2{font-size:1.125rem}.market-sell-form button{width:100%}.market-selected-actions{margin:12px 0}.market-empty{padding:25px 8px}}
.market-category-group{min-width:0}.market-subcategories small{margin-left:auto;color:#9dadaf;font-size:.625rem}.market-search{position:relative;min-width:0}.market-search>label{display:block}.market-search>small{display:block;color:#9eacbd;font:.625rem/1.4 system-ui;margin-top:5px}.market-suggestions{position:absolute;z-index:30;top:calc(100% + 4px);left:0;width:max(100%,300px);max-width:calc(100vw - 40px);max-height:320px;overflow:auto;background:#111c2d;border:1px solid #b49864;box-shadow:0 10px 25px #0008;border-radius:4px;padding:4px}.market-suggestions[hidden]{display:none}.market-filters .market-suggestions button{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;text-align:left;padding:7px 9px;border:0;border-bottom:1px solid #b4986422;background:none;color:#e8d2a9}.market-suggestions button:hover,.market-suggestions button[aria-selected=true]{background:#c7ab6322;outline:1px solid #c7ab6366}.market-suggestions .gear-icon{width:38px;height:40px;flex:0 0 38px}.market-suggestions .item-tier-badge{display:none}.market-suggestions strong,.market-suggestions small{display:block;white-space:normal}.market-suggestions strong{font:600 .75rem/1.4 system-ui}.market-suggestions small{font:.625rem/1.4 system-ui;color:#aebdca;margin-top:3px}.market-breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:12px 0 0;font:.75rem/1.5 system-ui;color:#e3c997}.market-breadcrumb>span{color:#8a99a9}.market-breadcrumb button{margin-left:auto}.market-tabs .market-refresh{font-size:.75rem;padding-inline:12px}.market-filters .market-search{align-self:start}.market-subcategories button{min-height:44px}
@media(max-width:1250px){.market-filters>.market-search{grid-column:1/-1}.market-filters>label:first-of-type{grid-column:auto}}
@media(max-width:1050px){.market-category-group{display:contents}.market-subcategories{order:2;flex-wrap:wrap;gap:3px}.market-subcategories button{white-space:nowrap}.market-subcategories small{margin-left:4px}}
@media(max-width:700px){.market-search>small{font-size:.625rem}.market-tabs .market-refresh{flex:0 0 auto}.market-suggestions{width:100%;box-sizing:border-box;max-width:100%}.market-breadcrumb{font-size:.6875rem}.market-subcategories button{min-height:44px}.market-subcategories .gear-icon{width:20px;height:23px;flex-basis:20px}}
.market-own-label{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 12px;border:1px solid #776446;border-radius:5px;color:#dfc58f;background:#202b2d;font-size:.8125rem;white-space:nowrap}

@media(max-width:700px){.market-sell-selection{scroll-margin-top:132px}}

@media(max-width:700px){.modal-backdrop .market-detail-dialog button,.modal-backdrop .market-detail-dialog .text-button{min-height:44px;white-space:normal}}
/* Large browser text: when the results column is narrower than 33rem (only with large text; at the default size the four-across row needs
   1251 px of window, where the 1250 px rule takes over) the filters use the same two-row layout as the 1250 px rule, so the selects and Search fit. */
.market-results{container:market-results/inline-size}
@container market-results (max-width:33rem){.market-filters{grid-template-columns:1fr 1fr}.market-filters>.market-search{grid-column:1/-1}.market-filters>label:first-of-type{grid-column:auto}.market-filters button{grid-column:1/-1}}
@container market-results (max-width:15rem){.market-filters{grid-template-columns:minmax(0,1fr)}.market-filters>*,.market-filters>label:first-of-type{grid-column:1/-1}}

/* /crafting.css */
.craft-page{max-width:1280px;margin:auto}.craft-heading,.craft-orders header,.craft-stock>header{display:flex;gap:12px;justify-content:space-between;align-items:center}.craft-heading h1{margin:4px 0}.craft-heading p{margin:4px 0}.craft-heading strong{color:#eac783;white-space:nowrap}.craft-heading strong small{color:#aaa89d;font-weight:400}.craft-links{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:16px 0}.craft-links>a{margin-left:auto}.craft-workbench{display:grid;grid-template-columns:215px minmax(0,1fr);background:#181c20;border:1px solid #ffffff12;border-radius:6px;overflow:hidden}.craft-workbench>nav{padding:14px 8px;background:#121519;display:flex;flex-direction:column;gap:2px;border-right:1px solid #ffffff0d}.craft-workbench>nav>.eyebrow{margin:0 10px 10px}.craft-recipe{display:flex;gap:10px;align-items:center;text-align:left;padding:10px 8px;border:0;border-left:2px solid transparent;background:transparent;color:#c6c9ca;border-radius:0;min-height:68px}.craft-recipe.selected{border-left-color:#d3b577;background:linear-gradient(90deg,#cfa45a20,transparent);color:#f6db9d}.craft-recipe small{display:block;color:#9ca9b0;font-size:.75rem;line-height:1.4;margin-top:4px}.workshop-art{display:inline-block;position:relative;flex:0 0 48px;width:48px;height:48px;color:#f3d6a4}.workshop-art svg{display:block;width:100%;height:100%;overflow:hidden}.workshop-art>b{position:absolute;right:0;bottom:0;padding:1px 4px;border-radius:3px;background:#12161de6;font:.625rem/1.4 system-ui}.craft-art-help{padding:0;border:0;background:none;display:inline-flex;flex-shrink:0}.craft-detail{padding:22px 26px;min-width:0}.craft-result{display:flex;align-items:center;gap:20px;min-height:150px}.craft-hero-art .workshop-art{width:130px;height:145px;filter:drop-shadow(0 0 24px #d0ac7130)}.craft-detail h2{font-size:1.625rem;margin:0 0 7px}.craft-effect{padding:0;margin:0;color:#dfedda;font-size:1rem;line-height:1.5}.craft-options{display:flex;gap:20px;align-items:center;border-block:1px solid #ffffff0d;margin:18px 0;padding:14px 0}.craft-options>label{flex:0 0 100px}.craft-detail label{display:grid;gap:6px;font-size:.75rem;color:#acb5b9}.craft-detail select,.craft-detail input,.craft-stock select{max-width:100%;width:100%;padding:8px;background:#101419;border:1px solid #474c51;color:#ece6dc;border-radius:4px;min-height:40px;font-size:.875rem}.craft-ingredients{display:flex;gap:12px;flex-wrap:wrap}.craft-ingredient{display:flex;align-items:center;gap:6px;text-align:left;padding:3px;border:0;background:none;color:#cbd0ce;font-size:.6875rem;min-height:48px}.craft-ingredient .workshop-art{width:40px;height:40px;flex-basis:40px}.craft-ingredient b{display:block;font-size:.875rem;font-variant-numeric:tabular-nums;color:#dfdfd8}.craft-ingredient b small{font-size:.75rem;font-weight:400;color:#9ba3a5}.craft-ingredient .craft-missing,.craft-missing{color:#ffaaa0}.craft-detail form{display:grid;grid-template-columns:80px 1fr auto;align-items:end;gap:14px}.craft-detail form p{font-size:.8125rem;font-variant-numeric:tabular-nums;margin:0;align-self:center}.craft-detail form button{min-height:42px}.craft-rules{font-size:.6875rem!important;color:#a1abae;margin:10px 0 0!important;display:flex;align-items:center;gap:5px}.craft-orders,.craft-stock,.craft-history{margin-top:22px;padding:14px 0;border-top:1px solid #ffffff17}.craft-orders h2,.craft-stock h2{font-size:1.125rem;margin:0}.craft-orders header>span,.craft-stock>header>span{font-size:.75rem;color:#9fa9ae}.craft-orders article{display:flex;gap:12px;align-items:center;border-bottom:1px solid #ffffff0b;padding:9px 0;font-size:.8125rem}.craft-orders article .workshop-art{width:35px;height:35px;flex-basis:35px}.craft-orders article>b{margin-left:auto;color:#e6cb93;font-variant-numeric:tabular-nums}.craft-orders small{display:block;color:#a8b4b0}.craft-stock-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 25px}.craft-stock article{display:flex;gap:12px;padding:15px 0;border-bottom:1px solid #ffffff0b;min-width:0}.craft-stock article>div{flex:1;min-width:0}.craft-stock h3{margin:0;font:600 .875rem system-ui!important}.craft-stock h3 small{float:right;color:#b5c4bb;font:.75rem system-ui}.craft-stock p{font-size:.75rem;line-height:1.4!important;margin:5px 0 9px}.craft-stock button.secondary{min-height:36px;padding:6px 12px!important;font-size:.75rem;margin-top:5px}.craft-active{display:flex;gap:12px;align-items:center;padding:8px 14px;border-left:2px solid #79ac8e;background:#79ac8e0c;margin:15px 0;font-size:.8125rem}.craft-active .workshop-art{width:35px;height:35px;flex-basis:35px}.craft-active small{display:block;color:#b1bdba}.craft-active>b{margin-left:auto;color:#9acaad}.crafted-enchant{padding:12px;border-left:3px solid #87b6b1;background:#6bada514;line-height:1.5}
@media(max-width:900px){.craft-workbench{grid-template-columns:170px minmax(0,1fr)}.craft-detail{padding:18px}.craft-options{align-items:start;gap:12px}.craft-ingredients{gap:5px}.craft-result{gap:10px}.craft-hero-art .workshop-art{width:100px;height:120px}.craft-detail form{grid-template-columns:70px 1fr}.craft-detail form button{grid-column:1/-1}}
@media(max-width:650px){.craft-workbench{grid-template-columns:1fr}.craft-workbench>nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:8px;gap:4px;border-right:0;border-bottom:1px solid #ffffff16}.craft-workbench>nav>.eyebrow{display:none}.craft-recipe{padding:6px;gap:5px;min-width:0;min-height:58px}.craft-recipe .workshop-art{width:38px;height:42px;flex-basis:38px}.craft-recipe small{font-size:.625rem}.craft-detail{padding:14px}.craft-result{min-height:110px}.craft-detail h2{font-size:1.375rem}.craft-effect{font-size:.875rem}.craft-options{flex-direction:column}.craft-options>label{display:flex;align-items:center;gap:10px;flex:auto}.craft-options select{width:100px}.craft-ingredients{width:100%;justify-content:space-between;gap:3px}.craft-ingredient{flex:1;min-width:0;font-size:.625rem;flex-direction:column;text-align:center}.craft-ingredient .workshop-art{width:42px;height:42px;flex-basis:42px}.craft-stock-grid{grid-template-columns:1fr}.craft-heading>strong{font-size:.875rem}.craft-heading h1{font-size:1.75rem}.craft-links{gap:5px}.craft-links button{font-size:.75rem}.craft-active>span{min-width:0}.craft-active small{display:none}}

/* Shared workbench identity: painted brass, readable steps, compact materials. */
.workshop-service-tabs{display:flex;gap:8px;margin:0 0 20px;border-bottom:2px solid #bca46b;padding:0 0 8px}
.workshop-service-tabs>button{display:flex;align-items:center;gap:10px;min-height:62px;padding:8px 20px;background:#0d1624;border:1px solid #b8955840;border-radius:2px;color:#bfc8d1;text-align:left;font-weight:600}
.workshop-service-tabs>button[aria-current="page"]{color:#ffe0a2;border-color:#c7a363;background:linear-gradient(115deg,#96703744,#151e2d);box-shadow:inset 0 2px #f5d494}
.craft-ready{display:block;margin-top:3px;color:#a9dcb1;font-size:.6875rem;font-weight:500}.craft-ready::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#9eddb5;margin-right:5px;box-shadow:0 0 6px #6cbb89}
.profession-track{display:flex;align-items:center;gap:20px;padding:20px 26px;margin:18px 0 24px;background:radial-gradient(ellipse at left,#c8964625,transparent 50%),#101a29;border-block:2px solid #b295595e;position:relative}
.profession-emblem.workshop-art{width:84px;height:92px;flex-basis:84px;filter:drop-shadow(0 0 20px #b59cd545)}
.profession-progress{flex:1;min-width:0}.profession-progress header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px;margin-bottom:10px}.profession-progress h2{font:1.375rem Georgia;color:#f3d6a1;margin:0}.profession-progress h2 span{font:600 .75rem system-ui;color:#d2b77c;margin-left:8px}.profession-progress header>small{font-size:.75rem;color:#b6c3d3;font-variant-numeric:tabular-nums}
.profession-progress progress{display:block;width:100%;height:7px;accent-color:#d3ad65;border:0;border-radius:6px;background:#070d16}.profession-progress progress::-webkit-progress-bar{background:#070d16;border-radius:6px}.profession-progress progress::-webkit-progress-value{background:linear-gradient(90deg,#846330,#f0d796);border-radius:6px}
.profession-milestones{display:flex;justify-content:space-between;list-style:none;margin:10px 0 0;padding:0}.profession-milestones li{display:flex;align-items:center;gap:5px;font:.6875rem system-ui;color:#83919e}.profession-milestones b{display:grid;place-items:center;width:23px;height:23px;border:1px solid #66718377;transform:rotate(45deg);font-size:0}.profession-milestones li.unlocked{color:#e5c990}.profession-milestones li.unlocked b{border-color:#c9a86d;background:#d9ad6130}.profession-milestones li[aria-current] b{background:#d9ad61;box-shadow:0 0 9px #d9ad6150}.profession-track>.hint-trigger{align-self:start}
.craft-next-level{font:.75rem/1.5 system-ui;color:#d6c49e;margin:12px 0 0}.craft-detail [data-craft-quote] small{display:block;color:#b2cfa3;margin-top:5px}
.craft-stock-drawer{margin-top:20px;border-block:1px solid #aa894750}.craft-stock-drawer>summary{display:flex;gap:10px;align-items:center;cursor:pointer;min-height:56px;color:#e6c88d;font:1.125rem Georgia}.craft-stock-drawer>summary>b{margin-left:auto;font:.8125rem system-ui}.craft-stock-drawer>summary::after{content:'⌄';margin:0 10px}.craft-stock-drawer .craft-stock{border:0;margin:0;padding:0}.craft-stock-drawer .craft-stock>header{display:none}
.shell .craft-workbench{background:linear-gradient(110deg,#152133,#0b1421);border-radius:2px;border-color:#bda36b60}.shell .craft-workbench>nav{background:#09121d88;border-right-color:#b99a5840}.shell .craft-orders{padding:22px}.shell .craft-stock button.secondary{min-height:44px}.shell .craft-detail select,.shell .craft-detail input{min-height:44px}
@media(max-width:650px){.workshop-service-tabs{gap:6px}.workshop-service-tabs>button{flex:1;min-width:0;gap:5px;padding:8px;font-size:.75rem}.workshop-service-tabs .workshop-art{width:34px;height:40px;flex-basis:34px}.profession-track{gap:10px;padding:18px 12px}.profession-emblem.workshop-art{width:48px;height:62px;flex-basis:48px}.profession-progress h2{font-size:1.125rem}.profession-progress header>small{font-size:.6875rem}.profession-milestones li{gap:3px}.profession-milestones b{width:14px;height:14px}.profession-milestones span{font-size:.5625rem}.craft-heading{flex-wrap:wrap}.craft-heading .workshop-guide{font-size:.75rem}.craft-rules{flex-wrap:wrap}.craft-orders article{gap:6px}.craft-orders article>b{font-size:.6875rem;white-space:nowrap}.craft-orders article strong{overflow-wrap:anywhere}}
@media(max-width:650px){
 .profession-milestones li{flex-direction:column;gap:6px;min-width:0}
 .profession-milestones b{width:18px;height:18px;flex:none}
}
@media(max-width:380px){
 .craft-workbench .craft-recipe{flex-direction:column;justify-content:center;text-align:center;gap:4px;padding:8px 4px;font-size:.8125rem}
 .craft-recipe>span:not(.workshop-art){width:100%;min-width:0;overflow-wrap:normal}
 .craft-recipe .workshop-art{width:36px;height:38px;flex-basis:38px}
}

/* The Alchemist's workbench keeps the item and its power at the centre. */
.power-workbench{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin:22px 0}
.power-workbench>section{min-width:0;padding:24px;background:radial-gradient(ellipse at 50% 20%,#69508a24,transparent 65%),#101a29;border-top:2px solid #d8b578}
.power-workbench h2{margin:6px 0 20px;font-size:1.4375rem}
.power-workbench label{display:grid;gap:8px;color:#c5bdac;font-size:.75rem;margin:14px 0}
.power-workbench select{width:100%;min-width:0;min-height:44px;color:#e5dfd4;background:#0b121e;border:1px solid #aa8d5f80;padding:8px;font-size:.875rem}
.power-preview{display:flex;align-items:center;gap:18px;min-width:0;margin:22px 0 12px}
.power-preview .gear-icon{width:78px;height:78px;flex:0 0 78px;filter:drop-shadow(0 0 15px #bd864a44)}
.power-preview>div{min-width:0}.power-preview h3{margin:0 0 6px;color:#f0c07b;overflow-wrap:anywhere;font-size:1.25rem}
.power-preview small,.power-target small{display:block;color:#b9becb;font-size:.75rem;line-height:1.5}
.power-workbench .unique-power,.power-confirmation .unique-power{padding:14px 0;border-block:1px solid #bc9a5b50;color:#dfc8a8;line-height:1.6;font-size:.875rem}
.power-workbench>section>button{width:100%;min-height:46px;margin-top:10px}
.power-target{display:flex;gap:12px;align-items:center;min-width:0;margin:14px 0;padding:12px 0;color:#d4ddec}.power-target>span{min-width:0;overflow-wrap:anywhere}.power-target .gear-icon{flex:0 0 46px;width:46px;height:46px}
.power-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:245px;color:#c4ced8}.power-empty .workshop-art{width:92px;height:104px;flex-basis:104px;filter:drop-shadow(0 0 25px #ad95d140)}.power-empty p{margin:18px 0 8px}.power-empty small{max-width:260px;color:#9aaabb;line-height:1.5}
.modal-backdrop>.power-confirmation{width:min(540px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow-y:auto;padding:28px;box-sizing:border-box}.power-confirmation h2{margin:8px 0}.power-confirmation .az-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:22px}.power-confirmation .az-actions button{min-width:0;min-height:48px;white-space:normal}.power-confirmation>p{line-height:1.6}
.imprinted-power{padding:14px 0;border-block:1px solid #bfa06d70;margin:12px 0;color:#e1bd88}.imprinted-power small{display:block;color:#b9a7cf;margin-top:5px}.imprinted-power p{font-size:.8125rem;line-height:1.6;margin:10px 0 0}
.enchanter-affix-row{display:grid;grid-template-columns:minmax(0,1fr) 54px;gap:6px;align-items:stretch}.enchanter-affix-row .enchanter-affix{min-width:0;margin:0}.affix-lock{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:48px;min-width:0;padding:4px!important;border:0!important;border-bottom:1px solid #ba985647!important;background:transparent!important;color:#8999ac;font-size:.625rem!important;box-shadow:none!important}.affix-lock svg{width:16px;height:18px}.affix-lock.is-locked{color:#f3cf8c;background:#caa56c0c!important}.modifier-locked .enchanter-affix{border-color:#b9985980;background:#c9a5750c}.modifier-locked .enchanter-affix input:disabled{opacity:.5}.enchant-lock-premium{display:block;color:#dfbc84;font-size:.75rem;margin-top:8px}
.enchant-target-stat,.enchant-run-controls label{display:grid;gap:7px;font-size:.75rem;color:#b7c2d2}.enchant-target-stat{margin:14px 0}.enchant-run-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0 20px}.enchant-run-controls[hidden]{display:none}.enchant-run-controls>label:first-child,.enchant-run-controls>small{grid-column:1/-1}.enchant-run-controls>small{line-height:1.5;color:#c2b99f}.enchant-target-stat select,.enchant-run-controls select,.enchant-run-controls input{width:100%;min-width:0;min-height:44px;box-sizing:border-box;padding:9px;color:#e5e0d8;background:#0b1421;border:1px solid #b0925f70;border-radius:2px;font:.875rem system-ui}
.enchant-run-result{padding:18px;border-top:2px solid #c8a776;margin:18px 0;background:linear-gradient(100deg,#99764a28,transparent)}.enchant-run-result.success{border-color:#a0c7a2;background:linear-gradient(100deg,#64947a28,transparent)}.enchant-run-result>strong{color:#efce93}.enchant-run-result>span{float:right;font-size:.75rem;color:#b0bccc}.enchant-run-result p{margin:10px 0}.enchant-run-result small{display:block;color:#bcc7d1;line-height:1.5}
.modal-backdrop>.affix-lock-confirmation{width:min(540px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow-y:auto;padding:26px;box-sizing:border-box}.affix-lock-confirmation .az-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.affix-lock-confirmation .az-actions button{min-width:0;min-height:46px}.affix-lock-confirmation>p{line-height:1.6}.enchant-lock-cost{display:flex;justify-content:space-between;gap:12px;align-items:center;border-block:1px solid #b6965460;padding:12px 0;color:#eed3a1}.enchant-lock-cost strong{font-size:1.25rem;font-variant-numeric:tabular-nums}
@media(max-width:700px){.power-workbench{grid-template-columns:1fr;gap:18px}.power-workbench>section{padding:18px}.power-preview{gap:12px}.power-preview h3{font-size:1.125rem}.power-preview .gear-icon{width:62px;height:62px;flex-basis:62px}.modal-backdrop>.power-confirmation{padding:20px}.power-confirmation .az-actions{gap:8px}.power-confirmation .az-actions button{font-size:.8125rem;padding:10px}.power-empty{min-height:210px}}
@media(max-width:420px){.enchanter-affix-row{grid-template-columns:minmax(0,1fr) 45px;gap:3px}.affix-lock{font-size:.5625rem!important}.modal-backdrop>.affix-lock-confirmation{padding:18px}.affix-lock-confirmation .az-actions button{padding:10px;font-size:.75rem}.enchant-run-result>span{float:none;display:block;margin-top:5px}}

.workshop-art.material-art>img,.workshop-art.scroll-art>img{display:block;width:100%;height:100%;object-fit:contain}

/* Finished crafts share the existing workshop artwork and storage palette. */
.crafted-bank{margin-top:1.2rem;padding:1rem;border:1px solid #72623f;background:#111d25}.crafted-bank h2,.crafted-bank h3{color:#e3c88d}.crafted-bank-item{min-width:0}.crafted-bank-item input{max-width:6rem;margin:.4rem}.crafted-bank-item label{display:block}.craft-delivery{padding:.75rem;border:1px solid #72623f}.account-storage .craft-stock{margin-top:1rem}.crafted-bank .craft-stock-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr))}

/* Narrow Enchanter choices retain readable words beside their artwork. */
@media(max-width:360px){.workshop-service-tabs{display:grid;grid-template-columns:minmax(0,1fr)}.workshop-service-tabs>button{width:100%;min-width:0;min-height:44px;justify-content:flex-start;white-space:normal;overflow-wrap:normal;word-break:normal}.workshop-service-tabs>button>span:not(.workshop-art){min-width:0;overflow-wrap:normal;word-break:normal}}
/* Full pass (13 Oct): three service tabs on a 361-480px phone stack the icon over the label, so a short label such as Scrolls is never cut off. */
@media(min-width:361px) and (max-width:480px){.workshop-service-tabs>button{flex-direction:column;justify-content:center;gap:2px}.workshop-service-tabs .workshop-art{width:30px;height:34px;flex-basis:auto}}
/* Unique Powers visual pass (Pat, 11 October 2026): a three-step strip, icon tiles in place of drop-downs, glowing power sigils and a result preview. */
.extraction-page{--pw-gold:#d8b578;--pw-violet:#8a6bc0;--pw-ink:#0c1420}
.power-steps{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:22px 0 0;padding:0;position:relative;counter-reset:none}
.power-steps::before{content:"";position:absolute;left:16%;right:16%;top:30px;height:2px;background:linear-gradient(90deg,#d8b57840,#a88ae0aa,#d8b57840)}
.power-step{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;min-width:0;padding:0 8px;color:#8f9aab}
.power-step-icon{position:relative;z-index:1;display:grid;place-items:center;width:60px;height:60px;border-radius:50%;background:radial-gradient(circle at 50% 35%,#2a2440,#0d1420 70%);border:2px solid #5d5240;box-shadow:0 0 0 4px #0b121c}
.power-step-icon .workshop-art{width:34px;height:38px;flex:0 0 auto;opacity:.55;filter:grayscale(.6)}
.power-step>span:last-child{display:grid;gap:2px;min-width:0}
.power-step small{font-size:.625rem;letter-spacing:.12em;text-transform:uppercase;color:#8b97a8}
.power-step strong{font:1rem Georgia,serif;color:#c9c2b4}
.power-step em{font-style:normal;font-size:.75rem;color:#8f9aab}
.power-step.is-ready .power-step-icon{border-color:var(--pw-gold);box-shadow:0 0 0 4px #0b121c,0 0 22px #b48cf066}
.power-step.is-ready .power-step-icon .workshop-art{opacity:1;filter:drop-shadow(0 0 8px #c9a4ff88)}
.power-step.is-ready strong{color:#f2d497}.power-step.is-ready em{color:#d9c8f2}
.extraction-page .power-workbench{grid-template-columns:minmax(0,1fr) 56px minmax(0,1fr);gap:0;align-items:stretch;margin-top:18px}
.power-workbench>.power-panel{position:relative;display:flex;flex-direction:column;padding:26px;border:1px solid #6d5a3c;border-top:2px solid var(--pw-gold);background:radial-gradient(ellipse at 50% 0%,#7a5aa833,transparent 60%),linear-gradient(180deg,#121d2e,#0d1522);box-shadow:inset 0 1px 0 #ffffff0d,0 10px 30px #0006}
.power-workbench>.power-panel>button{margin-top:auto}
.power-flow{align-self:center;display:grid;place-items:center;width:56px;height:56px;border-radius:50%;margin:0 -8px;z-index:1;background:radial-gradient(circle,#3a2d55,#111a28 72%);border:2px solid var(--pw-gold);box-shadow:0 0 24px #a07ce066}
.power-flow .workshop-art{width:30px;height:34px;flex:0 0 auto}
.power-picker{margin:4px 0 6px}
.extraction-page .power-picker-label{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:.75rem;color:#c5bdac}
.power-picker-label small{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#2b2440;color:#d9c8f2;font-size:.6875rem}
.power-tiles{display:flex;flex-wrap:wrap;gap:8px;max-height:132px;overflow-y:auto;padding:2px}
.power-tile{display:grid;place-items:center;width:56px;height:56px;min-height:0!important;padding:3px!important;border-radius:10px;border:2px solid #3b4658!important;background:#0b121e!important;box-shadow:none!important;cursor:pointer;transition:border-color .15s,transform .15s}
.power-tile .gear-icon{width:46px!important;height:46px!important;flex:0 0 46px}
.power-tile:hover{border-color:#a99068!important;transform:translateY(-1px)}
.power-tile.is-selected{border-color:var(--pw-gold)!important;box-shadow:0 0 0 2px #0b121e,0 0 16px #d8b57866!important}
.power-tile-input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}.power-tile{position:relative}.power-tile:has(.power-tile-input:focus-visible){outline:2px solid #f2d497;outline-offset:2px}
.extraction-page .power-preview,.power-confirmation .power-preview{margin:18px 0 14px;gap:18px}
.power-sigil{position:relative;display:grid;place-items:center;flex:0 0 auto;width:96px;height:96px;border-radius:50%;background:radial-gradient(circle,#3b2c5a 0,#16122a 58%,transparent 72%)}
.power-sigil-ring{position:absolute;inset:0;border-radius:50%;padding:3px;background:conic-gradient(from 30deg,#f595b6,#b6a1ff,#72cffa,#90e4a6,#f8df83,#ffa878,#f595b6);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;opacity:.85;box-shadow:0 0 26px #b48cf055;animation:power-ring 14s linear infinite}
.power-sigil .gear-icon,.power-sigil .workshop-art{position:relative;width:64px!important;height:64px!important;flex:0 0 64px;filter:drop-shadow(0 0 12px #c9a4ff66)}
.power-sigil.is-power{background:radial-gradient(circle,#5b3f8a 0,#1c1533 55%,transparent 72%)}
.power-sigil.is-badge{position:absolute;right:-12px;bottom:-12px;width:34px;height:34px;background:radial-gradient(circle,#5b3f8a,#141022 70%);box-shadow:0 0 0 2px #0c1420}
.power-sigil.is-badge .gear-icon{width:22px!important;height:22px!important;flex-basis:22px;border-width:1px!important}
.power-sigil.is-badge .gear-icon .item-tier-badge{display:none}
.power-sigil.is-badge .power-sigil-ring{padding:2px;animation:none}
@keyframes power-ring{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.power-sigil-ring{animation:none}.power-tile{transition:none}}
.extraction-page .power-preview h3,.power-confirmation .power-preview h3{font:1.375rem Georgia,serif;color:#f2c98a;margin:0 0 4px}
.power-scroll{position:relative;margin:0 0 16px;padding:14px 16px 14px;border-radius:10px;background:linear-gradient(180deg,#241c38cc,#151827cc);border:1px solid #6e5a9a66;box-shadow:inset 0 1px 0 #ffffff10}
.power-scroll::before{content:"";position:absolute;left:14px;right:14px;top:-1px;height:2px;border-radius:2px;background:linear-gradient(90deg,#f595b6,#b6a1ff,#72cffa,#90e4a6,#f8df83)}
.power-scroll-label{display:flex;align-items:center;gap:6px;margin:0 0 6px;font-size:.625rem;letter-spacing:.14em;text-transform:uppercase;color:#cdb8f0}
.power-scroll-label .workshop-art{width:16px;height:18px;flex:0 0 16px}
.power-scroll-text{margin:0;font-size:.875rem;line-height:1.6;color:#e6dccb}
.extraction-page .power-warning{display:flex;gap:10px;align-items:flex-start;margin:0 0 16px;padding:10px 12px;border-left:2px solid #c98a4d;background:#2a1f1366;color:#d9c6a8;font-size:.8125rem;line-height:1.5}
.power-warning .workshop-art{width:20px;height:22px;flex:0 0 20px;margin-top:1px}
.power-result{display:flex;align-items:center;gap:18px;margin:8px 0 16px;padding:14px 16px;border-radius:10px;border:1px dashed #d8b57880;background:linear-gradient(90deg,#d8b57814,transparent)}
.power-result-item{position:relative;display:inline-grid;flex:0 0 auto}
.power-result-item>.gear-icon{width:64px;height:64px}
.power-result>span:last-child{display:grid;gap:2px;min-width:0;overflow-wrap:anywhere}
.power-result small{font-size:.6875rem;color:#a9b3c2}
.power-result strong{font:1.0625rem Georgia,serif;color:#f2d497}
.power-result em{font-style:normal;color:#d9c8f2;font-size:.875rem}
.power-result .power-replaces{color:#e3a77a}
.power-rules{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 0;padding:0}
.power-rules li{padding:7px 12px;border-radius:16px;border:1px solid #4d5668;background:#0f1724;color:#b9c2cf;font-size:.75rem}
.power-transfer{display:flex;align-items:center;justify-content:center;gap:16px;margin:16px 0 4px}
.power-transfer .power-sigil:not(.is-badge){width:84px;height:84px}.power-transfer .power-sigil:not(.is-badge) .gear-icon,.power-transfer .power-sigil:not(.is-badge) .workshop-art{width:54px!important;height:54px!important;flex-basis:54px}
.power-transfer-arrow{font-size:1.75rem;color:var(--pw-gold);text-shadow:0 0 12px #d8b57888}
.power-transfer .power-result-item>.gear-icon{width:60px;height:60px}
.power-confirmation .power-preview{margin:12px 0 10px;justify-content:center;text-align:center}
.power-picker.is-round .power-tile{border-radius:50%}.power-picker.is-round .power-tile .gear-icon{border-radius:50%}
@media(max-width:900px){.extraction-page .power-workbench{grid-template-columns:1fr;gap:0}.power-flow{justify-self:center;margin:-10px 0;transform:rotate(90deg)}}
@media(max-width:700px){.power-steps::before{top:23px}.power-step-icon{width:46px;height:46px}.power-step-icon .workshop-art{width:26px;height:29px}.power-step strong{font-size:.8125rem}.power-step em{font-size:.6875rem}.power-step small{font-size:.5625rem}.power-workbench>.power-panel{padding:18px}.power-sigil{width:80px;height:80px}.power-sigil .gear-icon,.power-sigil .workshop-art{width:54px!important;height:54px!important;flex-basis:54px}.extraction-page .power-preview h3{font-size:1.1875rem}.power-scroll-text{font-size:.8125rem}.power-flow{width:46px;height:46px}.power-rules li{font-size:.6875rem}}

/* /ascend-ui.css */
/* Ascend (Epic to Heroic): item-card note and the Enchanter "Ascend to Heroic" panel. Built on the UI kit (ui-kit.css): the panel is a .uk-card-light, the button a
   .uk-btn (the kit's secondary button, 44 px target). NOT SEEN IN A BROWSER yet: check at desktop width and at 320 px before any flip. No animation, nothing hover-only. */
.ascend-note{margin:8px 0;padding:8px 10px;border-left:3px solid var(--uk-gold,#d6b575);background:#0c172355;color:var(--uk-ivory,#eadbb9);line-height:1.45}
.ascend-note strong{color:var(--uk-gold-text,#ffe1aa)}
.ascend-panel{margin:16px 0;padding:14px;box-sizing:border-box;max-width:100%;color:var(--uk-ivory,#eadbb9)}
.ascend-panel h3{margin:0 0 6px;font-size:1.125rem;color:var(--uk-gold-text,#ffe1aa)}
.ascend-panel h4{margin:14px 0 6px;font-size:.9375rem;color:var(--uk-gold,#d6b575)}
.ascend-panel p{margin:6px 0;line-height:1.45;overflow-wrap:anywhere}
/* Page fix 4: the paragraphs were the workbench grey-green (workshops-combat.css ".workshop-bench p" sets color on the p itself, so the panel's own colour was never
   inherited). This selector is (0,2,1) against (0,1,1): it wins by specificity, in any file order. The colour is the kit's ivory text token. */
.ascend-panel.uk-card-light p{color:var(--uk-ivory,#eadbb9)}
.ascend-reason{padding:8px 10px;border-left:3px solid #b9705c;background:#240d0e66}
.ascend-warning{padding:8px 10px;border-left:3px solid var(--uk-gold,#d6b575);background:#0c172377}
/* Page fix 3 (320 px broke "Enhancem / ent"): the row names are the game's short words (Rank, Rank limit) and the first column never breaks inside a word.
   Automatic table layout: the first column is at least as wide as its longest word; the two value columns may still wrap anywhere, so the table never
   grows past the panel (no sideways scroll). The selector .ascend-panel .ascend-table tbody th is (0,2,2): it wins over .ascend-table th (0,1,1) by specificity, whatever the file order. */
.ascend-table{width:100%;margin:10px 0;border-collapse:collapse;table-layout:auto}
.ascend-table th,.ascend-table td{padding:8px 6px;border-bottom:1px solid #b69a6044;text-align:left;vertical-align:top;overflow-wrap:anywhere}
.ascend-table thead th{color:var(--uk-gold,#d6b575);font-size:.8125rem}
.ascend-table tbody th{font-weight:600;color:var(--uk-ivory-dim,#c9c3b4);width:32%}
.ascend-panel .ascend-table tbody th{overflow-wrap:normal;word-break:normal;hyphens:none;white-space:normal}
.ascend-table .ascend-after{color:#9ae867}
.ascend-lines{list-style:none;margin:6px 0;padding:0}
.ascend-lines li{padding:8px 6px;border-bottom:1px solid #b69a6044;overflow-wrap:anywhere}
.ascend-lines small{display:block;margin-top:2px;color:var(--uk-ivory-dim,#c9c3b4)}
.ascend-lines .ascend-new strong{color:#9ae867}
.ascend-cost{display:grid;gap:6px;margin:6px 0}
.ascend-cost>div{display:flex;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid #6f5d3c;border-radius:var(--uk-radius,4px);background:#0c172355}
.ascend-cost>div.missing{border-color:#b9705c}
.ascend-cost dt{margin:0;font-weight:600}
.ascend-cost dd{margin:0;text-align:right}
.ascend-cost dd span{display:block;font-size:.8125rem;color:var(--uk-ivory-dim,#c9c3b4)}
/* The Ascended block, one line: label, stat, " · ", tier. Each rule is (0,3,0) or (0,2,1): it beats .workshop-bench p and any single-class rule by specificity, not by file order. */
.ascend-panel .ascend-new-line .ascend-new-label{color:var(--uk-ivory-dim,#c9c3b4);margin-right:6px}
.ascend-panel .ascend-new-line .ascend-sep{color:var(--uk-ivory-dim,#c9c3b4);white-space:pre}
.ascend-panel .ascend-new-line small{display:inline;font-size:inherit;color:var(--uk-ivory-dim,#c9c3b4)}
/* Page fix 7: the entry button is the kit's secondary button (.uk-btn), so the Enchanter screen shows one gold action (its own Reroll); gold stays on the confirm
   sheet's final "Ascend" (.red-button, which the kit paints as its primary). The kit frames .uk-btn with a (0,2,0) rule in a later file; these are (0,3,0), so the
   width, the 44 px height and the gap above win by specificity, and nothing here repaints the kit's colours, border or disabled look. */
.ascend-panel.uk-card-light .uk-btn{width:100%;min-height:44px;margin-top:8px}
@media (min-width:600px){.ascend-panel.uk-card-light .uk-btn{width:auto;min-width:220px}}
/* The confirm sheet (public/ascend-ui.js confirmSheet): the game's own sheet frame (.modal-backdrop > .ornate.salvage-confirmation, kit buttons .secondary and
   .red-button). Only spacing and wrapping are set here. Two buttons side by side, each at least 44 px high, stacking when the sheet is too narrow. NOT SEEN IN A BROWSER. */
.ascend-confirm{color:var(--uk-ivory,#eadbb9)}
.ascend-confirm h2{overflow-wrap:anywhere}
.ascend-confirm p{margin:0 0 12px;line-height:1.5;overflow-wrap:anywhere}
.ascend-confirm-cost{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:6px}
.ascend-confirm-cost li{padding:8px 10px;border:1px solid #6f5d3c;border-radius:var(--uk-radius,4px);background:#0c172355;overflow-wrap:anywhere}
.ascend-confirm-cost strong{color:var(--uk-gold-text,#ffe1aa)}
.ascend-confirm .az-actions{justify-content:stretch}
.ascend-confirm .az-actions>button{flex:1 1 120px;min-height:44px;white-space:normal}
/* Page fix 6: "What changes" is a closed native <details> under the button (the table and the modifier list live inside it). The summary is the kit's disclosure
   row (.uk-disclosure>summary in ui-kit.css, (0,1,1)); the rules here are (0,2,1) and (0,2,0), so they win over the kit rule and over any single-class rule by
   specificity, and they only repeat or add to what the kit sets: a 44 px tap target, ivory text, room above. Native element: Enter and Space open it. */
.ascend-panel .ascend-details{margin:12px 0 0;min-width:0}
.ascend-panel .ascend-details>summary{box-sizing:border-box;min-height:var(--uk-tap,44px);padding:11px 14px;line-height:1.4;font-weight:600;color:var(--uk-ivory,#eadbb9);cursor:pointer;overflow-wrap:anywhere}
.ascend-panel .ascend-details>summary:focus-visible{outline:3px solid var(--uk-focus,#f4cd86);outline-offset:2px}
.ascend-panel .ascend-details[open]>summary{margin-bottom:6px}
.ascend-panel .ascend-warning{margin-top:12px}
/* Page fix 8: the success line, first line of the Ascended block (it was a workshop notice above the item picker, off screen, in the bench grey). Kit ivory text with
   a gold rule, no new colour. (0,3,0): it beats .workshop-bench p (0,1,1) and .ascend-panel.uk-card-light p (0,2,1) by specificity, in any file order. */
.ascend-panel.uk-card-light .ascend-success{margin:0 0 8px;padding:8px 10px;border-left:3px solid var(--uk-gold,#d6b575);background:#0c172377;color:var(--uk-ivory,#eadbb9);font-weight:600}
/* Page fix 9, moved by page fix 11: "Ascend this Epic" link (public/ascend-ui.js jump), shown only while the panel is in its ready state. It sat at the top of the
   bench, about 1,352 px down the page at 320 px (the alpha, squire and skill-reset banners sit above the Enchanter); it is now inside the Enchanter's heading row,
   directly under the "Enchanter" title (public/workshop-view.js enchanterWindow). Kit gold text, underlined like the game's other text links, a 44 px tap row sized
   to its words. (0,2,0) beats .shell a (0,1,1) by specificity. The same rule at every width (desktop and 320 px): it wraps inside the title column, never sideways.
   scroll-margin-top keeps the panel heading below the sticky top bar after the jump. No animation (no smooth scrolling). */
.workshop-heading .ascend-jump{display:flex;align-items:center;gap:6px;box-sizing:border-box;width:fit-content;max-width:100%;min-height:44px;margin:4px 0 0;padding:10px 0;color:var(--uk-gold-text,#ffe1aa);font:600 .875rem/1.4 system-ui,sans-serif;text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}
.ascend-panel{scroll-margin-top:96px}
/* Page fix 10: a refused Ascend, one line inside the panel next to its button (public/ascend-ui.js refusalLine), role="alert". The game's error style: the same
   colours, border and radius as .exp-error (the workshop notice's error look), no new colour. (0,3,0): it beats .ascend-panel.uk-card-light p (0,2,1), which would
   repaint it ivory, and .workshop-bench p (0,1,1), by specificity in any file order. Nothing hover-only, no animation. */
.ascend-panel.uk-card-light .ascend-refusal{margin:8px 0;padding:8px 10px;border:1px solid #985743;border-radius:var(--uk-radius,4px);background:#431f23;color:#ffb7a1;font-weight:600;line-height:1.45;overflow-wrap:anywhere}
/* Page fix 12: the line now sits directly under the panel heading, and app.js scrolls it into view (nearest edge) after the redraw. These margins keep it clear of
   the sticky top bar (the panel's own 96 px) and of the bottom bar (about 71 px at 320x640). (0,3,0), same selector as above. */
.ascend-panel.uk-card-light .ascend-refusal{scroll-margin:96px 0 96px}

/* /alpha-phase.css */
.alpha-phase-label{display:inline-block;color:#f2d18d;font:700 .7rem/1.4 system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase;padding:.15rem .45rem;border:1px solid #b28e4b;border-radius:4px;vertical-align:middle;white-space:nowrap}
.wordmark .alpha-phase-label{margin-top:.3rem;align-self:center}
.entry-brand .alpha-phase-label{margin-top:.8rem;filter:none}
.alpha-notice{display:flex;align-items:center;gap:1rem;max-width:100%;padding:.8rem 1rem;border:1px solid #967a48;border-radius:5px;background:#201f18;color:#eadfc7;font:normal .875rem/1.5 system-ui,sans-serif;text-align:left;overflow-wrap:break-word}
.alpha-notice>div{min-width:0;flex:1}.alpha-notice strong{color:#f1cd83}.alpha-notice p{margin:.3rem 0 0}.alpha-notice button{flex:0 0 auto;min-height:44px;white-space:normal}
.alpha-entry-access{width:min(26rem,100%);min-width:0}.alpha-entry-access>.alpha-notice{margin-bottom:.85rem}
.mmo-shell>.alpha-notice,.shell>.alpha-notice{margin:.75rem clamp(.5rem,2vw,1.5rem)}
.settings-modal>.alpha-notice{margin:1rem 0}.alpha-full{width:min(42rem,100%);margin:0 auto;box-sizing:border-box;padding:clamp(1rem,5vw,3rem);line-height:1.6}.alpha-full>.alpha-notice{margin-top:1.5rem}.alpha-full>button{min-height:44px;margin:.5rem .5rem .5rem 0}
@media(max-width:430px){.alpha-notice{flex-wrap:wrap;gap:.5rem}.alpha-notice>div{flex-basis:100%}.alpha-notice>button{margin-left:auto}.alpha-full h1{font-size:2rem}}
/* Phone QA 7 Oct: in the game the Alpha notice is one slim line (title + Got it). The full sentence stays for screen readers and in Settings. */
@media(max-width:1000px){.mmo-shell>.alpha-notice{flex-wrap:nowrap;gap:8px;min-height:0;margin:6px 8px;padding:3px 3px 3px 12px;line-height:1.3}.mmo-shell>.alpha-notice>div{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mmo-shell>.alpha-notice p{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.mmo-shell>.alpha-notice>button{position:relative;margin:0;min-height:32px;padding:4px 12px;font-size:.8rem}.mmo-shell>.alpha-notice>button::after{content:'';position:absolute;inset:-6px -4px}}

/* /player-policies.css */
.policy-document{margin:0;background:#101820;color:#dce2e5;font:1rem/1.7 system-ui,sans-serif}.policy-document *{box-sizing:border-box}.policy-document a{color:#e9c785;text-underline-offset:4px}.policy-document a:focus-visible{outline:2px solid #f0ce91;outline-offset:4px}.policy-top{display:flex;justify-content:space-between;gap:20px;max-width:1150px;margin:auto;padding:20px 24px}.policy-top a{min-height:44px;display:inline-flex;align-items:center}.policy-top span{color:#ebc77d;font-size:.75rem;letter-spacing:.14em;align-self:center}#policies{max-width:1150px;margin:auto;padding:0 24px 60px}.policy-heading{border-bottom:1px solid #776445;padding:24px 0}.policy-heading h1{font:2.25rem/1.2 Georgia,serif;color:#edcf92;margin:10px 0}.policy-heading p{max-width:760px}.policy-document .eyebrow{font-size:.75rem;letter-spacing:.12em;color:#c4ac7e}.policy-heading span{color:#afbabf;font-size:.875rem}.policy-draft{border:1px solid #a58143;background:#3c3020;padding:16px 20px;margin:24px 0;border-radius:6px}.policy-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:36px}.policy-layout nav{display:flex;flex-direction:column;gap:8px;align-self:start;position:sticky;top:16px}.policy-layout nav a{display:flex;align-items:center;min-height:48px;padding:10px 14px;border:1px solid #3e4b53;border-radius:5px;text-decoration:none}.policy-layout nav [aria-current]{border-color:#c2a368;background:#332e23;color:#f5ddb0}.policy-layout article{min-width:0}.policy-layout h2{font-size:1.3125rem;color:#ecd0a0;margin:0 0 10px}.policy-layout section{margin-bottom:30px}.policy-layout p{margin:0 0 12px;overflow-wrap:break-word}.policy-layout footer{border-top:1px solid #3e4b53;padding-top:20px;font-size:.875rem;color:#aebbc2}.settings-policies{border-top:1px solid #665843;padding-top:14px;margin:20px 0}.settings-policies a{display:flex;justify-content:space-between;gap:12px;align-items:center;min-height:44px;padding:10px 12px;margin:8px 0;text-decoration:none;font-family:inherit}.settings-policies a:hover{border-color:#dfbf7f}@media(max-width:650px){.policy-layout{grid-template-columns:1fr;gap:24px}.policy-layout nav{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.policy-heading h1{font-size:1.875rem}#policies,.policy-top{padding-left:16px;padding-right:16px}}

/* /alpha-shop.css */
.crown-shop{max-width:1240px;margin:auto}.crown-shop-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:24px}.crown-shop-heading h1{margin:.25em 0}.crown-wallet{display:flex;align-items:center;gap:16px;padding:18px 24px;border:1px solid #8a7244;border-radius:8px;background:linear-gradient(135deg,#302719,#172229);box-shadow:inset 0 0 25px #f2c46608}.crown-wallet>span{font-size:2.875rem;color:#e7c780}.crown-wallet small,.character-select small{display:block;margin-top:6px;color:#b5c0c2}.crown-alpha-notice{padding:16px 20px;border:1px solid #86744e;border-left:4px solid #dbba75;background:#302b204d;border-radius:5px}.crown-alpha-notice strong{color:#f1d491}.crown-alpha-notice p{margin:6px 0 0;line-height:1.5;font-size:.875rem}.crown-benefits{display:flex;flex-wrap:wrap;gap:12px 30px;margin:24px 0;padding:16px 0;border-block:1px solid #5d5d483d}.crown-benefits b{color:#e9cd93;margin-right:4px}.crown-category{margin:28px 0}.crown-category>h2{font-size:1.25rem;border-bottom:1px solid #8b734844;padding-bottom:10px}.crown-products{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.crown-products article{display:grid;grid-template-columns:64px 1fr;align-items:start;gap:16px;padding:24px;border:1px solid #5e665b;border-radius:9px;background:linear-gradient(150deg,#243039,#141e26);box-shadow:0 5px 16px #0002}.crown-products h3{margin:2px 0 12px;color:#ecd5a6;font-size:1.25rem}.crown-products .eyebrow{margin:0 0 5px;font-size:.625rem;letter-spacing:.15em}.crown-products p{line-height:1.55;margin:8px 0}.crown-products button{grid-column:2;justify-self:start;min-height:44px}.crown-product-symbol{display:grid;place-items:center;border:1px solid #a1854e;border-radius:50%;width:60px;height:60px;font-size:1.875rem;color:#e8c787;background:radial-gradient(#75613b,#242924 70%)}.crown-active{color:#9ed0aa}.crown-shop-footer{border-top:1px solid #856f4544;padding-top:24px;display:flex;flex-wrap:wrap;gap:12px;align-items:center}.crown-shop-footer p{font-size:.8125rem;color:#bbc7c4}.character-select{width:min(600px,92vw);padding:26px;max-height:85vh;overflow:auto}.character-select header{display:flex;align-items:center;justify-content:space-between}.character-select p{line-height:1.5}.character-select-list{display:grid;gap:10px;margin:20px 0}.character-select-list button{display:flex;gap:14px;align-items:center;text-align:left;min-height:76px}.character-select-list .outfit-portrait{flex:0 0 48px;height:54px}.character-select-list em{margin-left:auto;color:#e6c785;font-style:normal;font-size:.8125rem}@media(max-width:700px){.crown-shop-heading{align-items:stretch;flex-direction:column;gap:12px}.crown-wallet{padding:10px 16px}.crown-wallet>span{font-size:2rem}.crown-products{grid-template-columns:1fr}.crown-products article{padding:18px;grid-template-columns:42px 1fr;gap:12px}.crown-product-symbol{width:40px;height:40px;font-size:1.5rem}.crown-products h3{font-size:1.125rem}.crown-products button{grid-column:1/-1;width:100%;justify-self:stretch}.crown-benefits{gap:10px 18px;font-size:.8125rem}}

.crown-merchant{display:flex;align-items:center;gap:18px}.crown-merchant>img{height:170px;width:108px;object-fit:contain;filter:drop-shadow(0 4px 10px #0006)}@media(max-width:700px){.crown-merchant>img{height:120px;width:76px}.crown-merchant{gap:10px}.crown-merchant h1{font-size:1.5625rem}}
.crown-shop #crown-market{scroll-margin-top:96px}

/* Buy the Dev a coffee (IRP_COFFEE_URL) and Dawn Crown packs (IRP_DAWN_CROWNS_VERSION). */
.crown-coffee{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:16px 0;padding:16px 20px;border:1px solid #86744e;border-radius:8px;background:linear-gradient(135deg,#2e2418,#162029)}.crown-coffee h2{margin:0;font-size:1.125rem;color:#f1d491}.crown-coffee p{margin:6px 0 0;line-height:1.5;font-size:.875rem}.crown-coffee .red-button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0 20px;white-space:nowrap;text-decoration:none}.crown-pack-buy{display:flex;flex-wrap:wrap;gap:8px}.crown-pack-buy button{min-height:44px}@media(max-width:700px){.crown-coffee{flex-direction:column;align-items:stretch}.crown-coffee .red-button{width:100%}}

/* /ui-overhaul.css */
/* Review foundation: Stonewake stone, warm metal and restrained parchment tones. */
:root{--realm-ink:#e6e3d9;--realm-muted:#aeb6b8;--realm-gold:#d5b77e;--realm-edge:#5e5441;--realm-panel:#141d2b;--mmo-gold:#d5b77e;--mmo-edge:#5e5441;--ui-border:#c5b48b22;--ui-panel:#141d2b;--ui-canvas:#0b111d}
body{background:var(--ui-canvas);font-size:.875rem;color:var(--realm-ink)}.shell.mmo-shell{background:radial-gradient(ellipse at 80% 0,#35423c22,transparent 52%),#0b111d}.shell p{line-height:1.5}.shell h1{font-size:clamp(1.625rem,2.5vw,2.25rem);font-weight:500;letter-spacing:.015em}.shell h2{font-size:1.3125rem}.shell h3{font-size:1.0625rem}.shell .eyebrow{font-size:.625rem;letter-spacing:.14em;color:#bba174}.shell .small-note{font-size:.75rem;line-height:1.5}.shell a{color:#d3bc86}.shell .exp-page{padding:24px clamp(14px,2.5vw,36px) 50px}.shell :is(.exp-panel,.inventory-panel,.ornate,.current-lesson,.quest-records){background:#141d2b;border:1px solid var(--ui-border);border-radius:5px;box-shadow:none}.shell :is(.exp-panel,.inventory-panel){padding:18px}.shell .exp-panel .exp-panel{background:transparent;border:0;border-top:1px solid var(--ui-border);border-radius:0;padding-inline:0}.shell .secondary,.modal-backdrop .secondary{background:linear-gradient(#273246,#1b2536);border:1px solid #74807855;box-shadow:inset 0 1px #ffffff0c;color:#e1dfd4;border-radius:4px;font:500 .8125rem/1.3 system-ui;padding:9px 14px;min-height:44px}.shell .secondary:hover,.modal-backdrop .secondary:hover{background:#344057;border-color:#bba474}.shell .red-button,.modal-backdrop .red-button{background:linear-gradient(#bd9860,#957441);color:#151713;border:1px solid #d7b77d;box-shadow:inset 0 1px #fce7bb66;font:700 .8125rem/1.3 system-ui;border-radius:4px;min-height:44px;padding:10px 18px}.shell button:disabled{opacity:.45;cursor:not-allowed}.shell :is(input,select,textarea){background-color:#0b1423;color:#e6e3d9;border-color:#5b666566;border-radius:4px}.shell input[type=checkbox]{accent-color:#c8a56c}.shell :is(th,td){border-color:var(--ui-border);font-size:.8125rem}.shell th{color:#d5c9ad;background:#ffffff04}.shell progress{accent-color:#bba36c;height:6px}.shell dt{word-break:normal;overflow-wrap:normal}.shell .section-tabs{background:#0e1726;padding:0 24px;gap:4px;border-bottom:1px solid var(--ui-border)}.shell .section-tab{background:none;border:0;border-radius:0;min-height:44px;padding:10px 15px;font-size:.8125rem;color:#aeb5b5}.shell .section-tab.selected{background:#cfac6310;box-shadow:inset 0 -2px #cba56c;color:#e8cfa1}.shell .topbar{background:#0c1422f7;border-bottom:1px solid var(--ui-border);box-shadow:none}.shell .nav-brand{margin-bottom:16px}.shell .nav-brand>span{display:none}.shell .nav-copy small{display:none}.shell .topbar>nav .nav-button{background:transparent;border:0;box-shadow:none;border-radius:3px}.shell .topbar>nav .nav-button:hover{background:#d4b8750b}.shell .topbar>nav .nav-button.active{background:linear-gradient(90deg,#cda25c25,transparent);color:#f1d39c;box-shadow:inset 2px 0 #d0aa66;border:0}.shell .nav-copy strong{font:500 min(.8125rem,15px)/1.3 system-ui}.shell .hero-hud strong{font:600 .9375rem system-ui}.shell .hero-hud span,.shell .hero-hud small{font-size:.6875rem}.shell .hero-hud button{min-height:44px}.shell .exp-heading{margin-bottom:20px}.shell .exp-heading h1{margin:5px 0}.shell .exp-heading>p{margin:4px 0}.illustrated-heading{position:relative;isolation:isolate;overflow:hidden;min-height:155px!important;padding:24px 170px 22px 24px!important;margin-bottom:20px;border:0!important;border-bottom:1px solid #c5a76a44!important;border-radius:5px 5px 0 0!important;background:linear-gradient(90deg,#243130,#1b242af0 65%,#2c3437)!important;box-shadow:none!important}.illustrated-heading>div,.illustrated-heading>p,.illustrated-heading>h1,.illustrated-heading>h2{position:relative;z-index:1}.menu-illustration{position:absolute!important;right:18px;bottom:0;height:145px;width:140px;object-fit:contain;object-position:bottom;pointer-events:none;filter:drop-shadow(0 0 18px #ccbb7633);opacity:.95}.illustrated-heading[data-menu-theme=parchment]{background:linear-gradient(95deg,#322e25,#20272af5)!important}.illustrated-heading[data-menu-theme=arcane]{background:linear-gradient(95deg,#2c273a,#1e252bf5)!important}.illustrated-heading[data-menu-theme=stone]{background:linear-gradient(95deg,#2f3435,#141d2bf5)!important}.illustrated-heading[data-menu-theme=herbs]{background:linear-gradient(95deg,#273830,#19262bf5)!important}.illustrated-heading[data-menu-theme=market]{background:linear-gradient(95deg,#322b21,#1b252af5)!important}.menu-illustration[src$="town-artisans.webp"]{object-fit:cover;object-position:40% 40%;opacity:.4;mask-image:linear-gradient(90deg,transparent,#000);width:220px}.ui-tooltip{position:fixed;z-index:5000;max-width:min(340px,calc(100vw - 16px));max-height:calc(100dvh - 16px);overflow:auto;padding:14px 16px;border:1px solid #b6985d;background:#151d24f7;color:#d9dfde;border-radius:5px;box-shadow:0 8px 25px #0009;font:.8125rem/1.5 system-ui;box-sizing:border-box;white-space:pre-line}.ui-tooltip strong{display:block;color:#edce91;margin-bottom:6px}.ui-tooltip p{margin:0}.ui-help{border:0;background:none;color:#cbb783;padding:6px;font-size:.9375rem;min-width:28px;min-height:28px;cursor:help}.shell :is(.text-link,.text-button){font:500 .75rem/1.4 system-ui;color:#d3bd8a;background:none;border:0;padding:6px 0;text-decoration:underline;text-underline-offset:3px}.shell :focus-visible{outline:2px solid #f1d393;outline-offset:3px}.shell :is(.quest-card,.guild-upgrade,.guild-directory>article,.crown-products article,.leaderboard-panel,.gather-log,.gather-materials,.gather-coming){background:#141d2b;border-color:var(--ui-border);box-shadow:none;border-radius:4px}.shell .quest-grid{grid-template-columns:1fr;gap:0}.shell .quest-card{position:relative;padding:16px 18px 16px 54px;border:0;border-bottom:1px solid var(--ui-border)}.quest-card:before{content:'◆';position:absolute;left:18px;top:24px;color:#d7b779;font-size:1.375rem;text-shadow:0 0 12px #c7a56844}.shell .quest-card h3{margin:4px 0;font-size:1.125rem}.shell .quest-card p{margin:5px 0;font-size:.8125rem}.shell .quest-card .eyebrow{font-size:.625rem}.shell .quest-card .quest-reward{color:#b2ccad}.shell .quest-card button{margin:6px 6px 0 0}.shell .guild-upgrade{padding:18px}.shell .guild-emblem{background:none;border:0;box-shadow:none;color:#cdb787}.shell .leaderboard-panel{padding:18px}.shell .leaderboard-panel tr:nth-child(-n+3) td:first-child{color:#ebca81;font-size:1.0625rem;font-weight:700}.shell .leaderboard-panel table{width:100%;border-collapse:collapse}.shell .leaderboard-panel td,.shell .leaderboard-panel th{padding:10px}.shell .account-storage .storage-columns>.exp-panel{border:0;border-top:1px solid var(--ui-border)}.shell .account-storage .storage-grid{gap:8px}.shell .handbook-header{border-color:var(--ui-border)}.shell .handbook-index,.shell .handbook .handbook-article,.shell .guide-category{background:#141e2d;border-color:var(--ui-border);box-shadow:none;border-radius:4px}.shell .handbook-preview{font-size:.8125rem}.shell .handbook-article h2{font:600 1rem/1.4 system-ui}.shell .handbook-answer{font-size:.875rem}.shell .handbook-short{background:#a5b98b0d;color:#dfdfcf}.shell .paths-heading{border-bottom:1px solid var(--ui-border);margin-bottom:20px}.shell .paths-heading h1{margin:4px 0}.shell .path-intro{padding:12px 0;background:none;border:0}.shell .path-intro h2{font-size:1.3125rem}.shell .path-intro p{margin:4px 0;font-size:.8125rem}.shell .path-inspector{background:#141e2d;border:1px solid var(--ui-border);border-top:2px solid var(--path-tone);padding:18px}.shell .path-inspector h2{font-size:1.4375rem}.shell .path-inspector-title .skill-art{width:54px;height:54px}.shell .path-stats{gap:8px}.shell .path-stats>div{background:transparent;border:0;border-bottom:1px solid var(--ui-border);padding:8px 0}.shell .path-stats dt{font-size:.6875rem;color:#a5b1b8}.shell .path-stats dd{font-size:.875rem}.shell .path-skill-summary{font-size:.875rem;color:#e4e5dd}.shell .path-trigger{font-size:.75rem}.shell .skill-estimate{padding:12px;background:#90b3a010;border:0;border-left:2px solid #8da88a}.shell .skill-estimate-value{font-size:.875rem}.shell .skill-estimate-value strong{font-size:1.5rem;color:#e2d3a6}.shell .skill-estimate>small{font-size:.6875rem}.shell .skill-calculation{font-size:.75rem}.shell .path-loadout{background:transparent;border:0;padding:0}.shell .path-loadout article{background:#1c242a;border:1px solid var(--ui-border);border-radius:4px}.shell .character-panel{background:radial-gradient(ellipse at 65% 30%,#49574a26,transparent 65%),#172027;border:0;border-top:1px solid var(--ui-border)}.shell .character-attributes{background:transparent;box-shadow:none}.shell .paper-doll figure{background:radial-gradient(ellipse,#c1a77210,transparent 60%)}.shell .paper-doll figcaption{font-size:.875rem}.shell .workshop-bench{border:1px solid var(--ui-border);box-shadow:none;background:#141e2d}.shell .workshop-heading{border-bottom:1px solid var(--ui-border);padding-bottom:15px}.shell .enchanter-operation,.shell .enchanter-item{box-shadow:none;background:transparent}.shell .workshop-operations button{background:#151b21;border-color:var(--ui-border)}.shell .workshop-operations button[aria-pressed=true]{border-color:#ccab71;background:#ccab7112}.shell .community-chat{background:linear-gradient(180deg,#16222a,#10181e);border-color:#786747}.shell .chat-message{background:transparent;box-shadow:none}.shell .raid-company{border:0;border-bottom:1px solid var(--ui-border)}.shell .raid-role-counts>span{border:0;background:#c8b16d0b;border-radius:3px}.shell .raid-frame,.shell .party-member{box-shadow:none}.shell .settings-panel{background:#171f26;border-color:var(--ui-border)}.shell .market-header{border-radius:4px 4px 0 0}.shell .market-inventory,.shell .market-categories{background:#111927}.shell .market-main{background:#101827}.shell .alpha-notice{font-size:.75rem}.shell .town-paths{background:#172027;border-color:var(--ui-border);box-shadow:none}.shell .town-path{background:transparent;border:0;border-bottom:1px solid var(--ui-border);border-radius:0}.shell .town-paths h2{font-size:1.25rem}.shell .town-path small{font-size:.6875rem}
/* Gathering has a real activity scene; the clock stays readable and authoritative. */
.squire-scene{position:relative;overflow:hidden;background:radial-gradient(ellipse at 55% 62%,#b79a5c1c,transparent 70%),#121c23;border-radius:4px;height:145px;isolation:isolate}.squire-scene svg{height:100%;width:100%;display:block}.squire-scene.herbalism{background:radial-gradient(ellipse,#80bea327,transparent 70%),#121f23}.squire-scene.woodcutting{background:radial-gradient(ellipse,#91b76a20,transparent 70%),#151f24}.squire-tool{transform-origin:157px 84px}.is-working .squire-tool{animation:squire-strike 1.6s ease-in-out infinite}.is-working .squire-worker{animation:squire-breathe 1.6s ease-in-out infinite;transform-origin:151px 138px}.is-working .squire-sparks{animation:squire-sparks 1.6s ease-out infinite}.is-working .squire-wisp{animation:squire-float 3s ease-in-out infinite}.is-resting .squire-sparks{opacity:0}.squire-trip-progress{position:absolute;bottom:0;left:0;height:3px;width:var(--trip-progress,0%);background:var(--squire-color);transition:width 1s linear}.shell .gather-squire{padding:0 0 18px;background:#141e2d;border:1px solid var(--ui-border);box-shadow:none;overflow:hidden}.gather-squire>.squire-scene{border-radius:0;margin-bottom:16px}.shell .gather-squire>*:not(.squire-scene){margin-left:18px;margin-right:18px}.shell .gather-squire>progress{width:calc(100% - 36px)}.shell .gather-squire h2{font-size:1.5rem;margin-block:4px}.shell .gather-squire p{font-size:.75rem;margin-block:6px}.shell .gather-squire .eyebrow{font-size:.625rem}.shell .gather-squire dl{font-size:.75rem;margin-block:16px}.shell .gather-squire form{gap:8px}.shell .gather-squire select{font-size:.8125rem}.shell .gather-dispatch{padding:0 18px 0 0;gap:18px;border:1px solid #bba57233;background:#1c292c;border-radius:5px;overflow:hidden}.gather-dispatch>.squire-scene{width:210px;flex:0 0 210px;height:128px;border-radius:0}.shell .gather-dispatch h2{font-size:1.25rem}.shell .gather-dispatch p{font-size:.75rem}.shell .gather-clock strong{font:1.625rem/1.3 system-ui;font-variant-numeric:tabular-nums;letter-spacing:.03em}.shell .gather-clock span{font-size:.6875rem}.shell .gather-log{border:0;border-top:1px solid var(--ui-border);padding:18px 0}.shell .gather-log li{padding:10px 0;font-size:.8125rem}.shell .gathering-facts{font-size:.75rem;gap:8px 20px}.shell .gather-material-row .workshop-art{width:34px;height:34px;flex:0 0 34px}.shell .gather-material-row{padding:6px 0;font-size:.75rem}.shell .gather-material-grid{gap:20px}.gather-rules{padding:12px 0;font-size:.75rem}.gather-rules>summary{cursor:pointer;color:#cdb783;min-height:44px}
@keyframes squire-strike{0%,100%{transform:rotate(10deg)}35%{transform:rotate(-37deg)}52%{transform:rotate(17deg)}65%{transform:rotate(10deg)}}@keyframes squire-breathe{0%,100%{transform:rotate(0)}45%{transform:rotate(-2deg)}55%{transform:rotate(2deg)}}@keyframes squire-sparks{0%,47%,75%,100%{opacity:0;transform:translate(0,0)}51%{opacity:1}70%{opacity:0;transform:translate(6px,-6px)}}@keyframes squire-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@media(min-width:1001px){.shell.mmo-shell{padding-left:180px}.shell.mmo-shell>.topbar{padding:10px 24px;grid-template-columns:minmax(0,1fr) auto;min-height:66px}.shell.mmo-shell>.topbar>.wordmark{display:none}.shell.mmo-shell>.topbar>.hero-hud{display:flex;grid-column:1;grid-row:1}.shell.mmo-shell>.topbar>.account-block{grid-column:2}.shell.mmo-shell>.topbar>nav{position:fixed;inset:0 auto 0 0;width:180px;height:100dvh;padding:22px 10px 16px;display:flex!important;flex-direction:column;gap:3px;background:linear-gradient(#22292d,#131a20);border-right:1px solid #ae915333;overflow-y:auto!important}.shell.mmo-shell>.topbar>nav .nav-button{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:12px;min-height:44px;width:100%;padding:10px;text-align:left;flex:none}.shell.mmo-shell>.topbar>nav .nav-button .icon{width:20px;height:20px;flex:0 0 20px;opacity:.8}.shell .nav-brand{display:block;margin-bottom:14px}.shell .nav-brand .wordmark{max-width:145px}.shell .nav-more{display:none}.shell .nav-label-short{display:none}.shell .nav-label-full{display:block}.shell .mmo-shell .combat-grid{min-height:0}.shell .nav-account{margin-top:auto}}
@media(max-width:1000px){.shell.mmo-shell{padding-left:0}.illustrated-heading{padding-right:125px!important}.menu-illustration{width:110px;height:145px;right:5px}.shell .gather-dispatch>.squire-scene{width:150px;flex-basis:150px}}
@media(max-width:650px){.shell .exp-page{padding:14px 12px 30px}.shell :is(h1){font-size:1.6875rem}.shell .secondary,.shell .red-button{min-height:44px}.illustrated-heading{padding:16px 100px 16px 14px!important;min-height:120px!important}.menu-illustration{width:100px;height:125px;right:0;opacity:.8}.illustrated-heading .gathering-facts{display:flex;gap:8px}.shell .gather-squires{gap:14px}.shell .gather-squire{display:block}.shell .gather-squire>.squire-scene{height:130px}.shell .gather-dispatch{display:grid;grid-template-columns:110px 1fr;padding:0;gap:10px}.shell .gather-dispatch>.squire-scene{width:110px;min-width:0;height:135px;grid-row:1/3}.shell .gather-dispatch>div:not(.squire-scene){min-width:0;padding-right:8px}.shell .gather-clock{width:auto;margin:0;padding:0 0 10px!important;text-align:left;border:0}.shell .gather-clock strong{font-size:1.375rem}.shell .gather-dispatch h2{font-size:1.0625rem}.shell .gather-dispatch p{font-size:.6875rem}.shell .gather-material-grid{grid-template-columns:1fr}.shell .quest-card{padding:14px 10px 14px 38px}.quest-card:before{left:10px;font-size:1.125rem}.shell .section-tabs{padding:0 10px}.shell .section-tab{min-height:44px;padding:9px 10px}.shell .ui-help{min-width:44px;min-height:44px}.shell .path-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.shell .market-preview{font-size:.8125rem}.shell .craft-heading.illustrated-heading{padding-right:105px!important}.shell .craft-heading{display:block}.shell .craft-heading>strong{display:block;margin-top:8px}}
@media(prefers-reduced-motion:reduce){.squire-scene *{animation:none!important;transition:none!important}.is-working .squire-sparks{opacity:0}}

/* Shared midnight palette and legible, compact activity controls. */
.shell .market-categories h2{font:600 .6875rem/1.4 system-ui;letter-spacing:.12em;white-space:nowrap}
.shell .illustrated-heading{background:linear-gradient(100deg,#19273a,#111c2de8 64%,#283149)!important}
.shell .illustrated-heading[data-menu-theme=forest],.shell .illustrated-heading[data-menu-theme=herbs]{background:linear-gradient(100deg,#193033,#111d2de8 64%,#1e323c)!important}
.shell .illustrated-heading[data-menu-theme=arcane]{background:linear-gradient(100deg,#26233c,#141b31e8 64%,#2c2943)!important}
.shell .gather-squire{padding:16px;background:#131f2d;border-color:#bda77524}
.shell .gather-squire h2{margin:2px 0;font-size:1.5rem}.shell .gather-squire>p{margin:6px 0;font-size:.8125rem}
.shell .gather-squire progress{margin:12px 0 0}.shell .gather-squire dl{margin:14px 0}.shell .gather-squire dl>div{padding:5px 0}
.shell .gather-squire form{margin-top:12px;gap:8px}.shell .gather-squire label{font-size:.75rem}.shell .gather-squire select{padding:10px;min-height:44px}.shell .gather-squire button{width:100%}
.shell .gather-squire .squire-scene{height:130px;margin:-16px -16px 14px}
.shell .gather-ready{background:transparent;border:0;padding:0;font-size:.8125rem;color:#aeb6c2}
.shell .gathering-facts{font-size:.75rem}.shell .gather-dispatch{background:linear-gradient(110deg,#162a30,#111b2c);border:1px solid #b69c593f}
.shell .gather-log,.shell .gather-coming{padding:18px}.shell .gather-material-row{font-size:.8125rem}.shell .gather-material-row .workshop-art{width:38px;height:38px}
@media(max-width:650px){.shell .illustrated-heading{min-height:135px!important}.shell .illustrated-heading .menu-illustration{height:115px;width:85px;right:8px}.shell .gather-squire .squire-scene{height:120px}.shell .gather-squire form{margin-top:12px}}

/* Dawn Exchange: each upgrade has its own readable, original product illustration. */
.shell .crown-shop-heading{padding:15px 24px;background:radial-gradient(ellipse at 70% 45%,#71604c35,transparent 65%),linear-gradient(100deg,#19273a,#111a2b);border-bottom:1px solid #b9a07155;margin-bottom:14px;min-height:170px}
.shell .crown-merchant>img{height:150px}.shell .crown-merchant h1{font-size:2rem}.shell .crown-merchant p{margin:6px 0}
.shell .crown-wallet{border:0;box-shadow:none;background:none;padding:0;gap:12px}.shell .crown-wallet .crown-product-art{width:70px;height:70px}.shell .crown-wallet strong{font:1.125rem Georgia;color:#dfc99b}.shell .crown-wallet small{font-size:.6875rem;color:#bbc2cd}
.shell .crown-alpha-notice{padding:12px 16px;background:#cbb4750b;border:0;border-left:2px solid #c1a571;font-size:.8125rem}.shell .crown-alpha-notice p{font-size:.75rem;line-height:1.5;margin:3px 0 0}
.shell .crown-benefits{font-size:.75rem;padding:12px 0;margin:10px 0 18px;gap:12px 24px}
.crown-categories{display:flex;gap:24px;border-bottom:1px solid #d0b27b33;padding:0 0 12px}.crown-categories a{font:500 .8125rem system-ui;text-decoration:none}.crown-categories a:hover{color:#ffebb6}
.shell .crown-category{scroll-margin-top:85px;margin:24px 0 30px}.shell .crown-category>h2{font:500 1.5rem Georgia;border:0;padding:0;margin:0 0 12px;color:#ddd4bf}
.shell .crown-products{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.shell .crown-products article{display:flex;flex-direction:column;align-items:stretch;padding:0;position:relative;overflow:hidden;border:1px solid #c7aa7040;border-radius:4px;background:linear-gradient(160deg,#1b293d,#0e1726);box-shadow:0 6px 18px #0002}
.crown-art-stage{height:210px;position:relative;background:radial-gradient(ellipse at 50% 65%,#b5986140,transparent 63%);border-bottom:1px solid #c7aa7022}.crown-product-art{display:block;width:100%;height:100%}.crown-art-stage .crown-product-art{padding:18px 24px;box-sizing:border-box;filter:drop-shadow(0 7px 8px #0008)}
.crown-scope{position:absolute;left:14px;top:12px;font:min(.625rem,12px) system-ui;text-transform:uppercase;letter-spacing:.1em;color:#bfc4cf;background:#0b142ccc;padding:4px 6px}
.crown-product-copy{padding:16px;display:flex;flex-direction:column;flex:1;min-width:0}.shell .crown-products h3{font:1.25rem/1.3 Georgia;margin:0 0 6px;color:#e9d7af}.shell .crown-products p{font:.8125rem/1.5 system-ui;margin:0 0 6px;color:#d0d5df}.crown-product-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:auto 0 10px;padding-top:8px}.crown-product-meta small{font-size:.6875rem;color:#aeb8c6}.crown-bonus-list{display:grid;grid-template-columns:1fr 1fr;gap:6px;font-size:.6875rem;color:#b7cbaa}.shell .crown-products button[data-shop-claim]{width:100%;font-size:.75rem}.shell .crown-shop-footer{border-color:#c7aa7033}.shell .crown-products button:disabled{opacity:.6}
@media(max-width:1150px){.shell .crown-products{grid-template-columns:repeat(2,minmax(0,1fr))}.shell .crown-wallet{display:none}}
@media(max-width:650px){.shell .crown-shop-heading{padding:12px;min-height:135px}.shell .crown-merchant h1{font-size:1.5625rem}.shell .crown-merchant>img{height:120px}.shell .crown-products{grid-template-columns:1fr}.shell .crown-products article{display:grid;grid-template-columns:100px minmax(0,1fr)}.crown-art-stage{height:100%;min-height:180px;border:0;background:radial-gradient(ellipse,#b5986133,transparent 70%)}.crown-art-stage .crown-product-art{padding:4px;height:160px;margin-top:26px}.crown-scope{left:8px;top:12px;font-size:min(.5625rem,11px)}.crown-product-copy{padding:16px 12px}.shell .crown-products h3{font-size:1.125rem}.crown-categories{gap:20px;overflow-x:auto}.shell .crown-category>h2{font-size:1.375rem}.crown-product-meta{flex-wrap:wrap;gap:2px}}

.shell .craft-hero-art .workshop-art{flex-basis:130px;width:130px;height:145px}.shell .craft-workbench{background:#141e2d}.shell .craft-workbench>nav{background:#101927}
.shell .craft-ingredient{position:relative}.shell .craft-options:before{content:none}
@media(min-width:1001px){.shell.mmo-shell .topbar{height:0;min-height:0;padding:0;border:0}.shell .topbar .account-name{display:block;min-width:0;font:.75rem system-ui}.shell .topbar .account-name b{display:block;overflow:hidden;text-overflow:ellipsis}.shell .topbar .account-name small{font-size:.6875rem}}
@media(max-width:900px){.shell .craft-hero-art .workshop-art{flex-basis:100px;width:100px;height:120px}}
@media(max-width:400px){.shell .craft-hero-art .workshop-art{flex-basis:75px;width:75px;height:100px}}

.craft-ingredient-wrap{min-width:0}.craft-ingredient-wrap>.eyebrow{font-size:.5625rem!important;letter-spacing:.06em!important;margin:0 0 4px;color:#aeb6c2!important}@media(max-width:650px){.craft-ingredient-wrap{width:100%}.shell .craft-ingredient-wrap>.eyebrow{font-size:.5rem!important}}

.town-hero>.town-player-name{width:max-content;white-space:nowrap;overflow-wrap:normal;word-break:normal;left:50%;transform:translateX(-50%)}
.modal-backdrop .ornate{background:linear-gradient(145deg,#1c293c,#101927);border:1px solid #bd9d674d;border-radius:6px;box-shadow:0 16px 60px #0009;color:#e5e3db}.modal-backdrop :is(h1,h2,h3){color:#e8d5ad}.modal-backdrop :is(input,select,textarea){background:#0d1726;color:#e5e3db;border:1px solid #9ca8b04d}.item-hover{background:#111b2bf7;border-color:#bca169;color:#dce1e8}.item-hover h3{color:#e8d5ad}.shell h1{color:#eee5cd}.shell .crown-alpha-notice>small{display:block;margin-top:5px;font-size:.6875rem;color:#c0c8d3}

.shell .quest-card{padding-left:132px;min-height:125px}.shell .quest-card:before{display:none}.quest-location-art{position:absolute;left:0;top:18px;width:110px;height:90px;object-fit:cover;border:1px solid #bca3744d;mask-image:linear-gradient(90deg,#000 80%,transparent)}
@media(max-width:600px){.shell .quest-card{padding:14px 6px 14px 80px}.quest-location-art{width:66px;height:76px;top:18px}.shell .quest-card h3{font-size:1.0625rem}.shell .quest-card p{font-size:.75rem}}

.shell.mmo-shell.wayfarer-shell .topbar>nav{background:linear-gradient(180deg,#121d2c,#0b1320);border-right:1px solid #bda16d35}
.shell .guild-page .exp-panel{border:0;border-top:1px solid #c7ac7340;background:#111b2a}.shell .guild-task-grid article{background:transparent;border:0;border-bottom:1px solid #c7ac7320}.guild-hunt-rules{font-size:.75rem;color:#adb8c6;margin-top:14px}.shell .guild-upgrade{position:relative;min-height:170px;padding:20px 16px;background:radial-gradient(ellipse at 50% 0,#65786b20,transparent 75%),#111b2a}.shell .guild-upgrade .guild-emblem{font-size:2rem;opacity:.85;margin-bottom:12px}.shell .guild-roster th,.shell .guild-roster td{padding:10px 14px}

@media(max-width:650px){.shell .illustrated-heading{padding:18px 14px!important;min-height:145px!important}.shell .illustrated-heading>.eyebrow,.shell .illustrated-heading>h1,.shell .illustrated-heading>p{max-width:calc(100% - 70px)}.shell .illustrated-heading>p{font-size:.75rem;margin:5px 0}.shell .illustrated-heading>h1{font-size:1.6875rem;margin:5px 0 8px}.shell .illustrated-heading .menu-illustration{top:14px;bottom:auto;width:70px;height:100px}.shell .illustrated-heading>.az-actions{position:relative;margin-top:12px;display:flex;flex-wrap:wrap;gap:6px;padding:0}.shell .illustrated-heading>.az-actions>*{flex:none;width:auto;font-size:.6875rem;padding:8px 10px;min-height:44px}.shell .illustrated-heading .gathering-facts{max-width:100%;gap:8px;position:relative;font-size:.6875rem}.shell .market-heading aside{margin-right:58px}.shell .craft-heading>div{max-width:calc(100% - 70px)}}

.settings-modal{width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 32px);overflow:auto;padding:24px}.settings-modal>h2{margin:0 0 14px;font:1.6875rem Georgia}.settings-modal h3{font:1.125rem Georgia}.settings-modal .alpha-notice{font-size:.75rem}.settings-modal .small-note{font-size:.75rem;line-height:1.5;color:#b4becb}.settings-modal .checkbox-row{min-height:44px;display:flex;align-items:center;gap:10px;font-size:.8125rem}.settings-modal .character-reset{border:0;background:none;padding:0}.settings-help,.settings-danger{border-block:1px solid #cfb07022;padding:14px 0;margin:15px 0;font-size:.8125rem}.settings-help h3{display:none}.settings-danger>summary{color:#e1a49b}
@media(max-width:400px){.shell .nav-account{gap:4px}.shell .nav-account .nav-tools{gap:4px}.shell .nav-account .nav-tools>.secondary{width:44px;padding:8px}.shell .nav-account .nav-inventory{padding:8px;font-size:.75rem}.shell .nav-account .chat-launcher{padding:7px;font-size:.75rem}.settings-modal{padding:16px}}
@media(max-width:650px){.shell .craft-heading.illustrated-heading{padding:18px 14px!important}.shell .craft-heading h1{overflow-wrap:normal;word-break:normal}}
/* A single canvas per menu; dividers replace nested panel frames. */
.shell .exp-page>.exp-panel,.shell .party-workspace :is(.party-manage,.party-records,.party-roster-panel),.shell .guild-page .exp-panel{background:transparent;border:0;border-radius:0;box-shadow:none;padding:18px 0;margin:14px 0;border-bottom:1px solid #c8af7826}
.shell .exp-page .exp-panel>.exp-panel{padding:12px 0}.shell .exp-page>.exp-heading{border-radius:0;box-shadow:none}.shell .section-tabs{background:transparent;border:0;border-bottom:1px solid #c8af7833;gap:20px;padding:0 0 5px}.shell .section-tabs>.section-tab{border:0;border-radius:0;background:transparent;color:#bfc7d5;min-height:44px;border-bottom:2px solid transparent;padding:8px 4px}.shell .section-tabs>.section-tab.selected{background:transparent;border-color:#d0b27b;color:#f4dab0}.shell .section-tabs>.section-tab:hover{color:#fff0d6}
.shell .exp-page details>summary{min-height:44px;align-content:center;cursor:pointer}.menu-guide-link{display:inline-block;padding:14px 0;font-size:.8125rem}.shell :is(.secondary,.red-button,.text-button){min-height:44px}.shell .paths-budgets{display:flex;flex-direction:column;align-items:end;gap:7px}.path-reset-button{align-self:end}.reset-cost{color:#ecd3a1;font-size:1.375rem}.paths-page [aria-busy=true]{opacity:.65;cursor:wait}
/* Party: portraits, compact status rows and one set of actions. */
.shell .party-overview{padding:14px 0;background:none;border:0;border-bottom:1px solid #c8af7833}.shell .party-roster-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px}.shell .party-member{border:0;border-radius:0;background:none;padding:16px 0;grid-template-columns:64px minmax(0,1fr);border-bottom:1px solid #c8af7826;column-gap:12px}.party-member>.tavern-portrait{grid-row:1/3;width:64px;height:76px}.shell .party-member h2{font-size:1.125rem;margin:0 0 5px}.shell .party-member p{font-size:.75rem;margin:0}.shell .party-member-role{grid-column:2;text-align:left;font-size:.6875rem;margin-top:5px}.shell .leader-label{font-size:.5625rem;margin-left:8px;color:#e5c581}.shell .party-recruitment{border:0;background:none;padding:12px 0}.shell .party-recruitment>header{display:none}.shell .recruitment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 22px}.shell .recruitment-card{border:0;border-bottom:1px solid #c8af7826;background:none;border-radius:0;padding:12px 0}.party-recruit-section{border-bottom:1px solid #c8af7826;padding:8px 0}.party-recruit-section>summary{font:1.125rem Georgia;color:#e7d1a8}.party-recruit-section>summary>span{font:.75rem system-ui;color:#aeb8c7;margin-left:10px}.shell .party-manage>summary,.shell .party-records>summary{font:1.125rem Georgia;color:#e7d1a8}.shell .party-manage>summary span,.shell .party-records>summary span{font:.75rem system-ui;color:#aeb8c7}
/* Guild: a banner, a member ledger, progress and four illustrated boons. */
.shell .guild-summary{background:none;border:0;border-block:1px solid #c8af7833;padding:12px 0}.shell .guild-task-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.shell .guild-task-grid article{padding:12px 0;border:0;background:none}.shell .guild-task-grid h3{font:.875rem system-ui;margin:0 0 8px}.shell .guild-task-grid progress{height:7px}.shell .guild-task-grid p{font-size:.75rem;margin:6px 0}.shell .guild-upgrades{gap:0;grid-template-columns:repeat(4,minmax(0,1fr));border-block:1px solid #c8af7826}.shell .guild-upgrade{border:0;border-radius:0;background:radial-gradient(ellipse at 50% 30%,#b8a05c18,transparent 75%);padding:20px 12px;text-align:center;min-height:0}.shell .guild-upgrade h3{font:.9375rem Georgia;margin:6px 0}.shell .guild-upgrade strong{font:.8125rem system-ui}.shell .guild-upgrade p{font-size:.6875rem;margin:6px 0}.shell .guild-upgrade button{font-size:.6875rem;padding:7px 10px}.shell .guild-emblem{font-size:2.25rem;color:#ddc487}.guild-member-seal{display:inline-grid;place-items:center;float:left;width:32px;height:38px;margin-right:12px;background:linear-gradient(#75684970,#283549);clip-path:polygon(0 0,100% 0,100% 78%,50% 100%,0 78%);font:1.25rem Georgia;color:#ecd5a4}.shell .guild-roster{background:none}.shell .guild-roster :is(th,td){background:none;border-color:#c8af7822}.shell .guild-directory{display:block}.shell .guild-directory-row{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:4px 12px;padding:18px 0;border-bottom:1px solid #c8af7826;background:none}.guild-banner{font:2.25rem Georgia;color:#d8bd8b;grid-row:1/4}.shell .guild-directory-row h3{margin:0}.shell .guild-directory-row p{grid-column:2;margin:0;font-size:.8125rem}.shell .guild-directory-row small{grid-column:2;font-size:.6875rem}.shell .guild-directory-row button{grid-column:3;grid-row:1/4;align-self:center}.shell .guild-page form{max-width:720px}.shell .guild-footer{padding:15px 0}
/* Storage: all items remain visible; only the selection needs a command area. */
.shell .storage-columns{display:grid;grid-template-columns:1fr 1fr;gap:30px}.storage-columns>section>header{display:flex;align-items:center;justify-content:space-between;padding:16px 0}.shell .storage-columns h2{margin:0;font:1.3125rem Georgia}.storage-columns>section>header>span,.storage-rules{font:.75rem system-ui;color:#adb8c8}.storage-rules{padding:12px 0;border-bottom:1px solid #c8af7826}.shell .storage-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px;align-content:start;min-height:150px;max-height:420px;overflow:auto;padding:4px}.shell .storage-slot{position:relative;width:100%;aspect-ratio:1;max-width:90px;min-height:64px;padding:4px;background:radial-gradient(ellipse,#bba77818,#0d1522);border:1px solid #6c756e5c;border-radius:3px}.shell .storage-slot>.gear-icon{width:100%;height:100%;display:block}.shell .storage-slot.selected{outline:2px solid #eccb87;outline-offset:1px}.storage-lock{position:absolute;right:5px;bottom:3px;color:#f0d9a7;font-size:.75rem}.storage-grid>.storage-empty{grid-column:1/-1;font-size:.8125rem}.storage-selection{display:flex;gap:16px;align-items:center;margin:22px 0;padding:18px 0;border-block:1px solid #c8af7833;min-height:100px}.storage-selection-art{flex:0 0 64px}.storage-selection-art>.gear-icon{width:64px;height:64px}.shell .storage-selection-name h2{font:1.125rem Georgia;margin:0 0 4px}.storage-selection-name>small{font-size:.75rem;color:#aeb8c7}.storage-selection-name>p{font-size:.75rem;color:#dfb6a4;margin:5px 0}.storage-selection-actions{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}.storage-empty-glyph{font:2.625rem Georgia;color:#c0a374}.storage-materials{padding:10px 0}.storage-preview>header{display:flex;gap:14px;align-items:center}.storage-preview>header>.gear-icon{width:60px;height:60px;flex:none}.storage-preview h3{font:1.25rem Georgia;margin:0 0 5px}.storage-preview small{font-size:.75rem;color:#b9c1cd}.storage-hover{width:min(360px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto}
@media(max-width:800px){.shell .party-roster-panel,.shell .recruitment-grid{grid-template-columns:1fr}.shell .guild-upgrades{grid-template-columns:repeat(2,minmax(0,1fr))}.shell .guild-directory-row{grid-template-columns:36px minmax(0,1fr)}.shell .guild-directory-row button{grid-column:2;grid-row:auto;justify-self:start}.shell .storage-columns{gap:14px}.shell .storage-grid{grid-template-columns:repeat(auto-fill,minmax(54px,1fr));gap:5px}.shell .storage-slot{min-height:54px}.storage-selection{flex-wrap:wrap}.storage-selection-actions{width:100%;margin:0}.storage-selection-name{flex:1}.shell .guild-task-grid{grid-template-columns:1fr;gap:2px}}
@media(max-width:450px){.shell .storage-columns{grid-template-columns:1fr}.shell .storage-grid{min-height:60px;max-height:245px;grid-template-columns:repeat(auto-fill,minmax(58px,1fr))}.shell .storage-slot{max-width:74px}.shell .paths-heading{align-items:start}.shell .paths-budgets{align-items:start}.path-reset-button{align-self:start}.shell .guild-roster :is(th,td){padding:10px 5px;font-size:.75rem}.guild-member-seal{display:none}}
.shell .party-member{display:grid;align-items:center}.shell .party-member-role{margin-left:0;max-width:none}

.path-passive-targets{padding:12px 0;border-block:1px solid #cbb27925}.path-passive-targets>strong{font:.6875rem system-ui;text-transform:uppercase;letter-spacing:.12em;color:var(--ui-gold,#d3b776)}.path-passive-targets>div{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.path-passive-targets .text-button{display:inline-flex;align-items:center;gap:7px;text-align:left;padding:5px 7px;font-size:.75rem;min-height:44px}.path-passive-targets .path-art{width:26px;height:26px;flex:none}.path-global-effect{font-size:.75rem;color:#b1bdc8;align-self:center}

.crown-offline-cap{padding:8px 0;color:#b5becb}.crown-offline-cap b{font:1.625rem Georgia,serif;color:#efd39c}.crown-offline-cap progress{display:block;width:100%;height:5px;margin:8px 0;accent-color:#d6b773}.crown-offline-cap small{color:#dcc798}

.enemy-corpses{position:absolute;inset:0;z-index:25;pointer-events:none}

/* Combat ledger: skill art and effect contributions lead; counters stay optional. */
.meter-detail-backdrop .meter-visual{width:min(690px,calc(100vw - 24px));padding:0 24px 18px;background:radial-gradient(ellipse at 0 0,color-mix(in srgb,var(--meter-accent) 14%,transparent),transparent 55%),#0d1421;border:1px solid #9d84564f;border-radius:12px;box-shadow:0 24px 100px #000b;color:#eee5d5}.meter-visual .meter-hero{display:flex;align-items:center;gap:14px;padding:22px 0 14px;border:0;background:none}.meter-visual .meter-crest{display:grid;place-items:center;width:52px;height:60px;flex:none;font:2rem Georgia;color:var(--meter-accent);background:linear-gradient(145deg,#cbb27824,#1a2434);clip-path:polygon(12% 0,88% 0,100% 18%,100% 70%,50% 100%,0 70%,0 18%)}.meter-visual .meter-heading{min-width:0;flex:1}.meter-visual .eyebrow{font:.625rem system-ui;letter-spacing:.12em;color:var(--meter-accent);margin:0 0 6px}.meter-visual .meter-hero h4{font:1.5625rem Georgia,serif;line-height:1.15;color:#f2e9d8;margin:0}.meter-visual .meter-hero button{width:44px;min-height:44px;padding:0;border:0;background:transparent;color:#b8c1cf;font:1.25rem system-ui;align-self:start}.meter-overview{display:flex;align-items:center;gap:22px;padding:8px 0 20px;border-bottom:1px solid #b499682f;font:.75rem system-ui;color:#b1bdcd;font-variant-numeric:tabular-nums}.meter-overview>strong{font:2rem Georgia;color:var(--meter-accent)}.meter-overview small{font:.6875rem system-ui;color:#abb7c8}.meter-overview>span>b{color:#e7decd}.meter-overview>span:last-child{margin-left:auto;text-align:right}.meter-overview>span:last-child small{display:block;margin-top:4px}.meter-skill{padding:18px 0 8px;border-bottom:1px solid #b4996824}.meter-skill-top{display:flex;align-items:center;gap:12px}.meter-skill-art{display:grid;place-items:center;width:42px;height:42px;flex:none;border-radius:8px;background:#1b2637;color:var(--meter-accent);overflow:hidden}.meter-skill-art .path-art{width:42px;height:42px;display:block}.meter-skill-art svg{width:100%;height:100%}.meter-skill-title{min-width:0;flex:1}.meter-skill-title h5{font:1rem Georgia;color:#eaddc4;margin:0 0 3px;overflow-wrap:anywhere}.meter-skill-title>span{font:.6875rem system-ui;color:#a7b3c4}.meter-skill-total{text-align:right;font-variant-numeric:tabular-nums}.meter-skill-total strong{font:1rem system-ui;color:#f1e2c9;display:block}.meter-skill-total small{font:.6875rem system-ui;color:#a8b4c5}.meter-contribution{height:3px;margin:12px 0 8px;background:#ffffff09;overflow:hidden}.meter-contribution>i{display:block;height:100%;background:var(--meter-accent)}.meter-effect-list{padding-left:6px}.meter-effect{display:flex;align-items:center;gap:10px;margin:9px 0;color:var(--effect-color)}.meter-effect-symbol{width:22px;text-align:center;font:1.1875rem Georgia}.meter-effect-body{flex:1;min-width:0}.meter-effect-body>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font:.75rem system-ui}.meter-effect-body b{font-weight:500;font-variant-numeric:tabular-nums}.meter-effect-track{height:2px;background:#ffffff04;margin-top:5px}.meter-effect-track i{display:block;height:100%;background:var(--effect-color);opacity:.55}.meter-visual .meter-skill details{border:0;background:none;margin:0;padding:0}.meter-visual .meter-skill summary{display:list-item;padding:8px 0;min-height:44px;box-sizing:border-box;font:.6875rem system-ui;color:#a9b7ca;border:0;cursor:pointer}.meter-visual .meter-effect-detail{border:0;background:none;padding:0;margin:12px 0}.meter-visual h6{margin:0 0 6px;font:.75rem system-ui;color:#d4c5a7}.meter-visual .meter-effect-stats{display:flex;flex-wrap:wrap;gap:12px 24px;margin:0 0 12px}.meter-visual .meter-effect-stats dt{font:.625rem system-ui;color:#93a2b6}.meter-visual .meter-effect-stats dd{font:.8125rem system-ui;color:#e0d6c7;margin:4px 0 0}.meter-counter-note,.meter-visual .meter-unique-effect{font:.6875rem/1.55 system-ui;color:#acb7c6}.meter-method{font:.6875rem/1.5 system-ui;color:#98a6ba;padding-top:16px}.meter-empty{text-align:center;padding:40px 16px;color:#9cabc1}.meter-empty>span{font-size:2.75rem;color:var(--meter-accent)}.meter-empty p{font-size:.8125rem}.meter-visual .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(max-width:480px){.meter-detail-backdrop .meter-visual{padding:0 16px 16px}.meter-visual .meter-hero{padding-top:16px;gap:10px}.meter-visual .meter-hero h4{font-size:1.375rem}.meter-visual .meter-crest{width:38px;height:48px}.meter-overview{gap:12px;flex-wrap:wrap}.meter-overview>strong{font-size:1.6875rem}.meter-overview>span{font-size:.6875rem}.meter-skill-title h5{font-size:.9375rem}}

/* Adventure help and the Tavern share the same compact, illustrated language. */
.solo-help-dialog{box-sizing:border-box;width:min(480px,calc(100vw - 24px));padding:26px!important}.solo-help-dialog h2{font:1.6875rem/1.15 Georgia;margin:8px 0 14px}.solo-help-dialog .help-intro{font:.875rem/1.5 system-ui;color:#d1d9e2;margin:0 0 18px}.help-party{display:flex;justify-content:space-evenly;gap:14px;padding:16px 0;border-block:1px solid #c7ab722b;background:radial-gradient(ellipse,#d2b67615,transparent 75%)}.help-party>div{display:grid;justify-items:center;gap:5px}.help-party .tavern-portrait{width:68px;height:68px;border:1px solid #c4a66b77;border-radius:50%;object-fit:cover}.help-party strong{font:600 .8125rem system-ui;color:#e7cd92}.help-party small{font:.6875rem system-ui;color:#b3c3d0}.help-advice{font:.8125rem/1.5 system-ui;color:#d1d9df;margin:15px 0}.help-more{padding:10px 0;border-top:1px solid #c7ab722b;font:.75rem/1.5 system-ui;color:#bbc8d6}.help-more summary{cursor:pointer;color:#d5bf91}.help-more p{margin:8px 0}.help-upgrade{display:flex;align-items:center;gap:20px;padding:20px 10px;background:linear-gradient(90deg,#ba965320,transparent);border-block:1px solid #c7ab722b}.help-upgrade .gear-icon{flex:none}.help-upgrade strong,.help-upgrade span{display:block}.help-upgrade strong{font:1.125rem Georgia;color:#e9d2a3}.help-upgrade span{margin-top:7px;color:#95c5bf;font-size:.8125rem}.help-crest{font-size:2.625rem!important;color:#d7bb85!important}.help-actions{display:grid;gap:8px;margin:18px 0 4px}.help-actions button{min-height:44px}.help-actions .text-button{border:0;background:none;color:#bcc9d7;font:.8125rem system-ui}.solo-help-dialog .help-consequence{font:.6875rem/1.5 system-ui;color:#a7b6c6;margin:5px 0 12px}.solo-help-dialog .checkbox-row{font:.75rem system-ui;color:#bec9d6;min-height:44px}.solo-help-dialog>.text-link{color:#d7bf8c;background:none;border:0;padding:8px 0;font:.75rem system-ui}
.shell .tavern-welcome{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.tavern-welcome p{margin:0}.tavern-welcome span{white-space:nowrap;color:#b9c5d2;font:.75rem system-ui}.tavern-welcome strong{color:#edce95;font-size:1.1875rem}.tavern-role-guide{display:flex;flex-wrap:wrap;gap:12px 22px;padding:10px 0 18px;border-bottom:1px solid #c7ab722b;color:#b0becb;font:.75rem system-ui}.tavern-role-guide b{color:var(--role-tone);margin-right:5px}.tavern-status{display:flex;align-items:center;gap:12px;padding:14px 0}.tavern-status small{color:#aab9c7}.tavern-recruits{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:26px}.tavern-recruit{padding:24px 0;border-bottom:1px solid #c7ab722b;min-width:0}.tavern-recruit header{display:flex;align-items:center;gap:13px}.tavern-recruit .tavern-portrait{width:84px;height:94px;min-width:84px;border:0;border-bottom:2px solid var(--role-tone);border-radius:4px;object-fit:cover;background:#d8b8740a}.shell .tavern-recruit h2{font:1.3125rem/1.25 Georgia;margin:4px 0;overflow-wrap:anywhere}.tavern-recruit header p{font:.75rem system-ui;margin:5px 0;color:#b5c3d1}.tavern-recruit header small{font:.6875rem system-ui;color:#8da3b6}.tavern-role{font:700 .625rem system-ui;color:var(--role-tone);text-transform:uppercase;letter-spacing:.12em}.tavern-skill-strip{display:flex;flex-wrap:wrap;gap:4px 10px;padding:14px 0 6px;min-height:44px;font:.6875rem/1.6 system-ui;color:#c1cbd7}.tavern-skill-strip span:before{content:'◆';font-size:.375rem;color:var(--role-tone);margin-right:5px;vertical-align:middle}.tavern-skills{font:.75rem/1.5 system-ui;margin-bottom:14px}.tavern-skills summary{color:#cbb68e;cursor:pointer;padding:6px 0}.tavern-skills .companion-skills{padding:0;list-style:none}.tavern-skills li{padding:8px 0;border-bottom:1px solid #c7ab721c}.tavern-skills li span{display:block;color:#afbdcc;font-size:.6875rem}.tavern-recruit>button{width:100%;min-height:44px}.tavern-recruit.is-hired>button{color:#a8d7ba;border-color:#93bc9860}.tavern-about{margin-top:25px;font:.8125rem/1.6 system-ui;max-width:660px}.tavern-about summary{color:#dcc592;cursor:pointer}.tavern-about p{color:#afbdcb}
@media(max-width:1000px){.tavern-recruits{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.tavern-recruits{grid-template-columns:1fr}.tavern-recruit{padding:18px 0;display:grid;grid-template-columns:1fr auto;gap:0 12px}.tavern-recruit header{grid-column:1/-1}.tavern-recruit .tavern-skill-strip{grid-column:1/-1}.tavern-recruit>button{grid-column:2;grid-row:3;align-self:start;width:auto;max-width:160px}.tavern-recruit .tavern-skills{grid-column:1;grid-row:3;margin:0}.tavern-recruit .tavern-skills[open]{grid-column:1/-1;padding-top:44px}.tavern-recruit .tavern-skills[open]>summary{margin-top:-44px;margin-right:160px}.tavern-status{align-items:start;flex-direction:column}.shell .tavern-welcome{align-items:start;flex-direction:column}.solo-help-dialog{padding:20px!important}.help-party{gap:8px}.help-party .tavern-portrait{width:60px;height:60px}}
.tavern-skill-strip .tavern-skill-icon{display:block;width:34px;height:34px;cursor:help}.tavern-skill-icon .path-art{width:34px;height:34px}.tavern-skill-strip .tavern-skill-icon:before{display:none}.skill-area-preview{display:flex;align-items:center;gap:8px;margin:12px 0}.skill-area-preview svg{width:110px;height:64px;flex:none}.skill-area-preview figcaption{display:grid;gap:5px;font:.75rem system-ui}.skill-area-preview small{color:#adbecd;font:.6875rem system-ui}
/* Guild hall: one crest, clear progress, compact permanent bonuses. */
.guild-progression{display:flex;align-items:center;gap:22px;padding:12px 0 22px;border-bottom:1px solid #b6985d44}.guild-level-crest{position:relative;width:76px;height:86px;flex:0 0 76px;color:#f1d09a}.guild-level-crest svg{width:100%;height:100%;fill:#c3a46112;stroke:#c3a461;stroke-width:1.8}.guild-level-crest strong{position:absolute;left:0;right:0;top:39px;text-align:center;font:600 1.625rem Georgia}.guild-level-track{flex:1;min-width:0}.guild-level-track>div{display:flex;justify-content:space-between;gap:12px;color:#d8c393;font:.75rem system-ui}.guild-level-track progress{display:block;width:100%;height:9px!important;margin:13px 0}.guild-level-track small{color:#a8b7c8;font:.6875rem system-ui}.guild-level-buffs{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;padding:18px 0}.guild-level-buffs button{display:grid;grid-template-columns:28px 1fr;gap:3px 8px;align-items:center;text-align:left;padding:8px;background:none;border:0;border-radius:3px;color:#adbbca;min-height:54px}.guild-level-buffs button:hover{background:#c3a46112}.guild-level-buffs i{grid-row:span 2;color:#cdbb89;font:1.5rem Georgia;text-align:center}.guild-level-buffs span{font:.6875rem system-ui}.guild-level-buffs strong{color:#c9dfc4;font:600 .875rem system-ui}.shell .guild-page .section-tabs{padding-inline:0;background:transparent}.guild-summary{display:flex;justify-content:space-between;gap:14px;font:.75rem system-ui;padding:16px 0;color:#a6b5c6}.guild-summary strong{color:#dbbe7f}.guild-overview-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:22px}.shell .guild-page .exp-panel{border:0;border-bottom:1px solid #b6985d30;border-radius:0;background:transparent;box-shadow:none;padding:18px 0;margin:0}.guild-members-section{grid-column:1/-1}.guild-members-section h2{display:flex;align-items:center;justify-content:space-between;gap:12px}.guild-members-section h2 small{font:.6875rem system-ui;color:#a9b6c5}.guild-hunt-section h2{font-size:1.25rem}.guild-task-grid{display:block}.guild-task-grid>article{display:grid;grid-template-columns:1fr auto;gap:6px;margin:14px 0;padding:8px 0;background:none;border:0}.guild-task-grid h3{font:600 .8125rem system-ui;margin:0}.guild-task-grid progress{grid-column:1/-1;width:100%;order:3}.guild-task-grid p{font:.6875rem system-ui;margin:0;color:#c4bd9b}.guild-hunt-rules{margin-top:18px;color:#a3b1be;font-size:.6875rem}.guild-upgrades-section .guild-upgrades{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.shell .guild-page .guild-upgrade{position:relative;padding:14px 0 12px 35px;border:0;border-bottom:1px solid #b6985d22;background:none;border-radius:0}.guild-upgrade .guild-emblem{position:absolute;left:0;top:16px;width:26px;height:26px;margin:0;font-size:1.4375rem}.guild-upgrade h3{font:600 .8125rem system-ui;margin:0 0 6px}.guild-upgrade>strong{font:.75rem system-ui;color:#b9cfba}.guild-upgrade p{font-size:.6875rem;margin:6px 0}.guild-upgrade button{font-size:.6875rem!important;padding:7px!important;min-height:44px!important}.guild-roster{width:100%;border-collapse:collapse}.guild-roster th,.guild-roster td{text-align:left;padding:10px 8px}.guild-roster td:first-child{position:relative;padding-left:48px}.guild-roster td:first-child small{display:block;margin-top:4px;color:#99acbd;font:.6875rem system-ui}.guild-member-seal{position:absolute;left:4px;top:12px;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;border:1px solid #b89d6244;background:#283648;color:#d4bd87}.guild-roster td:nth-child(2){text-transform:capitalize}.shell .guild-directory-row{display:grid;grid-template-columns:64px 1fr auto;gap:5px 15px;background:transparent!important;border:0!important;border-bottom:1px solid #b6985d30!important;border-radius:0!important;padding:18px 0!important}.guild-directory-row .guild-level-crest{grid-row:span 4;transform:scale(.72);transform-origin:top left;width:64px;margin-bottom:-24px}.guild-directory-row h3{margin:0}.guild-directory-row>p,.guild-directory-row>small{grid-column:2;margin:0}.guild-directory-row>button{grid-column:3;grid-row:1/4;align-self:center}.guild-footer{display:flex;align-items:center;gap:14px;padding-top:24px;color:#95a6b8;font-size:.6875rem}
/* Rankings: restrained medals and readable rows, shared with the guild hall. */
.rank-tabs{display:flex;gap:7px;border-bottom:1px solid #b6985d44}.rank-tabs button{display:flex;align-items:center;gap:9px;background:none;border:0;border-bottom:2px solid transparent;color:#a7b6c6;padding:13px 18px;font:.8125rem system-ui;min-height:48px}.rank-tabs button span{font-size:1.1875rem;color:#c3a461}.rank-tabs button[aria-pressed=true]{color:#eed39a;border-color:#d0ad6a;background:#b6985d0b}.rank-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:24px 0 10px}.rank-heading h2{margin:0 0 6px;font:1.5rem Georgia;color:#e1d1ad}.rank-heading p{margin:0;color:#acb9c7;font:.75rem/1.6 system-ui}.rank-filters{display:flex;gap:12px;flex-wrap:wrap}.rank-filters label{font:.6875rem system-ui;color:#abbbca;min-width:9.375rem;max-width:18.75rem}.rank-filters select{display:block;width:100%;margin-top:5px;min-height:44px}.rank-honours{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px;padding:26px 0;border-bottom:1px solid #b6985d40;margin-bottom:18px}.rank-honour{display:grid;grid-template-columns:46px 1fr;column-gap:12px;align-items:center;min-width:0}.rank-honour svg{width:42px;height:42px;fill:#b6985d12;stroke:#b8aa87;stroke-width:1.3;grid-row:1/4}.rank-place-1 svg{stroke:#ecc979;filter:drop-shadow(0 0 12px #b99b5550)}.rank-place-2 svg{stroke:#b7c4d7}.rank-place-3 svg{stroke:#ba8a64}.rank-honour span{font:.625rem system-ui;color:#95a8bc}.rank-honour strong{font:500 1rem/1.4 Georgia;color:#e5d5b4;overflow-wrap:anywhere}.rank-honour b{font:.75rem/1.7 system-ui;color:#b8c8d5;font-variant-numeric:tabular-nums}.rank-table{border-collapse:collapse;width:100%;table-layout:fixed}.rank-table th:first-child{width:70px}.rank-table th:last-child{width:140px;text-align:right}.rank-table th,.rank-table td{text-align:left;padding:14px 12px;border-bottom:1px solid #91a4bd16}.rank-table td{background:transparent}.rank-table tbody tr:nth-child(even){background:#6b83a707}.rank-table tr.own{background:#b89d6213}.rank-table small{display:block;color:#97aabd;font:.6875rem system-ui;margin-top:5px}.rank-table strong{font:600 .8125rem/1.5 system-ui;color:#deddd2;overflow-wrap:anywhere}.rank-number{display:inline-grid;place-items:center;width:30px;height:32px;font:1.125rem Georgia;color:#aaa98f}.rank-table tr:nth-child(-n+3) .rank-number{color:#e6c279;border-bottom:1px solid #b6985d66}.rank-table td.rank-score{text-align:right;color:#e6cd9a;font:600 .9375rem system-ui;font-variant-numeric:tabular-nums}.rank-rules{margin-top:20px;color:#94a8bc;font:.6875rem/1.7 system-ui;max-width:95ch}.rank-rules a{white-space:nowrap}.rank-roster{margin-top:7px;color:#a8b8c9;font-size:.6875rem}.rank-roster p{max-width:60ch;font-size:.75rem}.rank-empty{padding:40px 20px;text-align:center;color:#a4b6c8}.rank-empty svg{width:58px;fill:#b6985d12;stroke:#b6985d}.rank-empty h3{font:1.4375rem Georgia;color:#d9c99f}.rank-empty p{font-size:.8125rem}
@media(max-width:1050px){.guild-level-buffs{grid-template-columns:repeat(4,minmax(0,1fr))}.guild-overview-grid{grid-template-columns:1fr}.guild-upgrades-section{order:3}.rank-heading{align-items:start;flex-direction:column}.rank-honours{gap:12px}.rank-honour{grid-template-columns:30px 1fr;gap:4px 7px}.rank-honour svg{width:27px}.rank-honour strong{font-size:.875rem}}
@media(max-width:600px){.guild-progression{gap:12px;flex-wrap:wrap}.guild-progression>a{margin-left:88px}.guild-level-track>div{flex-direction:column;gap:5px}.guild-level-buffs{grid-template-columns:repeat(3,minmax(0,1fr))}.guild-level-buffs button{padding:5px 0;gap:2px 5px}.guild-summary{flex-direction:column;gap:7px}.guild-task-grid>article{display:block}.guild-task-grid p{margin:6px 0}.guild-page .guild-directory-row{grid-template-columns:52px 1fr;gap:5px 10px}.guild-directory-row>button{grid-column:2;grid-row:auto;justify-self:start}.guild-roster th,.guild-roster td{font-size:.6875rem!important;padding:10px 5px}.guild-roster td:first-child{padding-left:0}.guild-member-seal{display:none}.guild-footer{align-items:start;flex-direction:column}.rank-tabs{display:grid;grid-template-columns:1fr 1fr;gap:0}.rank-tabs button{padding:10px 8px;gap:7px;font-size:.75rem}.rank-table th:first-child{width:35px}.rank-table th:last-child{width:90px}.rank-table th,.rank-table td{padding:12px 5px}.rank-table strong{font-size:.75rem}.rank-table td.rank-score{font-size:.8125rem}.rank-honour{display:flex;flex-direction:column;align-items:start;gap:3px}.rank-honour strong{font-size:.8125rem}.rank-honour svg{width:30px;height:30px}.rank-filters{width:100%}.rank-filters label{flex:1;min-width:120px;max-width:100%}}
.shell .guild-page .guild-task-grid{display:block}.shell .guild-page .guild-task-grid article{display:grid;grid-template-columns:1fr auto;gap:6px;padding:14px 0;margin:6px 0}.shell .guild-page .guild-task-grid h3,.shell .guild-page .guild-task-grid p{margin:0;font:.75rem/1.5 system-ui}.shell .guild-page .guild-upgrade{text-align:left}.shell .guild-page .guild-upgrade .guild-emblem{font-size:1.4375rem;margin:0}.shell .guild-page .guild-upgrade h3{font:600 .8125rem system-ui;margin:0 0 6px}.shell .guild-page .guild-upgrade strong{font:.75rem system-ui}.guild-hunt-section{align-self:start}
@media(max-width:600px){.shell .guild-page .guild-task-grid article{display:block}.shell .guild-page .guild-task-grid p{margin:7px 0}}
@media(max-width:600px){.guild-progression>.text-link{flex:0 0 calc(100% - 88px);margin-left:88px;text-align:left}.guild-level-track{flex:1 1 calc(100% - 88px)}.guild-level-track small{display:block;line-height:1.5}.guild-level-track progress{width:100%}}

/* Guild upgrade actions stay aligned and readable on narrow screens. */
.shell .guild-page .guild-upgrade{display:flex;flex-direction:column;align-items:stretch;gap:6px}.shell .guild-page .guild-upgrade p{margin:0 0 6px}.shell .guild-page .guild-upgrade button{margin-top:auto;min-height:44px!important;width:100%;white-space:normal;line-height:1.4}
@media(max-width:540px){.shell .guild-page .guild-upgrades{grid-template-columns:minmax(0,1fr)}.shell .guild-page .guild-upgrade{padding-block:16px}.shell .guild-page .guild-upgrade button{align-self:start;width:auto;min-width:160px}}

/* Adventurer rankings: identity and progress stay close together. */
.rankings-page{max-width:1100px;margin-inline:auto}.adventurer-ranks{list-style:none;margin:18px 0;padding:0;display:grid;gap:8px}.adventurer-rank{display:grid;grid-template-columns:38px 54px minmax(100px,1fr) 58px minmax(170px,230px);align-items:center;gap:14px;padding:14px 18px;background:linear-gradient(100deg,#1a2630,#101923);border:1px solid #56616b55;border-radius:8px}.adventurer-rank.own{border-color:#d3b273;background:linear-gradient(100deg,#443b244d,#182630)}.rank-medal{position:relative;display:grid;place-items:center;color:#b9b9b0;font-size:1.0625rem}.rank-medal svg{width:32px;height:32px;fill:none;stroke:currentColor;stroke-width:1.3}.rank-place-1 .rank-medal{color:#ebcb7d}.rank-place-2 .rank-medal{color:#c9d9e7}.rank-place-3 .rank-medal{color:#c79c7b}.rank-portrait{width:52px;height:52px;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:#273742;border:1px solid #9e8a6155;font:1.5rem Georgia}.rank-portrait img{width:100%;height:100%;object-fit:cover}.rank-identity{min-width:0;display:grid;gap:3px}.rank-identity .text-button{font-size:1rem;padding:4px 0;min-height:44px;text-align:left;overflow-wrap:anywhere;color:#efdbac}.rank-identity>span{font-size:.75rem;color:#aebfc9}.rank-you{font:.6875rem Arial;color:#e9cc88;margin-left:6px;border:1px solid #b3976255;border-radius:8px;padding:2px 6px}.rank-level{text-align:center;display:grid;gap:2px}.rank-level small{font-size:min(.5625rem,11px);letter-spacing:1px;color:#aabac4}.rank-level strong{font:1.625rem Georgia;color:#e8d5a4}.rank-journey .rank-xp{display:grid;width:100%;gap:5px;text-align:left}.rank-journey progress{width:100%;height:7px;accent-color:#d4b978}.rank-journey .rank-xp>span{font-size:.75rem;color:#ccd6d7}.rank-xp-details{font-size:.6875rem;color:#9eb0bb}.rank-xp-details summary{cursor:pointer;min-height:44px}.rank-xp-details small{display:block;padding-top:4px}.adventurer-rank.rank-place-1{border-color:#b2945355}
@media(max-width:620px){.adventurer-rank{grid-template-columns:28px 44px minmax(0,1fr) 44px;gap:10px;padding:12px}.rank-portrait{width:42px;height:42px}.rank-journey{grid-column:3/5}.rank-identity .text-button{font-size:.875rem}.rank-level strong{font-size:1.4375rem}.rank-medal svg{width:24px;height:24px}}

.rank-level-time{font-size:.6875rem;color:#b6c6cc;margin-top:6px}.rank-level-time summary{cursor:pointer;min-height:44px}.rank-level-time p{font-size:.6875rem;margin:5px 0 0}

.rank-journey .rank-xp{max-width:none;margin:0}.rank-journey .rank-xp progress{max-width:none}.rank-journey .rank-xp-details{margin:0}.rank-journey .rank-xp-details summary{padding:2px 0}@media(max-width:620px){.rank-journey{grid-column:2/-1}.adventurer-rank{row-gap:8px}}

/* Settings: "Who can see my gear" choice cards (real radio inside each label; the card is the visible control). */
.settings-modal .gear-choice-group{display:grid;gap:10px;margin:10px 0 4px;min-width:0}
.settings-modal .gear-choice{position:relative;display:block;margin:0;min-width:0;cursor:pointer;overflow-wrap:normal;word-break:normal;hyphens:none}
.settings-modal .gear-choice>input[type=radio]{position:absolute;inset:0;z-index:1;width:100%;height:100%;min-height:0;margin:0;padding:0;opacity:0;cursor:pointer;appearance:none;-webkit-appearance:none}
.settings-modal .gear-choice>input[type=radio]:disabled{cursor:not-allowed}
.settings-modal .gear-choice-card{display:grid;grid-template-columns:44px minmax(0,1fr) 24px;align-items:center;column-gap:12px;min-height:64px;padding:10px 12px;border:1px solid #5b4f36;border-radius:8px;background:linear-gradient(160deg,#16242e,#0d171f);box-shadow:inset 0 1px 0 #f0d9a614;transition:border-color .15s,box-shadow .15s,background .15s}
.settings-modal .gear-choice-glyph{width:44px;height:44px;padding:8px;box-sizing:border-box;border-radius:50%;border:1px solid #7a6640;background:radial-gradient(circle at 50% 35%,#233440,#0a1218 75%);fill:none;stroke:#dab36b;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.settings-modal .gear-choice-text{display:grid;gap:2px;min-width:0}
.settings-modal .gear-choice-label{font:600 1.0625rem/1.25 Georgia,'Times New Roman',serif;color:#f2dfb1;white-space:nowrap}
.settings-modal .gear-choice-help{font:.78125rem/1.45 system-ui,Arial,sans-serif;color:#b4becb}
.settings-modal .gear-choice-check{width:24px;height:24px;fill:none;stroke:#5f6259;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.settings-modal .gear-choice-check path{stroke:transparent;stroke-width:2.2}
.settings-modal .gear-choice:hover>input:not(:disabled)+.gear-choice-card{border-color:#9a8250}
.settings-modal .gear-choice>input:checked+.gear-choice-card{border-color:#dab36b;background:linear-gradient(160deg,#243139,#111c24);box-shadow:0 0 0 1px #dab36b66,0 0 18px #dab36b33,inset 0 1px 0 #f0d9a626}
.settings-modal .gear-choice>input:checked+.gear-choice-card .gear-choice-glyph{border-color:#dab36b;stroke:#f4d58f}
.settings-modal .gear-choice>input:checked+.gear-choice-card .gear-choice-check{fill:#dab36b;stroke:#dab36b}
.settings-modal .gear-choice>input:checked+.gear-choice-card .gear-choice-check path{stroke:#1a1408}
.settings-modal .gear-choice>input:focus-visible+.gear-choice-card{outline:3px solid #f4cd86;outline-offset:3px}
.settings-modal .gear-choice>input:disabled+.gear-choice-card{opacity:.55}
@media(max-width:400px){.settings-modal .gear-choice-card{grid-template-columns:38px minmax(0,1fr) 22px;column-gap:10px;padding:10px}.settings-modal .gear-choice-glyph{width:38px;height:38px;padding:8px}.settings-modal .gear-choice-check{width:22px;height:22px}.settings-modal .gear-choice-label{font-size:1rem}}
@media(prefers-reduced-motion:reduce){.settings-modal .gear-choice-card{transition:none}}
/* Settings: Stuck? Return to Stonewake. Same painted gold line as the other settings groups; 44px targets, no hover-only information. */
.settings-modal .unstuck-help{border-block:1px solid #cfb07022;padding:14px 0;margin:15px 0}
.settings-modal .unstuck-help h3{margin:0 0 6px;color:#efd6a3}
.settings-modal .unstuck-help .small-note{margin:0 0 12px;overflow-wrap:normal;word-break:normal;hyphens:none}
.settings-modal .unstuck-help button{min-height:44px;width:100%;box-sizing:border-box}
.settings-modal .unstuck-note{margin:10px 0 0;color:#e6c98a}
.unstuck-dialog .unstuck-points{margin:0 0 14px;padding-left:1.15rem;display:grid;gap:8px;line-height:1.5;overflow-wrap:normal;word-break:normal;hyphens:none}
.unstuck-dialog .unstuck-points strong{color:#efd6a3}
.unstuck-dialog>.small-note{margin:0 0 18px}
.unstuck-dialog .az-actions>button{min-height:44px;flex:1 1 9rem}
/* Current role on the Skill tree heading (public/path-ui.js currentRole). */
.paths-heading .paths-role{display:inline-block;margin-left:10px;padding:2px 9px;border:1px solid currentColor;border-radius:999px;font-size:.75rem;letter-spacing:.02em;text-transform:none;color:#d4a58b}
.paths-heading .paths-role[data-role="Tank"]{color:#d2b774}.paths-heading .paths-role[data-role="Healer"]{color:#9ec9b0}

/* /interface-art.css */
/* Painted brass, blue cloth and readable numbers: one visual language across menus. */
.fantasy-icon{display:inline-block;width:36px;height:36px;flex:0 0 36px;background:url('/art/interface/navigation-v2.webp') var(--icon-x) var(--icon-y)/400% 400% no-repeat;vertical-align:middle;filter:drop-shadow(0 2px 2px #0009)}
.shell .painted-page-heading{background:linear-gradient(90deg,#0c1526ed 0%,#0c1526bf 36%,#0c15262e 85%),var(--page-art) center/cover!important;isolation:isolate;position:relative;min-height:138px;border:1px solid #ba9b6040;border-radius:5px;box-shadow:inset 0 1px #dac79d12;overflow:hidden;padding:22px 26px!important}
.shell .painted-page-heading :is(h1,h2,p,strong,small){text-shadow:0 2px 4px #000b}
.shell .painted-page-heading .menu-illustration{display:none}
.shell .handbook-category-painting{opacity:.34;mask-image:linear-gradient(90deg,transparent 0%,#000 60%)}
.shell .handbook-category-label{position:relative;z-index:1}
.guild-level-crest{position:relative;isolation:isolate}.guild-level-crest>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.guild-level-crest>strong{position:absolute!important;inset:52% 0 auto!important;transform:none!important;text-align:center;line-height:1;font-size:1.75rem;text-shadow:0 2px 3px #000}
.guild-directory .guild-level-crest>strong{font-size:1.0625rem}
.realm-wallet{display:flex;flex-direction:column;align-items:flex-end;gap:2px;min-width:116px;color:#f0ca76;font:600 .75rem/1.35 system-ui;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.realm-wallet>span,.realm-wallet>button{display:flex;align-items:center;gap:7px;white-space:nowrap;min-height:23px}
.realm-wallet .wallet-crowns{padding:0;background:none;border:0;box-shadow:none;color:#bdcaff;font:inherit;cursor:pointer;min-width:0}
.realm-wallet .fantasy-icon{width:24px;height:24px;flex-basis:24px}
.realm-wallet .wallet-crowns:focus-visible{outline:2px solid #ddbd78;outline-offset:3px}
.gold-coin{display:inline-grid;place-items:center;width:18px;height:14px;border-radius:50%;border:1px solid #ffda70;color:#fff4be;line-height:1;font-size:12px;box-shadow:0 2px 0 #966011,inset 0 0 0 2px #ad6f15,0 2px 5px #0009;background:linear-gradient(155deg,#fff1a7,#edbd42 45%,#936418)}
.realm-wallet .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}
.shell .topbar>.realm-wallet{justify-self:end;grid-column:2;grid-row:1}
.nav-boss-backdrop{display:none;pointer-events:none}
.shell .nav-brand-emblem{display:none}
.battle-kill-progress{display:block;color:#e3c28a;font:600 .6875rem/1.5 system-ui;margin-top:5px;font-variant-numeric:tabular-nums}
.shell .zone-badge{position:relative;top:0;left:0;transform:none;width:100%;max-width:100%;box-sizing:border-box;padding:9px 14px;white-space:normal}
.shell .zone-badge>span:first-child{font-size:1.125rem}.shell .zone-badge>small{font-size:.6875rem}
.shell .battle-minimap{position:absolute;z-index:8;right:14px;top:12px;width:138px;padding:0;background:none;border:0;box-shadow:none;overflow:visible}
.shell .minimap-open{position:relative;display:block;width:100%;padding:0;border:0;box-shadow:none;background:none;color:#efd7a9;cursor:pointer}
.shell .battle-minimap h2{position:absolute;z-index:2;top:0;left:-5px;right:-5px;border:1px solid #b3965c;border-radius:3px;background:linear-gradient(#243044,#111925);font:600 .625rem/1.25 system-ui;padding:4px 2px;margin:0;text-align:center;box-shadow:0 2px 5px #0008}
.shell .battle-minimap .minimap{display:block;width:138px;height:138px;aspect-ratio:1;margin:10px 0 0;border:3px solid #b29c68;border-radius:50%;overflow:hidden;background:#121a28;box-shadow:0 0 0 2px #293643,inset 0 0 0 2px #1b2530,0 4px 12px #0009}
.shell .battle-minimap #minimap{position:relative;inset:auto;width:100%;height:100%;background:#121a28;border-radius:50%;overflow:hidden}
.shell .battle-minimap #minimap>svg{width:100%;height:100%;object-fit:contain}
.minimap-north{position:absolute;top:18px;left:calc(50% - 5px);font:bold 11px Georgia;color:#ffe6a7;text-shadow:0 1px 3px #000}
.minimap-expand{position:absolute;right:0;bottom:2px;display:grid;place-items:center;width:26px;height:26px;border:1px solid #b89c60;border-radius:50%;background:#152334;color:#f2da9b;font-size:21px;box-shadow:0 2px 4px #0009}
.shell .battle-orders-menu{margin:10px 12px 0!important;padding:0!important;border:0!important;background:none!important}
.shell .battle-orders-menu>summary{font-size:.75rem;min-height:36px;display:flex;align-items:center;gap:6px;cursor:pointer;color:#d7c496}
.shell .battle-orders-menu>summary:before{content:'▸'}.shell .battle-orders-menu[open]>summary:before{content:'▾'}
.shell .field-controls>.field-progress{display:none}
.shell .guild-hunt-section{padding:0!important;border:0!important;overflow:hidden}
.guild-hunt-heading{min-height:125px;display:flex;justify-content:space-between;align-items:center;gap:15px;padding:20px;background:linear-gradient(90deg,#0c1425ed,#0c142588),var(--hunt-art) center/cover;border-bottom:1px solid #c7aa6750}
.guild-hunt-heading .fantasy-icon{float:left;width:48px;height:48px;margin-right:12px}
.guild-hunt-heading p{font-size:.5625rem;margin:0 0 4px}.guild-hunt-heading h2{font:1.25rem Georgia;margin:0}.guild-hunt-heading>strong{text-align:right;white-space:nowrap}.guild-hunt-heading>strong>b{font:1.75rem Georgia;color:#f3d597}.guild-hunt-heading>strong>small{display:block;font:.625rem system-ui;color:#c4cbd3;margin-top:4px}
.shell .guild-page .guild-hunt-milestones{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:18px 10px}
.shell .guild-page .guild-hunt-milestones>article{display:flex;gap:10px;align-items:center;border:0;padding:0}
.hunt-reward-art{flex:0 0 44px;display:grid;place-items:center;width:44px;height:56px;background:radial-gradient(#c9a8641c,transparent);filter:grayscale(.3)}.hunt-reward-art .fantasy-icon{width:48px;height:48px;flex-basis:48px}
.is-complete .hunt-reward-art{filter:drop-shadow(0 0 5px #bfe5a466)}
.shell .guild-page .guild-hunt-milestones>article>div{flex:1;min-width:0}.shell .guild-hunt-milestones h3{font:600 .8125rem system-ui;margin:0 0 5px}
.hunt-gold{font-size:.75rem;color:#e5c781;white-space:nowrap}.hunt-gold>.gold-coin{vertical-align:middle;width:13px;height:10px;font-size:.5rem}.hunt-gold>small{display:block;font-size:.5625rem;color:#bdc4cf}
.guild-hunt-milestones progress{display:block;width:100%;height:6px;margin:10px 0 5px}.guild-hunt-milestones small{font:.625rem system-ui;color:#b3bdc9}
.guild-gather-task{display:flex;align-items:center;gap:12px;padding:16px 12px;background:linear-gradient(90deg,#4262511a,transparent);border-block:1px solid #b9a67529}
.guild-resource-art{flex:0 0 52px}.guild-resource-art .workshop-art{width:52px;height:52px}.guild-gather-task>div:nth-child(2){flex:1;min-width:0}.guild-gather-task h3{font:600 .875rem Georgia;margin:3px 0 8px}.guild-gather-task .eyebrow{font-size:.5625rem;margin:0;color:#adc7b1}.guild-gather-task progress{display:block;width:100%;height:6px;margin:6px 0}.guild-gather-task small{font-size:.625rem;color:#b7c3cf}.guild-hunt-rules{padding:8px 12px!important}.guild-hunt-rules p{font:.75rem/1.6 system-ui}
.shell .map-pin>.zone-pin-art{display:block;flex:0 0 46px;width:46px;height:46px;max-width:none;border:2px solid #c6aa69;border-radius:50%;object-fit:cover;box-shadow:0 0 0 2px #1c2935,0 2px 6px #0009}
.shell .map-pin{gap:10px;background:linear-gradient(110deg,#111c2eed,#111c2ed9);border:1px solid #b7a47966;box-shadow:0 3px 9px #0008;border-radius:6px;min-height:62px}
.shell .map-pin.selected{border-color:#f0ce81;box-shadow:0 0 14px #d8b26655}.shell .map-pin.route-locked>.zone-pin-art{filter:saturate(.65)}
.shell .region-tabs{padding:0;border:0;border-bottom:1px solid #bda16966;background:#0d1625}.shell .region-tabs button{position:relative;background:linear-gradient(110deg,#233348,#111c2f);border:0;border-bottom:2px solid transparent;padding:14px 12px;min-height:60px}.shell .region-tabs button[aria-selected=true]{background:linear-gradient(110deg,#4a4230,#1e2b39);border-bottom-color:#dfbd75;box-shadow:none}.shell .region-tabs button small{font-size:.625rem;color:#b3c2cb}
@media(max-width:650px){.guild-hunt-heading{padding:14px;min-height:110px}.guild-hunt-heading h2{font-size:1.125rem}.guild-hunt-heading .fantasy-icon{width:36px;height:36px;margin-right:6px}.guild-hunt-heading>strong>b{font-size:1.4375rem}.shell .guild-page .guild-hunt-milestones{gap:8px;padding:14px 2px}.hunt-reward-art{flex-basis:26px;width:26px}.hunt-reward-art .fantasy-icon{width:34px;height:34px}.guild-gather-task{padding:14px 6px;gap:8px}.guild-resource-art{flex-basis:40px}.guild-resource-art .workshop-art{width:40px;height:40px}.guild-gather-task h3{font-size:.8125rem}.guild-gather-task>.hunt-gold{font-size:.6875rem}.shell .map-pin>.zone-pin-art{width:34px;height:34px;flex-basis:34px}.shell .map-pin{gap:6px}}
@media(min-width:1001px){
 .shell.mmo-shell.wayfarer-shell .topbar>nav{isolation:isolate;padding-top:12px;background:#101928}
 .shell .topbar>nav>*:not(.nav-boss-backdrop){position:relative;z-index:1}
 .nav-boss-backdrop{display:block;position:fixed;inset:0 auto 0 0;width:180px;overflow:hidden;z-index:0;background:linear-gradient(#0c152422,#0c152411 45%,#0c152444),url('/art/interface/sidebar-v1.webp') center/100% 100%}
 .nav-boss-portrait{position:absolute;top:38%;left:4%;width:92%;height:38%;object-fit:contain;opacity:.18;filter:saturate(.5);mask-image:linear-gradient(transparent,#000 14%,#000 75%,transparent)}
 .shell.mmo-shell>.topbar>nav .nav-button{gap:7px;padding:5px 6px;min-height:43px;background:transparent;border-color:transparent}
 .shell.mmo-shell>.topbar>nav .nav-button.active{background:linear-gradient(90deg,#b69a503d,#18283a96);border-color:#bd9e5266;box-shadow:inset 2px 0 #e5c483}
 .shell .nav-brand{padding:0 0 12px;margin-bottom:8px!important;min-height:112px;text-align:center}
 .shell .nav-brand-emblem{display:block;width:60px;height:60px;margin:0 auto 1px;border-radius:50%;filter:drop-shadow(0 0 9px #80acbd55)}
 .shell .nav-brand .brand-name{font:600 min(1.375rem,22px)/1.2 Georgia,serif;letter-spacing:.02em;color:#efdaaa;text-shadow:0 2px 2px #000,0 0 12px #dab36b44}
 .shell .nav-brand .wordmark{width:100%;max-width:none;margin:auto}
 .shell .nav-brand .alpha-phase-label{display:inline-block;font:600 .5rem/1.2 system-ui;letter-spacing:.16em;padding:2px 6px;margin-top:6px;background:#0c152488;border-color:#d2b67670}
 .shell .nav-brand>.nav-brand-rule{display:block;position:absolute;inset:auto 12px 0;height:1px;background:linear-gradient(90deg,transparent,#d6b771,transparent)}
 .shell .nav-brand>span:not(.nav-brand-rule),.shell .nav-brand .brand-tagline{display:none}
 .shell.mmo-shell .combat-grid{display:grid;grid-template-columns:minmax(15.5rem,20%) minmax(0,1fr);gap:0;height:auto;min-height:650px}
 .shell.mmo-shell .combat-grid>.right-rail{display:none}
 .shell .arena-column{min-width:0}.shell .battlefield{flex:1;min-height:440px}
 .shell .topbar>.realm-wallet{margin-right:4px}
}
/* 1001-1179 px: the party rail stays in the narrow first column and the battlefield gets the wide one (the phone rule in three-paths.css puts the arena first). */
@media(min-width:1001px) and (max-width:1179px){.shell.mmo-shell .combat-grid>.party-rail{order:0}.shell.mmo-shell .combat-grid>.arena-column{order:1}}
@media(max-width:760px){
 .shell .topbar>.realm-wallet{grid-column:1;grid-row:1;justify-self:start;margin-left:0}
 .shell .topbar>.wordmark{display:none}
 .fantasy-icon{width:26px;height:26px;flex-basis:26px}
 .shell .painted-page-heading{min-height:120px;padding:16px!important}
 .shell .battle-minimap{width:94px;right:8px;top:8px}.shell .battle-minimap .minimap{width:94px;height:94px;border-width:2px}.shell .battle-minimap h2{font-size:.5625rem;padding:3px 0}
 .minimap-north{top:16px;font-size:9px}.minimap-expand{width:22px;height:22px;font-size:18px}
 .shell .battle-orders-menu{margin:5px 8px!important}
}
/* Two frame weights keep the same metalwork throughout the realm. */
:root{--realm-trim:#9c8151;--realm-trim-dim:#635239;--realm-corner:linear-gradient(#c4a469,#c4a469)}
.realm-frame,.evermarch-entry .auth-form{position:relative;border:1px solid var(--realm-trim)!important;box-shadow:inset 0 0 0 3px #090f19,inset 0 0 0 4px #6c57364d,0 9px 28px #0003;border-radius:3px}
.realm-frame::after,.evermarch-entry .auth-form::after{content:"";position:absolute;inset:5px;pointer-events:none;z-index:2;border:1px solid #b4965838;background:var(--realm-corner) left top/28px 2px no-repeat,var(--realm-corner) left top/2px 28px no-repeat,var(--realm-corner) right top/28px 2px no-repeat,var(--realm-corner) right top/2px 28px no-repeat,var(--realm-corner) left bottom/28px 2px no-repeat,var(--realm-corner) left bottom/2px 28px no-repeat,var(--realm-corner) right bottom/28px 2px no-repeat,var(--realm-corner) right bottom/2px 28px no-repeat}
.realm-frame-light{border-color:#7e6c4659!important;border-inline-start:2px solid #ad8a4e8c!important;box-shadow:inset 0 1px #d7b97612;background-image:linear-gradient(110deg,#be984707,transparent 40%)}
.quest-menu .quest-grid{gap:10px}.quest-menu .quest-card{padding:18px 20px!important;border-radius:2px!important}.quest-menu .quest-location-art{border:1px solid #8d734844;box-shadow:0 3px 12px #0005}
.shell main>h2,.quest-menu>h2{display:flex;align-items:center;gap:16px}.shell main>h2::after,.quest-menu>h2::after{content:"";height:1px;flex:1;background:linear-gradient(90deg,#b69a6066,transparent)}
.path-lane-labels{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;gap:8px;color:#acb9c9;font:10px/1.4 system-ui;letter-spacing:.09em;text-transform:uppercase;margin:10px 0 0}.path-connectors.optional-links path{stroke:#b39a6266;stroke-width:1.5;fill:none;stroke-dasharray:none}.path-branch-node.class-passive .path-art{filter:drop-shadow(0 0 7px #83a5ce55)}.path-branch-node.class-passive .path-node-rank{border-color:#8eaad1}.path-branch-node.class-passive>small{color:#bdd3ef}
@media(max-width:540px){.quest-menu .quest-card{padding:14px 12px!important}.path-lane-labels{font-size:8px;letter-spacing:0}.realm-frame::after,.evermarch-entry .auth-form::after{inset:4px}}
.realm-frame::after,.evermarch-entry .auth-form::after{inset:0;border:42px solid transparent;border-image:url('/art/interface/panel-frame-v1.webp') 18% / 42px / 0 stretch;background:none;clip-path:none}
@media(max-width:540px){.realm-frame::after,.evermarch-entry .auth-form::after{inset:0;border-image-width:28px}}


@media(max-width:540px){.realm-frame::after,.evermarch-entry .auth-form::after{inset:0;border-image-width:28px}}

.realm-frame::after,.evermarch-entry .auth-form::after{width:auto;height:auto;max-width:none;max-height:none;margin:0;transform:none;inset:0;display:block}

.guild-hunt-heading>div{flex:1;min-width:0;display:grid;grid-template-columns:48px 1fr;column-gap:12px;align-items:center}.guild-hunt-heading .fantasy-icon{float:none;grid-row:1 / 3;margin:0}.guild-hunt-heading p,.guild-hunt-heading h2{grid-column:2;width:auto}.guild-hunt-heading h2{align-self:start}
.shell .guild-upgrades-section{padding:20px!important}.shell .guild-members-section{padding:20px!important}
.realm-frame-light{position:relative}.realm-frame-light::after{content:"";position:absolute;inset:0;width:auto;height:auto;margin:0;transform:none;pointer-events:none;border:18px solid transparent;border-image:url('/art/interface/panel-frame-v1.webp') 18% / 18px / 0 stretch;z-index:2}
.world-map-scroll .world-map .map-pin{max-width:205px}.world-map-scroll .world-map .map-pin>span:not([aria-hidden]){min-width:0;word-break:normal;overflow-wrap:normal}
.battle-journal{display:inline-flex;align-items:center;gap:6px;margin-right:auto;position:relative}.battle-journal .fantasy-icon{width:28px;height:28px;flex-basis:28px}.quest-ready-badge{display:inline-grid;place-items:center;min-width:17px;height:17px;padding:0 4px;background:#cfaa57;color:#151821;font:bold .625rem system-ui;border-radius:10px;box-shadow:0 0 8px #cfaa5744;margin-left:5px}
.adventure-notices{position:fixed;right:18px;bottom:60px;width:min(360px,calc(100vw - 24px));z-index:110;display:grid;gap:10px;pointer-events:none}.adventure-notice{pointer-events:auto;position:relative;isolation:isolate;overflow:hidden;background:#0d1727;box-shadow:0 6px 28px #0009}.adventure-notice-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.48;z-index:-2}.adventure-notice:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#0d1727f5,#0d172779);z-index:-1}.adventure-notice-copy{padding:22px}.adventure-notice .eyebrow{font-size:.5625rem;margin:0 36px 8px 0}.adventure-notice h3{font:1.375rem/1.2 Georgia;color:#f3d598;margin:0 36px 8px 0}.adventure-notice p{font-size:.75rem;margin:6px 0 12px}.adventure-notice small{display:block;color:#b5c2d3;font-size:.625rem;margin-top:10px}.adventure-notice .notice-close{position:absolute;right:8px;top:8px;width:32px;height:32px;min-height:32px;background:#101a29c9;border:0;color:#d6c18c;font-size:1.375rem;padding:0}.adventure-notice .red-button{min-height:40px}.adventure-notices:empty{display:none}
@media(max-width:540px){.adventure-notices{right:12px;bottom:70px}.adventure-notice-copy{padding:18px}.adventure-notice h3{font-size:1.25rem}.battle-journal{font-size:.6875rem}}
/* Boss Hunt discoveries and Party bag arrivals are compact toasts (what arrived, its View button, x), so they don't sit over the fight. Release polish (14 Oct): at every width; the full desktop cards covered the enemy cards and the Equipped items panel. */
@media all{.adventure-notices{gap:6px}.adventure-notice:is([data-adventure-notice="hunt"],[data-adventure-notice="supply"]) .adventure-notice-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:8px;min-height:56px;padding:6px 50px 6px 12px}.adventure-notice:is([data-adventure-notice="hunt"],[data-adventure-notice="supply"]) :is(.eyebrow,h3,p){grid-column:1;min-width:0;margin:0;font-size:.8125rem;line-height:1.25}.adventure-notice:is([data-adventure-notice="hunt"],[data-adventure-notice="supply"]) .eyebrow{font-size:.5625rem;letter-spacing:.06em}.adventure-notice[data-adventure-notice="supply"] .eyebrow,.adventure-notice[data-adventure-notice="hunt"] p:not(.eyebrow){display:none}.adventure-notice:is([data-adventure-notice="hunt"],[data-adventure-notice="supply"]) button.secondary{grid-column:2;grid-row:1/span 2;min-height:44px;padding:6px 10px;font-size:.75rem;white-space:nowrap}.adventure-notice:is([data-adventure-notice="hunt"],[data-adventure-notice="supply"]) .notice-close{top:50%;right:4px;transform:translateY(-50%)}}
/* Full pass (13 Oct): the "New zone open" and "Quest complete" cards were full size on phones and covered the lower half of the fight, its enemies and Leave expedition for up to 90 s. Same compact toast as the Hunt and Party bag cards: eyebrow, name, its button and x. Release polish (14 Oct): at every width, like the Hunt and Party bag toasts. */
@media all{.adventure-notice:is([data-adventure-notice="zone"],[data-adventure-notice="quest"]) .adventure-notice-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:8px;min-height:56px;padding:6px 50px 6px 12px}.adventure-notice:is([data-adventure-notice="zone"],[data-adventure-notice="quest"]) :is(.eyebrow,h3){grid-column:1;min-width:0;margin:0;font-size:.8125rem;line-height:1.25}.adventure-notice:is([data-adventure-notice="zone"],[data-adventure-notice="quest"]) .eyebrow{font-size:.5625rem;letter-spacing:.06em}.adventure-notice:is([data-adventure-notice="zone"],[data-adventure-notice="quest"]) :is(p:not(.eyebrow),small){display:none}.adventure-notice:is([data-adventure-notice="zone"],[data-adventure-notice="quest"]) button:is(.secondary,.red-button){grid-column:2;grid-row:1/span 2;width:auto;min-height:44px;margin:0;padding:6px 10px;font-size:.75rem;white-space:nowrap}.adventure-notice:is([data-adventure-notice="zone"],[data-adventure-notice="quest"]) .notice-close{top:50%;right:4px;transform:translateY(-50%)}}
@media(min-width:1001px){.shell.mmo-shell.wayfarer-shell>.topbar{height:52px;min-height:52px;padding:3px 18px;background:linear-gradient(90deg,transparent,#18233866);border-bottom:1px solid #b8995630}.shell.mmo-shell.wayfarer-shell>.topbar>.realm-wallet{position:relative;grid-column:2;grid-row:1}.shell.mmo-shell.wayfarer-shell>.topbar>.hero-hud{grid-column:1;grid-row:1}}
.shell .illustrated-heading.painted-page-heading{background:linear-gradient(90deg,#0c1526ed 0%,#0c1526bf 36%,#0c15262e 85%),var(--page-art) center/cover!important}
.shell .exp-page .exp-panel.realm-frame:not(.realm-frame-light){padding:22px!important}.shell .guild-progression.realm-frame{padding:18px 22px}.quest-menu .quest-card{padding:18px 22px 18px 144px!important}.quest-menu .quest-location-art{left:16px}.shell .handbook-category-card{overflow:hidden}
@media(max-width:600px){.shell .exp-page .exp-panel.realm-frame:not(.realm-frame-light){padding:18px!important}.quest-menu .quest-card{padding:16px 14px 16px 92px!important}.quest-menu .quest-location-art{left:12px}.shell .guild-progression.realm-frame{padding:14px}}
.shell .storage-columns.realm-frame-light,.shell .storage-selection.realm-frame-light,.shell .rankings-board.realm-frame-light,.shell .party-roster-panel.realm-frame-light{padding:18px}.shell .crown-product.realm-frame-light{overflow:hidden}.shell .rankings-board.realm-frame-light{margin-top:20px}
.modal-backdrop>.ornate{position:relative;border-color:#a78c57!important}/* Paint on the fixed border box, never inside scrollable content. */
.modal-backdrop>.ornate{border-image:url('/art/interface/panel-frame-v1.webp') 18% / 32px / 0 stretch}.modal-backdrop>.ornate:before,.modal-backdrop>.ornate:after{display:none}
@media(max-width:1000px){
 .shell.mmo-shell.wayfarer-shell>.topbar{height:102px;min-height:102px;padding-top:0;align-items:start}
 .shell .topbar>.realm-wallet{position:fixed;top:0;left:0;right:0;z-index:90;grid-column:1 / -1;grid-row:1;justify-self:stretch;flex-direction:row;justify-content:space-between;align-items:center;width:100%;min-height:44px;margin:0;padding:0 14px;background:#0e1726;box-sizing:border-box}
 .shell .realm-wallet .wallet-crowns{min-height:44px;min-width:44px;justify-content:center}
 .shell .topbar nav .nav-account{top:44px}
 .shell .auction-category,.shell .auction-subcategory,.shell .section-tab,.shell .guild-level-buffs button{min-height:44px}
 .adventure-notice .notice-close{min-width:44px;min-height:44px}
 html{scroll-padding-top:112px;scroll-padding-bottom:84px}
}
.shell .path-loadout.realm-frame-light{padding:16px!important}
@media(min-width:761px) and (max-width:1000px){.shell.mmo-shell.wayfarer-shell>.topbar{height:auto;min-height:185px;padding-top:44px;display:block}.shell.mmo-shell.wayfarer-shell>.topbar>nav{width:100%;box-sizing:border-box;margin:0}}
.nav-discord{display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;margin:10px 0;color:#e8ce92;background:linear-gradient(110deg,#b1873338,#172a47);border:1px solid #c7a4678c;border-top:2px solid #d7b475;text-decoration:none;font:600 .75rem system-ui;box-shadow:inset 0 1px #ffe6a12b}
.nav-discord svg{width:22px;height:22px;flex:none}.nav-discord:hover,.nav-discord:focus-visible{color:#fff0c9;background:#34425c;outline:2px solid #e2c084;outline-offset:2px}
.realm-wallet>.nav-discord{display:none}
/* Keep currency balances and all three actions reachable on narrow phones. */
@media(max-width:360px){
 .shell .realm-wallet>.nav-discord{flex:0 0 44px;justify-content:center;box-sizing:border-box}
 .shell .realm-wallet>.nav-discord>span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
 .shell .realm-wallet>.wallet-gold{min-width:0}
}
@media(max-width:1000px){.shell .topbar nav>.nav-discord{display:none!important}.shell .realm-wallet>.nav-discord{display:flex;min-height:44px;margin:0;padding:0 5px;font-size:.625rem;gap:5px;border:0;border-bottom:2px solid #c7a467;background:transparent;white-space:nowrap}.realm-wallet>.nav-discord svg{width:18px;height:18px}.realm-wallet>.nav-discord .discord-external{display:none}}
.shell :is(.section-tabs,.market-tabs,.rank-tabs){border-bottom:2px solid #bc9a62;padding-bottom:5px}
.shell :is(.section-tabs,.market-tabs,.rank-tabs)>button{border-radius:2px 2px 0 0;min-height:44px}
.shell :is(.section-tabs,.market-tabs,.rank-tabs)>:is(.active,[aria-selected="true"],[aria-pressed="true"]){box-shadow:inset 0 2px #e6c889;border-color:#bd995e;background:linear-gradient(180deg,#b98d3933,#142135);color:#ffe1aa}
.shell :is(.realm-frame,.realm-frame-light){--realm-gold:#c7a467}

/* Paint decoration on the element's border so scrollable content cannot carry
   its bottom edge into the middle of an expanded panel. */
.realm-frame,.evermarch-entry .auth-form{border-image:url('/art/interface/panel-frame-v1.webp') 18% / 42px / 0 stretch!important}
.realm-frame-light{border-image:url('/art/interface/panel-frame-v1.webp') 18% / 18px / 0 stretch!important}
.realm-frame::after,.realm-frame-light::after,.evermarch-entry .auth-form::after{display:none!important}
@media(max-width:540px){.realm-frame,.evermarch-entry .auth-form{border-image-width:28px!important}}
.shell :is(.workshop-bench,.workshop-picker,.market-inventory,.storage-selection){border-radius:2px;background:linear-gradient(135deg,#182638,#0c1624)}
.shell :is(.workshop-heading,.craft-heading){border-bottom:2px solid var(--realm-gold,#c7a467)}
.shell :is(.workshop-workpiece,.enchanter-item-heading,.craft-stock>header,.guild-roster>header){border-bottom:1px solid #c7a46780;padding-bottom:15px}
.shell :is(.workshop-operations,.workshop-filter){border-bottom:1px solid #c7a46770;padding-bottom:8px}
.shell .workshop-ranks{background:radial-gradient(ellipse,#bd8c3920,transparent 75%);border-block:1px solid #c7a4675c}
.shell .workshop-farming{background:transparent;border:0;border-left:2px solid #a0c398;padding:6px 12px;font-size:.75rem}
.shell .enchanter-picker{border:0!important;border-bottom:1px solid #c7a46770!important;background:transparent!important;border-radius:0;box-shadow:none;margin-bottom:18px;padding:0 16px 12px}
.shell .enchanter-picker::before{display:none}
.shell .enchanter-action-strip{border-top:2px solid #bd9c606e;background:linear-gradient(90deg,#b58a4310,transparent)}
.shell .workshop-exchange{background:transparent;border:0;border-top:1px solid #c7a46770;border-radius:0;margin-top:24px}
@media(max-width:760px){.shell .workshop-bench{padding:20px 16px}.shell .workshop-workpiece{gap:8px}.shell .workshop-workpiece h2{font-size:1.3125rem}.shell .workshop-item-stage{flex-shrink:0}}
.handbook-standalone .handbook-header,.policy-document .policy-heading{padding:28px;background:linear-gradient(90deg,#0c1526ed,#0c1526a6),var(--page-art,url('/art/interface/arcane-v1.webp')) center/cover}
@media(max-width:540px){.handbook-standalone .handbook-header,.policy-document .policy-heading{padding:22px 18px}.handbook-standalone .handbook-category-card>summary{padding:16px}}

/* The frame belongs to the sidebar; every control stays inside its pillars. */
.nav-boss-backdrop,.nav-boss-portrait{display:none!important}
@media(min-width:1001px){
 .shell.mmo-shell.wayfarer-shell{padding-left:208px}
 .shell.mmo-shell.wayfarer-shell>.topbar>nav{width:208px;padding:14px 21px 22px;box-sizing:border-box;gap:2px;scrollbar-width:thin;scrollbar-color:#887147 transparent;scrollbar-gutter:stable both-edges;background:#0a1320;border:0}
 .shell.mmo-shell.wayfarer-shell>.topbar>nav::before{content:"";position:fixed;inset:0 auto 0 0;width:208px;pointer-events:none;z-index:0;background:url('/art/interface/sidebar-v1.webp') center top/100% 100% no-repeat}
 .shell.mmo-shell.wayfarer-shell>.topbar>nav::after{content:"";position:fixed;inset:0 auto 0 0;width:208px;box-sizing:border-box;pointer-events:none;z-index:3;border:14px solid transparent;border-image:url('/art/interface/panel-frame-v1.webp') 18% / 14px / 0 stretch}
 .shell.mmo-shell.wayfarer-shell>.topbar>nav .nav-button{padding:4px;min-height:44px;gap:6px;box-sizing:border-box}
 .shell.mmo-shell.wayfarer-shell>.topbar>nav .fantasy-icon{width:30px;height:30px;flex-basis:30px}
 .shell .nav-brand{width:100%;min-height:112px;margin:0 0 6px!important;padding:0 0 10px}
 .shell .nav-brand .brand-name{font-size:min(1.25rem,20px);letter-spacing:0}
 .shell .nav-brand-emblem{width:58px;height:58px}
 .shell .topbar>nav .nav-account{width:100%;min-width:0;box-sizing:border-box}
 .shell .topbar>nav .nav-battle{width:100%;min-height:44px;padding:6px;font-size:.6875rem}
}

/* Battle uses the same metalwork, with fine trim around smaller controls. */
.shell .arena-column{position:relative;border:1px solid #b5975d;box-shadow:inset 0 2px #ecd29955,inset 0 0 0 4px #080f19;isolation:isolate}
.shell .arena-column::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:10;border:24px solid transparent;border-image:url('/art/interface/panel-frame-v1.webp') 18% / 24px / 0 stretch}
.shell .arena-heading{border-bottom:2px solid #a98b50;background:linear-gradient(90deg,#0d1826,#29313a,#0d1826);box-shadow:inset 0 1px #eed49440}
.shell .field-controls{border-top:2px solid #ad8d51;border-bottom:1px solid #9c81514a;background:linear-gradient(180deg,#1e2c3c,#0e1926);gap:8px;padding:10px 14px;align-items:stretch}
.shell .field-controls{position:relative}
.shell .field-navigation-controls{display:flex;flex-wrap:wrap;align-items:stretch;justify-content:flex-end;gap:8px;margin-left:auto;max-width:100%}
.shell .field-navigation-controls>[hidden]{display:none!important}
.shell .field-action-controls{display:flex;flex:1 0 24rem;max-width:100%;align-items:center;justify-content:center;gap:8px;white-space:nowrap}
/* A party member's leader note wraps on its own line instead of pushing Taunt off screen. */
.shell .field-action-controls>.battle-leader-note{flex:1 0 100%;order:9;margin:0;white-space:normal;text-align:center;min-width:0}
.shell .field-action-controls:has(>.battle-leader-note:not([hidden])){flex-wrap:wrap}
.shell .field-action-controls>.battle-leader-note{grid-column:1/-1}
.shell .field-action-controls[hidden],.shell .battle-controls .actionbar[hidden]{display:none!important}
.shell .field-action-controls>button{width:auto;min-width:0;min-height:48px;height:48px;margin:0;padding:7px 12px;flex:none}
.shell .field-action-controls>.action-key{display:flex;flex-direction:row;gap:5px;border:1px solid #a88c55;border-top:2px solid #d6b575;border-radius:2px;background:linear-gradient(180deg,#29374a,#152131);box-shadow:inset 0 0 0 2px #0c172366,inset 0 1px #f9e4b133;color:#eadbb9}
.shell .field-action-controls>.action-key .skill-icon{width:27px;height:27px}
.shell .field-action-controls>.action-key small{font-size:.5625rem}
.shell .field-action-controls>.begin-button{background:linear-gradient(#6d3032,#3b1b25);color:#f8deb1}
.shell .combat-grid .field-navigation-controls>.secondary,.shell .field-navigation-controls>.field-revive-choice{min-height:48px;align-self:stretch}
.shell .battle-controls{border-top:1px solid #967d4e;background:linear-gradient(120deg,#152333,#0c1722);padding:12px 14px}
.shell :is(.combat-grid,.field-overview,.meter-breakdown) :is(.secondary,.red-button,.meter-tabs>button,.move-directions>button),.shell .battle-orders-menu>summary{border:1px solid #a88c55;border-top:2px solid #d6b575;border-radius:2px;background:linear-gradient(180deg,#29374a,#152131);box-shadow:inset 0 0 0 2px #0c172366,inset 0 1px #f9e4b133;color:#eadbb9;min-height:44px}
.shell :is(.combat-grid,.field-overview,.meter-breakdown) :is(.secondary,.red-button,.meter-tabs>button):hover{border-color:#f0ce83;background:linear-gradient(#35455b,#1c2c40)}
.shell :is(.combat-grid,.field-overview,.meter-breakdown) :is(.secondary,.meter-tabs>button)[aria-pressed=true]{background:linear-gradient(#675434,#3a352b);color:#fff0c8;border-color:#e0bd73}
.shell .combat-grid .red-button{background:linear-gradient(#6d3032,#3b1b25);color:#f8deb1}
.shell .battle-orders-menu{margin:10px 0 0!important}.shell .battle-orders-menu>summary{padding:8px 12px;box-sizing:border-box}.shell .battle-orders-menu[open]{border-bottom:1px solid #a88c55!important}
.shell :is(.damage-meter,.combat-log,.enemy-card){border:1px solid #9d834e;border-top:2px solid #c4a165;border-radius:2px;box-shadow:inset 0 1px #e5c68122;background:linear-gradient(135deg,#1d2b3a,#101c28)}
.shell .enemy-rail{border-top:1px solid #b696586b}.shell .rail-heading{border-bottom:1px solid #a58c515c;padding-bottom:8px;color:#d7b775}
.shell .field-overview{border:2px solid #b99a5d;border-top:3px solid #e1bd79;background:linear-gradient(140deg,#223246,#0b1523);box-shadow:inset 0 0 0 4px #070e18,0 16px 60px #000b;padding:20px}
.shell .field-overview>header{border-bottom:1px solid #b99a5d88;padding-bottom:10px}.shell .field-overview button{border-color:#b99a5d;color:#ead6ad;min-height:44px}
.meter-breakdown .meter-hero{border-bottom:2px solid #bc9a5d}.meter-breakdown button[data-meter-close]{border:1px solid #bd9958;background:#142132;color:#efcf93;min-width:44px;min-height:44px}
@media(max-width:760px){.shell .arena-column::after{border-image-width:14px}.shell .field-controls,.shell .battle-controls{padding:10px}.shell .field-overview{padding:14px}}
@media(min-width:761px){.shell .field-controls[data-resting="true"] .field-action-controls{position:static;transform:none;order:1;flex-basis:100%;width:100%;justify-content:center}}
@media(max-width:1150px){.shell .field-action-controls{position:static;transform:none;order:1;flex-basis:100%;width:100%;justify-content:center}}

/* Phone controls share stable columns; labels never decide the row height. */
@media(max-width:760px){
 .shell .field-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:8px}
 .shell .field-controls>.battle-journal{grid-column:1/-1}
 .shell .field-action-controls{grid-column:1/-1;order:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:8px}
 .shell .combat-grid .field-action-controls>button{width:100%;height:100%;min-height:52px;padding:8px;white-space:normal;justify-content:center;text-align:center;box-sizing:border-box}
 .shell .field-navigation-controls{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}
 .shell .combat-grid .field-controls>.battle-journal,.shell .combat-grid .field-navigation-controls>button,.shell .field-navigation-controls>.field-revive-choice{width:100%;min-width:0;min-height:52px;height:100%;margin:0;padding:8px;display:flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;white-space:normal;line-height:1.3;text-align:center}
 .shell .field-navigation-controls>.field-revive-choice{justify-content:flex-start;border:1px solid #a88c5566;border-radius:2px;background:#0d1926}
 .shell .field-revive-choice input{flex:none;margin:0;width:22px;height:22px}
 .shell .battle-controls .actionbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:8px}
 .shell .battle-controls .actionbar>button{width:100%;min-width:0;max-width:none;min-height:48px;height:100%;margin:0;justify-content:center;white-space:normal}
 .shell .battle-orders-menu{width:100%;min-width:0;align-self:stretch}
 .shell details.battle-orders-menu>summary{width:100%;justify-content:flex-start;min-height:48px;padding:8px 12px}
 .shell #partyCards>.party-card:only-child{grid-column:1/-1}
 .shell.mmo-shell.wayfarer-shell>.topbar>nav>.nav-account{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px;align-items:center;justify-content:stretch;min-width:0;padding-inline:8px;box-sizing:border-box}
 .shell .nav-account .account-block{margin:0;width:auto;min-width:0}
 .shell .nav-account .nav-tools{display:grid;grid-template-columns:repeat(2,44px);gap:4px}
 .shell .nav-account .nav-tools>button,.shell .nav-account>.nav-inventory{height:44px;min-height:44px;margin:0;padding:6px;min-width:0;width:100%}
 .shell .nav-account .chat-access{width:64px;min-width:0}
 .shell .nav-account .chat-access>button{display:flex;width:64px;height:44px;min-height:44px;margin:0;padding:6px;gap:4px;font-size:0}
 .shell .nav-account .chat-access svg{width:20px;height:20px;flex:none}
 .shell .nav-account .chat-unread{font-size:.6875rem;min-width:17px;padding:2px 4px}
 .shell .nav-account>.nav-battle:not([hidden]){grid-column:1/-1;grid-row:2;width:100%;min-height:44px;margin:0}
 .shell.mmo-shell.wayfarer-shell>.topbar:has(.nav-account>.nav-battle:not([hidden])){height:150px;min-height:150px}
}
@media(max-width:480px){.shell.mmo-shell #partyCards{grid-template-columns:minmax(0,1fr)}}
/* Character creation uses the same brass frames as the rest of the realm. */
.creator{max-width:1680px;padding:28px 28px 40px}
.creator>.page-heading{gap:18px;align-items:center;border-bottom:2px solid #b79351;padding-bottom:18px;margin-bottom:22px}
.creator .chapter-note{color:#d8bf8b;font:.75rem/1.8 var(--ui);letter-spacing:.04em}
.creator-grid{grid-template-columns:minmax(210px,.7fr) minmax(320px,1.8fr) minmax(280px,.95fr);height:auto;max-height:none;min-height:700px;gap:20px;align-items:stretch}
.creator .choices,.creator .creation-details{padding:26px 22px;background:linear-gradient(135deg,#1b2837,#101a26)}
.creator .choices h2{font-size:1.3125rem;margin:0 0 12px;border:0}.creator .choices>.micro{color:#aebdca;font-size:.625rem;margin-bottom:18px}
.creator .choice{position:relative;min-height:78px;margin-bottom:9px;padding:10px;gap:10px;border-color:#8a794b77;background:#0b1521b8;border-radius:3px}
.creator .choice.chosen{border-color:#e1bf74;background:linear-gradient(100deg,#77572f66,#1b2c38);box-shadow:inset 3px 0 #ebc981,inset 0 1px #e4c27944,0 0 12px #a9842520}
.creator .choice:focus-visible{outline:2px solid #ffe4a0;outline-offset:2px}
.creator .choice b{font-size:1rem}.creator .choice small{font-size:.6875rem;color:#b8c9d4}.creator .choice .outfit-portrait{flex-shrink:0}
.creator .scope-note{border-top:1px solid #b8995766;margin-top:18px;padding-top:15px;font-size:.75rem;line-height:1.65;color:#b8c9d4}
.creator .creator-stage{min-height:700px;border-top:3px solid #c7a467!important;border-bottom:3px solid #c7a467!important}
.creator .hero-pedestal{flex:1;min-height:470px;height:auto;padding:28px 24px 0}.creator .hero-caption{height:auto;min-height:140px;padding:22px 30px 30px}
.creator .creation-details{overflow:visible}.creator .creation-details>h2{border:0;margin:15px 0;font-size:1.8125rem}
.creator .class-description{font-size:.875rem;line-height:1.65;color:#d3dce0}
.creator .skill-list,.creator .ascension-hint{border-top:1px solid #b899575e;padding-top:17px;margin-top:18px}
.creator .skill-list b{display:block;font-size:.875rem}.creator .skill-list b small{display:block;margin-top:6px;font:.75rem/1.4 var(--ui);color:#afc1cd}
.creator .skill-list>.small-note{font-size:.75rem;line-height:1.7}.creator .ascension-hint{line-height:1.5;padding-bottom:18px}
.creator #createForm{border-top:2px solid #b8995777;padding-top:20px}.creator #characterName{min-height:46px}.creator #createForm>.red-button{min-height:48px;margin-top:8px}
@media(max-width:1100px){.creator{padding:22px 18px}.creator-grid{grid-template-columns:210px minmax(0,1fr);gap:16px}.creator .creation-details{grid-column:1/-1}.creator .creator-stage{min-height:620px}.creator .hero-pedestal{min-height:420px}.creator .creation-details>form{max-width:540px}}
@media(max-width:760px){.creator{padding:18px 10px 28px}.creator>.page-heading{display:block;padding:0 4px 14px}.creator>.page-heading h1{font-size:1.75rem}.creator .chapter-note{display:block;margin-top:10px;font-size:.6875rem}.creator-grid{display:flex;flex-direction:column;gap:16px;min-height:0}.creator .choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:18px 14px}.creator .choices h2{display:block;grid-column:1/-1;font-size:1.25rem;margin:0 0 8px}.creator .choice{min-width:0;min-height:82px;margin:0;padding:8px;gap:7px}.creator .choice b{font-size:.875rem}.creator .choice small{font-size:.625rem;line-height:1.45}.creator .choice i:not(.outfit-portrait){display:none}.creator .choice .outfit-portrait{width:32px;flex-basis:32px}.creator .creator-stage{min-height:460px;height:460px;width:100%}.creator .hero-pedestal{min-height:300px;max-height:320px;padding:20px 18px 0}.creator .hero-caption{min-height:128px;padding:16px 18px 22px}.creator .hero-caption h2{font-size:1.4375rem}.creator .creation-details{padding:24px 20px}.creator .creation-details>h2{font-size:1.625rem}}
.creation-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 28px;border-bottom:1px solid #ac8d5044;background:#0b1420}
.creation-topbar>.wordmark{width:200px;flex:0 0 auto}.creation-topbar>.wordmark strong{font-size:1.5625rem}
.creation-topbar>div:last-child{display:flex;gap:10px;align-items:center}.creation-topbar .nav-discord{margin:0;min-height:44px}
.creator .creator-stage{height:760px;min-height:760px;align-self:start}
.creator .hero-pedestal{flex:0 0 580px;height:580px;min-height:0;max-height:none}
.creator .hero-caption{flex:1;min-height:0}
@media(max-width:1100px) and (min-width:761px){.creator .creator-stage{height:720px;min-height:720px}.creator .hero-pedestal{flex-basis:550px;height:550px}}
@media(max-width:760px){.creation-topbar{padding:12px 14px;flex-wrap:wrap;gap:10px}.creation-topbar>.wordmark{width:160px}.creation-topbar>.wordmark strong{font-size:1.4375rem}.creation-topbar>div:last-child{width:100%;justify-content:space-between;gap:6px}.creation-topbar .secondary{font-size:.75rem;padding:9px 12px;min-height:44px}.creation-topbar .nav-discord{padding:8px;font-size:.6875rem}.creator .creator-stage{height:460px;min-height:460px}.creator .hero-pedestal{flex-basis:310px;height:310px;max-height:none}}
.creator .creator-stage{display:flex;flex-direction:column}
.creator .choice .outfit-portrait{display:block;margin:0;border-radius:2px}
@media(min-width:761px){.creator .creator-stage{height:auto;align-self:stretch}}
[aria-label="Alpha shop unlock"] .salvage-confirmation .az-actions>button{min-height:44px;flex-shrink:0}

@media(max-width:700px){.shell .guild-page .exp-heading .az-actions>button,.shell .guild-page .exp-heading .az-actions>a{min-height:44px;display:inline-flex;align-items:center;justify-content:center}}

/* Companion Master portrait, using the existing approved town artwork. */
@media(max-width:360px){.shell .combat-grid .field-action-controls>button[data-action="taunt"]{display:flex;flex-direction:column;gap:2px;padding-inline:4px;align-items:center;justify-content:center}.shell .combat-grid .field-action-controls>button[data-action="taunt"]>.skill-icon{width:27px;height:27px;flex-shrink:0}.shell .combat-grid .field-action-controls>button[data-action="taunt"]>.action-label,.shell .combat-grid .field-action-controls>button[data-action="taunt"]>small{max-width:100%;overflow-wrap:anywhere}.shell .combat-grid .field-action-controls>button[data-action="taunt"]>small{margin:0}}
.fantasy-icon.companion-emblem{box-sizing:border-box;background-image:url('/assets/town/companion-master-v1.png');background-size:250% auto;background-position:50% 3%;background-color:#17232b;border:1px solid #b99957;border-radius:50%;box-shadow:inset 0 0 0 1px #efd28b55,inset 0 -5px 6px #111b25a8,0 2px 4px #0009;filter:none}
/* Delivered page banners (public/banner-manifest.js): keep the art's focal side on screen when a 320 px heading crops a 3:1 painting. Shared theme art is untouched. */
@media(max-width:560px){.shell .painted-page-heading[data-banner]{background-position:0 0,var(--page-pos-narrow,center)!important}.handbook-standalone[data-has-banner] .handbook-header,.policy-document[data-has-banner] .policy-heading{background-position:0 0,var(--page-pos-narrow,center)}}

/* Phones held sideways (landscape, up to 1000 px wide and 500 px tall): a one-line menu bar and one notice at a time, so the battlefield stays in view and fits under the gold bar. The next notice shows once the first is closed. */
@media(orientation:landscape) and (max-height:500px) and (max-width:1000px){.shell.mmo-shell.wayfarer-shell>.topbar{min-height:0;padding-bottom:8px}.shell.mmo-shell .arena-column{grid-template-rows:auto clamp(260px,calc(100svh - 48px),350px) auto}.shell.mmo-shell .battlefield{min-height:0}.shell.mmo-shell>.topbar>nav :is(.nav-button.nav-primary,.nav-more>summary){flex-direction:row;justify-content:center;min-height:44px;padding:4px 6px;gap:6px}.shell.mmo-shell>.topbar>nav :is(.nav-button.nav-primary,.nav-more>summary)>:is(.fantasy-icon,.icon){width:24px;height:24px;flex:none}.shell.mmo-shell>.topbar>nav .nav-button.nav-primary :is(.nav-copy,.nav-copy>strong){flex:none;width:auto}.adventure-notices>.adventure-notice~.adventure-notice{display:none}}
/* Sideways phones up to 760 px: the More sheet stops below the gold bar and the account row instead of sliding under them, and the battlefield fits between the account row and the menu bar. */
@media(orientation:landscape) and (max-height:500px) and (max-width:760px){.shell.mmo-shell .arena-column{grid-template-rows:auto clamp(200px,calc(100svh - 44px - var(--mobile-utility-height,58px) - var(--mobile-nav-height,58px) - 4px),360px) auto}.mmo-shell>.topbar>nav .nav-more-panel{max-height:calc(100dvh - var(--mobile-nav-height,80px) - var(--mobile-utility-height,58px) - 44px - 8px)}}
/* Phones and touch screens: the Reduced kill XP link on a portrait card gets a 44 px tall touch target; the negative margin keeps the card the same height. */
@media(max-width:760px),(pointer:coarse){.portrait-xp-warning{min-height:44px;padding-block:10px;margin-block:-10px;box-sizing:border-box;position:relative;z-index:1}}
/* Very narrow screens (320 px phones, or 390 px phones at 150% zoom): one notice at a time so they don't bury the battlefield, and the bag's Auto-salvage row wraps Edit rules onto its own line instead of widening the page. */
/* Release polish (14 Oct): phones show one notice at a time (the markup holds at most two); the first one counts the waiting one, which shows when it closes. */
@media(max-width:760px){.adventure-notices>.adventure-notice~.adventure-notice{display:none}.adventure-notices>.adventure-notice:first-child:has(~.adventure-notice) .eyebrow::after{content:" · +1 more"}}
.salvage-card-head{flex-wrap:wrap}
/* Damage meter names stay at least 44 px wide (short names like Aldric were 35-38 px touch targets). */
.damage-meter .meter-name{min-width:min(44px,100%)}
/* Phone QA 7 Oct: Taunt, Leave expedition and Combat review stay fully above the bottom bar. On phones the action row leads the controls block, and the block is
   sticky so that row peeks out just above the bar while the battle column is on screen (--field-rest is set by game-navigation.js). overflow:clip keeps the
   column's clipping without making it a scroll box, so sticky works against the page; older browsers keep today's layout. */
@media(max-width:760px){.shell .arena-column{overflow:clip}.shell .combat-grid .field-controls{position:sticky;bottom:calc(var(--mobile-nav-height,0px) - var(--field-rest,0px));z-index:6;box-shadow:0 -6px 12px #0008}.shell .combat-grid .field-action-controls{order:-1}}
@media(max-width:760px){body.has-mmo-shell:has(.combat-grid .field-action-controls:not([hidden])) #toast{bottom:calc(var(--mobile-nav-height,84px) + 76px)}}
/* Large browser text on phones: character names (one word of up to 16 letters) keep their 0.62 size in page headings, the Party roster,
   the Tavern player seat and the Leaderboards, so a long name stays on one line instead of breaking mid-word. Same size at the default 16 px. */
@media(max-width:600px){.wayfarer-shell .exp-heading h1{font-size:min(1.9rem,30.4px)}.wayfarer-shell .exp-heading.illustrated-heading h1{font-size:min(1.6875rem,27px)}.shell .party-member-identity h2{font-size:min(1.125rem,18px)}.companion-seat-grid .companion-seat h3{font-size:min(1rem,16px)}.rank-identity .text-button{font-size:min(.875rem,14px)}}
/* Large browser text in the fixed-width sidebar: the attention badge keeps its default size and moves toward the edge as text grows
   (8 px at 16 px, 2 px at 24 px), so a two-digit count no longer covers the end of "Character". */
@media(min-width:601px){.shell>.topbar .nav-button>.attention-badge{min-width:min(1.1875rem,19px);height:min(1.1875rem,19px);font-size:min(.94rem,15.04px);right:clamp(2px,calc(24px - 1rem),8px)}}
/* Large browser text on phones: the Leaderboards tabs stay inside their two columns (labels capped at 16 px), so the page no longer scrolls sideways. */
@media(max-width:600px){.shell .rank-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.shell main .rank-tabs.rank-tabs>button{min-width:0;font-size:min(.8125rem,16px)}}
/* Very narrow pages (a phone at 150% zoom or more): reclaim nested padding, stack side-by-side cards and size headings to the page so whole words fit on a line. Ordinary 320 px and wider phones are unchanged. */
@media(max-width:300px){.handbook details.quest-records{padding-inline:6px}.handbook .field-lessons.field-lessons{padding:12px 8px}.handbook .field-lessons ol>li{flex-direction:column;padding:12px 10px;gap:8px}.wayfarer-shell .exp-heading h1{font-size:min(1.9rem,8vw)}.wayfarer-shell .exp-heading.illustrated-heading h1,.shell .market-heading h1{font-size:min(1.6875rem,8vw)}.shell .illustrated-heading>.eyebrow,.shell .illustrated-heading>h1,.shell .illustrated-heading>p{max-width:none}.shell .market-heading{flex-direction:column;align-items:flex-start}.shell .party-member{grid-template-columns:minmax(0,1fr)}.shell .party-member>*{grid-row:auto;grid-column:auto}.shell .crown-products article{grid-template-columns:minmax(0,1fr)}.shell .crown-bonus-list{grid-template-columns:minmax(0,1fr)}.shell .rank-tabs{grid-template-columns:minmax(0,1fr)}.shell .adventurer-rank{grid-template-columns:28px 44px minmax(0,1fr)}.shell .adventurer-rank>.rank-identity{grid-column:1/-1;grid-row:2}.shell .adventurer-rank>.rank-journey{grid-column:1/-1}.shell .character-stats .character-stat:has(.stat-limit-track){grid-template-columns:minmax(0,1fr)}}
/* Alchemist and Enchanter scroll headings: the Crafting guide link sat at the far right, over the painted banner art (13 Oct pass). It now follows the
   subtitle in the text column, as it already did on phones. */
.shell .craft-heading.painted-page-heading{flex-direction:column;align-items:flex-start;justify-content:center;gap:2px}
/* The painted panel frame (::after above) replaces the old .ornate corner bracket on these panels. */
.realm-frame::before,.evermarch-entry .auth-form::before{display:none}
/* Enchanter: the chosen item's sheet keeps clear of the window frame, like the notice line above it (phones pad the whole bench instead). */
@media(min-width:761px){.shell .enchanter-window>.enchanter-sheet{padding:0 24px 22px}}
/* A selected tab stays gold under the pointer or after a tap (ui-kit.css's tab hover otherwise wins on weight and turns it navy). */
.shell.shell.shell :is(.section-tabs,.region-tabs,.market-tabs,.rank-tabs,.notice-board-tabs,.workshop-service-tabs,.inventory-tabs,.inventory-dialog-tabs,.crown-categories,.uk-tabs)>:is(button,a):is(.active,.selected,.chosen,[aria-selected="true"],[aria-pressed="true"],[aria-current="page"],[aria-current="true"]):hover{border-color:#e0bd73;background:var(--uk-surface-lit);color:#fff1cc;box-shadow:inset 0 -3px 0 #e6c889,inset 0 0 0 2px var(--uk-navy-0),inset 0 0 0 3px #e6c88955}

/* /loot-roll-window.css */
.loot-roll-window{position:fixed;right:16px;bottom:20px;z-index:85;width:min(320px,calc(100vw - 24px));max-height:70dvh;overflow:auto;padding:12px;border:1px solid #aa8b54;border-radius:8px;background:#101b27f5;color:#e5ddc9;box-shadow:0 8px 28px #0009}.loot-roll-window h2{font-size:1rem;margin:0 0 8px}.loot-roll-window h2 span{font:.75rem system-ui;color:#c9b78e}.loot-choice-card{padding:10px 0;border-top:1px solid #ffffff20}.loot-choice-card header{display:flex;justify-content:space-between;gap:10px;font-size:.8125rem}.loot-choice-card time{color:#ebc681;font-variant-numeric:tabular-nums}.loot-choice-card p,.loot-roll-window>small{font-size:.6875rem;color:#afc0c9;margin:5px 0 8px}.loot-choice-actions{display:flex;gap:6px}.loot-choice-actions button{flex:1;min-height:44px;min-width:0;border:1px solid #817453;border-radius:4px;background:#25323c;color:#f0e0ba}.loot-choice-actions button:disabled{opacity:.4}.loot-choice-card [role=alert]{color:#ffb3a6}@media(max-width:620px){.loot-roll-window{bottom:82px;right:12px;max-height:48dvh;padding:10px 12px}.loot-roll-window h2{line-height:1.25rem;margin:0 0 6px}.loot-roll-window h2 span{line-height:1rem}.loot-choice-card{padding:8px 0}.loot-choice-card header{line-height:1rem}.loot-choice-card p{line-height:1rem;margin:4px 0 6px}.loot-roll-window>small{display:block;line-height:.9375rem;margin:0}.loot-choice-actions button{min-height:44px}}

.loot-choice-card header>.gear-icon{flex:none;width:44px;height:44px}.loot-choice-card header>strong{flex:1;min-width:0;overflow-wrap:anywhere}.raid-set-choice{border-top-color:#579d80}.raid-set-choice header>strong{color:#a4edcb}

/* /portrait-customization.css */
.portrait-customization{width:min(640px,calc(100vw - 24px));max-height:calc(100dvh - 32px);padding:16px;display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box}.portrait-customization>header{display:flex;align-items:center;justify-content:space-between;gap:12px}.portrait-customization h2{margin:0;font-size:1.375rem}.portrait-customization>p{font-size:.875rem}.portrait-choice-body{overflow:auto;min-height:0;overscroll-behavior:contain}.portrait-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:4px}.portrait-choice{min-width:0;min-height:100px;display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 2px;border:1px solid #72654e;background:#111b27;color:#eadfc7}.portrait-choice img{object-fit:cover;max-width:100%;height:auto;aspect-ratio:1}.portrait-choice[aria-pressed=true]{border-color:#edcf87;background:#b9903e26}.sidebar-character-portrait[data-customize-portraits]{padding:0;cursor:pointer;background:transparent;border:1px solid #b9903e;min-width:44px;min-height:44px}
.rank-portrait:has(img[src^="/assets/portraits-native/"]),.party-status-portrait:has(img[src^="/assets/portraits-native/"]),.sidebar-character-portrait:has(img[src^="/assets/portraits-native/"]){border-radius:6px}
.outfit-portrait>img[src^="/assets/portraits-native/"]{object-fit:contain;background:#101722}
.tavern-portrait[src^="/assets/portraits-native/"]{object-fit:contain;background:#101722;border-radius:6px}

.portrait-person>summary{cursor:pointer;padding:12px 4px;color:#edcf87;font-weight:700;border-bottom:1px solid #72654e66}.portrait-person[open]>summary{margin-bottom:8px}.portrait-person>summary:focus-visible{outline:2px solid #edcf87;outline-offset:-2px}

/* /companion-roster.css */
.companion-slot-strip{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.companion-slot-strip span{border:1px solid #786849;border-radius:5px;padding:8px 10px}.companion-slot-strip .unlocked{background:#b9903e1f;color:#edcf87}.companion-slot-strip .locked{color:#a7a6a1}.companion-roster .tavern-recruit{display:flex;flex-direction:column;gap:10px;min-width:0}.companion-roster .tavern-recruit p{margin:0}.companion-roster form{display:flex;align-items:end;gap:8px;flex-wrap:wrap}.companion-roster form label{flex:1;min-width:120px}.companion-roster select{display:block;width:100%;min-height:44px}.companion-roster .az-actions{margin-top:auto}.companion-roster button{min-height:44px;white-space:normal}.companion-roster details>summary{min-height:44px;cursor:pointer}

.companion-experience progress{display:block;width:100%;height:6px;accent-color:#c2a463;margin-top:5px}.companion-experience p{font-variant-numeric:tabular-nums}
.companion-company{background:radial-gradient(ellipse at 80% 0,#bc813f20,transparent 65%),linear-gradient(145deg,#252016,#14171a);border-color:#ae8b4c66}
.companion-company-intro{display:flex;align-items:start;justify-content:space-between;gap:22px}.companion-company-intro>div{max-width:620px}.companion-company h2{margin:6px 0 10px}.companion-purse{display:grid;gap:5px;text-align:right;flex:none;color:#c8b58e;font-variant-numeric:tabular-nums}.companion-purse strong{font:1.375rem Georgia;color:#edcf87}.companion-purse span{font:.75rem system-ui}
.companion-seat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:25px 0 16px}.companion-seat{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:18px 12px;min-width:0;border:1px solid #bb9b5e50;background:linear-gradient(160deg,#d5ad5914,#070b0e80);border-radius:8px}.companion-seat:before{content:'';position:absolute;inset:5px;border:1px solid #bfaa741c;border-radius:5px;pointer-events:none}.companion-seat .tavern-portrait,.companion-seat-emblem{width:72px;height:72px;border-radius:50%;object-fit:cover;border:2px solid #ba9c60;box-shadow:0 0 0 5px #ba9c6012}.companion-seat-emblem{display:grid;place-items:center;font:40px Georgia;color:#c6ab73;background:#ba9c600a}.companion-seat.locked .companion-seat-emblem{border-color:#8d795354;color:#928366}.companion-seat.player-seat{border-color:#b6924caa;background:linear-gradient(160deg,#d5ad5924,#171a17)}.companion-seat .eyebrow{font-size:.625rem;letter-spacing:.1em;margin:6px 0 0}.companion-seat h3{font:1.0625rem/1.3 Georgia;color:#e3cfaa;margin:0;overflow-wrap:anywhere}.companion-seat span{font:.75rem/1.4 system-ui;color:#bfb6a4}.companion-seat button{width:100%;margin-top:auto;padding:8px}.companion-seat-help{line-height:1.6}.companion-first-seat{border-top:1px solid #b6924c40;padding-top:16px;color:#cabea6}.companion-first-seat strong{color:#edd49f}.companion-first-seat p{margin:7px 0 0;font:.8125rem/1.6 system-ui}.companion-first-seat b{color:#eed39b}
.companion-party-step{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:20px 0}.companion-recruit-heading{margin:28px 0 16px}.companion-recruit-heading h2{margin:0 0 8px}.companion-recruit-heading p{font:.8125rem/1.6 system-ui;color:#aeb7bd;margin:0}.companion-roster .tavern-recruits{gap:18px}.companion-roster .tavern-recruit{padding:20px;border:1px solid #b69b673a;border-radius:8px;background:linear-gradient(155deg,#b9924010,transparent 50%),#11171be8;box-shadow:0 8px 24px #0002;gap:12px}.companion-roster .tavern-recruit.is-hired{border-color:#91b49b66;background:linear-gradient(155deg,#659c7718,transparent 50%),#11171be8}.companion-roster .tavern-recruit .tavern-portrait{width:68px;height:76px;min-width:68px;border-radius:8px}.companion-roster .tavern-recruit header{gap:12px}.companion-roster .tavern-recruit h2{font-size:1.1875rem}.companion-roster .companion-readiness{font:.75rem system-ui;color:#b6c0be}.companion-roster .companion-bring{width:100%;max-width:none;margin:0;grid-column:auto;grid-row:auto}.companion-roster .tavern-recruit form{gap:7px}.companion-roster .tavern-recruit form button{padding:8px 11px}.companion-role-help{line-height:1.5;min-height:36px}.companion-workshop{border-top:1px solid #b69b6725;padding-top:14px;display:grid;gap:10px;margin-top:auto}.companion-workshop button{width:100%}.companion-about{margin-top:24px}.companion-about summary{color:#e1c998}
.companion-update-dialog{width:min(620px,calc(100vw - 24px));padding:26px;max-height:calc(100dvh - 32px);overflow:auto}.companion-update-dialog h2{font:1.625rem/1.3 Georgia;margin:9px 0 18px}.companion-update-dialog p,.companion-update-dialog li{line-height:1.6}.companion-update-dialog ul{padding-left:22px}.companion-update-dialog li{margin:10px 0}.companion-update-dialog strong{color:#edcf87}.companion-update-dialog .full{margin-top:12px}
@media(max-width:760px){.companion-seat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.companion-company-intro{gap:12px}.companion-purse strong{font-size:1.125rem}.companion-company-intro p{font-size:.8125rem}.companion-roster .tavern-recruits{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.companion-roster .tavern-recruit{padding:15px}.companion-roster .tavern-recruit header{gap:9px}.companion-roster .tavern-recruit .tavern-portrait{width:55px;height:64px;min-width:55px}.companion-roster .tavern-recruit h2{font-size:1.0625rem}}
@media(max-width:540px){.companion-company-intro{display:block}.companion-purse{display:flex;align-items:center;gap:10px;text-align:left;margin-top:18px!important}.companion-roster .tavern-recruits{grid-template-columns:1fr}.companion-roster .tavern-recruit{padding:18px}.companion-roster .tavern-recruit .tavern-portrait{width:68px;height:76px;min-width:68px}.companion-seat{padding:14px 9px}.companion-seat h3{font-size:1rem}.companion-seat .tavern-portrait,.companion-seat-emblem{width:60px;height:60px}.companion-seat .eyebrow{font-size:.5625rem}.companion-party-step{display:block}.companion-party-step button{width:100%;margin-top:10px}.companion-update-dialog{padding:20px}.companion-update-dialog h2{font-size:1.4375rem}}
@media(max-width:360px){.companion-seat-grid{grid-template-columns:minmax(0,1fr)}.companion-seat h3{overflow-wrap:break-word}}
/* Recruit cards before the first companion seat (game QA F6): the role, skill and upgrade controls sit in one closed disclosure. */
.tavern-recruit .companion-manage{margin-top:10px}.tavern-recruit .companion-manage>summary{min-height:44px;padding:11px 0;box-sizing:border-box;cursor:pointer;color:var(--gold,#e2c27d)}
/* Large browser text: the specialization picker keeps room for its longest name (Shieldguard, Marksmanship) and the Apply button moves below it instead of squeezing it. */
.companion-roster .tavern-recruit form>label{min-width:min(100%,9rem)}

/* Specialization names ("Warbanner · Tank", "Frost · Ranged DPS") need the whole card width; the Apply button wraps under the select. */
.companion-roster form[data-realm-form="companion-spec"]>label{min-width:100%}

/* /companion-upgrade.css */
.companion-upgrade-report{position:relative;width:min(760px,calc(100vw - 28px));max-height:calc(100dvh - 32px);overflow:auto;padding:30px;background:radial-gradient(ellipse at 85% 0,#aa79322a,transparent 55%),#12191d;border:1px solid #b49b68;border-radius:12px;box-shadow:0 25px 100px #000b;color:#e2ddcf}.companion-upgrade-report header{display:flex;align-items:center;gap:18px;padding-right:28px}.companion-upgrade-report header .tavern-portrait{width:80px;height:88px;object-fit:cover;border:1px solid #bb9d61;border-radius:9px;box-shadow:0 0 0 5px #bba06612}.companion-upgrade-report .eyebrow{font-size:.625rem;letter-spacing:.11em;color:#c8ad77;margin:0 0 8px}.companion-upgrade-report h2{font:1.75rem/1.25 Georgia;margin:0 0 8px;color:#f1d9a4}.companion-upgrade-report header p:last-child{margin:0;font:.8125rem/1.5 system-ui;color:#b7c4bb}.upgrade-report-close{position:absolute;right:14px;top:12px;min-width:44px;min-height:44px;border:0;background:transparent;color:#d1b983;font-size:1.75rem;cursor:pointer}.upgrade-report-intro{font:.875rem/1.6 system-ui;color:#c7c4b9;margin:24px 0 18px}.companion-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.companion-stat-change{border:1px solid #96846235;border-radius:7px;padding:14px 12px;background:#060c0f55;font-variant-numeric:tabular-nums}.companion-stat-name{font:.75rem system-ui;color:#b9b6aa}.companion-stat-change>div{display:flex;align-items:center;gap:8px;margin:10px 0 5px;flex-wrap:wrap}.companion-stat-change strong{font:1.4375rem Georgia;color:#e3d6b4}.companion-stat-change small{font:.6875rem system-ui;color:#999f9b}.companion-upgrade-report .before{color:#9da7aa;font-variant-numeric:tabular-nums}.upgrade-arrow{color:#b89c65}.companion-stat-change.gain{border-color:#699c7855;background:linear-gradient(135deg,#5d9d7320,#080f1455)}.companion-stat-change.gain strong,.companion-stat-change.gain small{color:#abd2ae}.companion-stat-change.loss strong,.companion-stat-change.loss small{color:#e7a694}.companion-report-equipment,.companion-report-cost{margin-top:24px}.companion-upgrade-report h3{font:1.0625rem Georgia;color:#e2c995;margin:0 0 12px}.companion-gear-change{display:flex;gap:14px;padding:16px 0;border-top:1px solid #b69b672c}.companion-gear-mark{width:42px;height:46px;display:grid;place-items:center;flex:none;border:1px solid #b49b6850;border-radius:6px;color:#d9b874;background:#b28e3413;font-size:1.5rem}.companion-gear-change h3{margin:0 0 7px}.companion-gear-change p{font:.75rem/1.6 system-ui;margin:3px 0}.companion-gear-change strong{color:#ddd2b6}.companion-report-cost{padding:18px;border:1px solid #b49b683b;border-radius:8px;background:#070c0f55}.companion-report-cost ul{display:flex;flex-wrap:wrap;gap:10px 24px;padding:0;margin:0;list-style:none}.companion-report-cost li{display:flex;gap:10px;font:.8125rem system-ui}.companion-report-cost strong{color:#e3c894}.companion-report-cost .small-note{margin:12px 0 0}.companion-upgrade-report footer{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:24px;padding-top:20px;border-top:1px solid #b49b6833}.companion-upgrade-report footer button{min-width:130px;min-height:44px}.companion-review-button{border:1px solid #c9aa68!important;background:linear-gradient(145deg,#a97b292b,#25221b)!important;color:#f0d49b!important}.companion-review-button.unread{box-shadow:0 0 15px #c09c4220}.companion-review-button .review-new{display:inline-block;font:.625rem system-ui;margin-left:8px;text-transform:uppercase;letter-spacing:.07em;color:#bdd4ac}@media(max-width:540px){.companion-upgrade-report{padding:22px 16px}.companion-upgrade-report header{gap:12px}.companion-upgrade-report header .tavern-portrait{width:58px;height:68px}.companion-upgrade-report h2{font-size:1.4375rem}.companion-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.companion-stat-change{padding:12px 10px}.companion-stat-change strong{font-size:1.3125rem}.companion-upgrade-report footer{align-items:stretch;flex-direction:column}.companion-upgrade-report footer button{width:100%}}

.companion-upgrade-report header>div{min-width:0;flex:1}.modal-backdrop .companion-upgrade-report h2{font:1.75rem/1.25 Georgia;overflow-wrap:anywhere}.companion-upgrade-report header .eyebrow{padding-right:16px}@media(max-width:540px){.modal-backdrop .companion-upgrade-report h2{font-size:1.4375rem}.companion-upgrade-report header{padding-top:20px}}

@media(max-width:540px){.companion-upgrade-backdrop,.companion-ready-backdrop{padding-inline:12px}}

/* /creation-motion.css */
/* Character creation: one visible character, clear choices, no nested scrolling. */
.creator [data-hero="berserker"] .outfit-portrait{overflow:hidden}.creator [data-hero="berserker"] .outfit-portrait img{transform:scale(2.4);transform-origin:50% 26%}
.creator-shell .creator{max-width:1440px;padding:24px 26px 40px}.creator .page-heading{margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #b793514d}.creator .page-heading h1{font-size:clamp(1.625rem,3vw,2.375rem);margin:5px 0 6px}.creator-intro{color:#bec8cc;margin:0;font-size:.875rem}
.creator .creator-grid{display:grid;grid-template-columns:205px minmax(280px,1fr) 310px;gap:18px;min-height:0;align-items:stretch}.creator .choices{padding:18px 12px;display:flex;flex-direction:column;gap:6px;background:linear-gradient(145deg,#18242c,#0d161f);min-width:0}.creator .choices h2{font-size:1.0625rem;margin:0 8px 8px}.creator .choice{min-height:57px;margin:0;padding:8px;gap:9px;border-radius:5px;border:1px solid #8a794b44;flex-shrink:0}.creator .choice .outfit-portrait{width:36px;height:40px;flex-basis:36px}.creator .choice span{min-width:0}.creator .choice b{font-size:.875rem}.creator .choice small{font-size:.6875rem}.creator .choice.chosen{background:linear-gradient(110deg,#a779343b,#273643);border-color:#d6b775;box-shadow:inset 3px 0 #e2bc6b}.creator .choice i{margin-left:auto;color:#f3d999;font-style:normal}
.creator .creator-stage{position:relative;display:flex;flex-direction:column;align-self:stretch;min-height:0;height:auto;overflow:hidden;background:radial-gradient(ellipse at 50% 39%,color-mix(in srgb,var(--class-tone) 19%,transparent),transparent 65%),linear-gradient(145deg,#1e2a32,#0a141e);border:1px solid #c7a46788!important;border-radius:9px}.creator-preview-label{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:19px 22px 0;z-index:1}.creator-role{font:.75rem var(--ui);color:#eee0bd;border:1px solid #b59a675e;border-radius:20px;padding:5px 10px}.creator .hero-pedestal{position:relative;flex:1 0 360px;height:360px;min-height:360px;max-height:none;padding:18px 24px 0;overflow:hidden}.creator .hero-pedestal:after{content:"";position:absolute;bottom:17%;left:21%;width:58%;height:14%;border:1px solid #cfb57844;border-radius:50%;background:radial-gradient(ellipse,#b4b99815,transparent 65%);pointer-events:none}.creator .showcase-hero{max-width:100%;max-height:320px;object-fit:contain}
.creation-motion-wrap{position:absolute;left:50%;bottom:24%;width:0;height:0;pointer-events:none;z-index:2}.creation-motion-controls{position:relative;z-index:3;display:flex;align-items:center;flex-direction:column;gap:8px;padding:0 12px 12px}.creation-motion-buttons{display:flex;padding:4px;border:1px solid #ad946866;border-radius:28px;background:#0a111bbf;gap:3px}.creation-motion-controls button{min-width:76px;min-height:44px;padding:8px 15px;border:1px solid transparent;border-radius:22px;background:transparent;color:#bac8cf;font-size:.8125rem}.creation-motion-controls button[aria-pressed=true]{border-color:#d2b478;background:#98713436;color:#ffe5ac}.creation-motion-controls button:focus-visible{outline:2px solid #ffe4a0;outline-offset:2px}.creation-motion-controls small{min-height:17px;text-align:center;color:#aebbc2;font-size:.6875rem}
.creator .hero-caption{flex:none;min-height:0;height:auto;text-align:center;padding:20px 24px 24px;background:#09121b94;border-top:1px solid #b59a6733}.creator .hero-caption h2{font-size:1.875rem;margin:0 0 8px}.creator .hero-caption p{font-size:.8125rem;line-height:1.65;max-width:38ch;margin:0 auto;color:#c6d0d5}.creator .creation-details{padding:24px 22px;display:flex;flex-direction:column;background:linear-gradient(155deg,#1c2832,#0e1822);min-width:0}.creator .creation-details>h2{font-size:1.625rem;margin:8px 0 24px}.creator-paths h3{font-size:.875rem;margin:0 0 8px;color:#efdab2}.creator-paths p{font-size:.75rem;line-height:1.6;color:#b8c6cd;margin:0 0 12px}.creator-paths ul{list-style:none;display:flex;flex-wrap:wrap;gap:7px;padding:0;margin:0 0 20px}.creator-paths li{font-size:.75rem;border:1px solid #c4a5754a;background:#c4a5750b;border-radius:5px;padding:7px 10px;color:#ead9b6}.creator-race{border-top:1px solid #b59a6744;padding:14px 0;color:#b8c6cd}.creator-race summary{cursor:pointer;font-size:.75rem;min-height:24px}.creator-race p{font-size:.75rem;line-height:1.7;margin:10px 0}.creator #createForm{margin-top:auto;padding-top:23px;border-top:1px solid #b59a6744}.creator #createForm label{font-size:.875rem}.creator #characterName{width:100%;min-height:48px;border-radius:5px}.creator #createForm>.red-button{min-height:48px;border-radius:5px;font-size:.875rem}.creator .name-status{font-size:.6875rem;line-height:1.6;min-height:34px}.creator-start-note{font-size:.6875rem;line-height:1.65;color:#acbac3;margin:14px 0 0;text-align:center}
@media(max-width:1050px){.creator .creator-grid{grid-template-columns:175px minmax(250px,1fr)}.creator .creation-details{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:0 28px}.creator .creation-details>h2{grid-column:1}.creator .creator-paths,.creator .creator-race{grid-column:1}.creator #createForm{grid-column:2;grid-row:1/5;align-self:center;margin:0;width:100%;max-width:none}.creator .creator-start-note{grid-column:2}.creator .hero-pedestal{flex-basis:350px;min-height:350px;height:350px}}
@media(max-width:600px){.creator-shell .creator{padding:18px 10px 28px}.creator .page-heading{margin-bottom:14px}.creator .creator-grid{display:flex;flex-direction:column;gap:13px}.creator .choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:10px;gap:6px}.creator .choices h2{display:none}.creator .choice{display:flex;flex-direction:column;justify-content:center;gap:4px;min-height:79px;padding:7px 3px}.creator .choice .outfit-portrait{width:30px;height:32px;flex-basis:32px}.creator .choice b{font-size:.75rem}.creator .choice small,.creator .choice i{display:none}.creator .creator-stage{min-height:0;height:auto}.creator-preview-label{padding:14px 17px 0}.creator .hero-pedestal{flex:0 0 270px;min-height:270px;height:270px;max-height:none;padding:10px 18px 0}.creator .showcase-hero{max-height:245px}.creator .hero-caption{padding:17px 18px 20px}.creator .hero-caption h2{font-size:1.6875rem}.creator .creation-details{display:flex;padding:22px 20px}.creator .creation-details>h2{margin-bottom:18px}.creator #createForm{margin-top:6px;max-width:none}.creator .creator-role{font-size:.6875rem}.creator .creation-motion-controls button{min-width:70px}}

/* Role chips, read from the tree data (IRPPaths.treeRole / classRoles). Shown at every width. */
.creator-paths li{display:flex;align-items:center;gap:7px}.creator-paths .role-chip{font-size:.625rem;letter-spacing:.02em;border-radius:999px;padding:2px 7px;background:#ffffff10;color:#d4a58b;border:1px solid currentColor}.creator-paths .role-chip[data-role="Tank"]{color:#d2b774}.creator-paths .role-chip[data-role="Healer"]{color:#9ec9b0}
@media(max-width:600px){.creator .choice>span{text-align:center}.creator .choice small{display:block;font-size:.625rem;line-height:1.25;color:#b8c9d4}}

/* /challenge-quests.css */
.challenge-quest-card{max-width:48rem;overflow-wrap:anywhere}
.challenge-boss-heading{display:flex;align-items:center;gap:1rem}
.challenge-boss-heading .enemy-portrait{flex:none;width:76px;height:76px;border:1px solid #b38858;border-radius:6px;background:#251d18}
.challenge-boss-heading h3{margin:.25rem 0;font-size:1.4rem;line-height:1.2}
.challenge-boss-heading p{margin:.3rem 0}
.challenge-threats,.challenge-quest-card ul{display:flex;flex-wrap:wrap;gap:.45rem;list-style:none;padding:0}
.challenge-threats li,.challenge-quest-card li{padding:.4rem .6rem;border:1px solid #946d4e;border-radius:4px;background:#30251c;color:#f4dbc0}
.challenge-quest-card button,.charm-equipment button{min-height:44px;max-width:100%;white-space:normal;overflow-wrap:anywhere}
.charm-equipment .item-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.charm-equipment .paper-slot{min-width:0;overflow-wrap:anywhere;display:flex;flex-direction:column;align-items:stretch;gap:.5rem}
.charm-equipment .paper-slot>span:first-child{font-size:.85rem;color:#dcc698;text-align:left}
.charm-equipment .paper-slot .item-tile{position:static;display:flex;align-items:center;justify-content:center;width:100%;height:auto;aspect-ratio:auto;min-height:6rem;margin:0;box-sizing:border-box;padding:.75rem;text-align:center;line-height:1.35;overflow-wrap:normal;word-break:normal}
.charm-equipment .paper-slot .charm-slot-button{background:linear-gradient(145deg,#342a1d,#171e22);border:1px solid #b48c52;border-radius:6px;color:#ffe0a2;font-size:1rem}
.charm-equipment .paper-slot p{margin:0;line-height:1.5}
@media(max-width:480px){.charm-equipment .item-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:400px){.challenge-boss-heading{gap:.6rem}.challenge-boss-heading h3{font-size:1.15rem}.challenge-boss-heading .enemy-portrait{width:64px;height:64px}}

.challenge-dialog{max-width:min(48rem,96vw);max-height:90vh;overflow-y:auto}.challenge-threat-summary{font-size:.85rem;line-height:1.5;color:#f4dbc0;padding:0 .5rem}

.boss-hunt-page{max-width:70rem}.boss-hunt-art{width:128px;height:128px;object-fit:contain;flex:none;background:radial-gradient(ellipse,#59412655,transparent 70%)}.boss-hunt-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1rem 0}.boss-hunt-facts div{min-width:0;border-top:1px solid #80603c;padding-top:.65rem}.boss-hunt-facts dt{font-size:.78rem;text-transform:uppercase;color:#c6ad85;letter-spacing:.05em}.boss-hunt-facts dd{margin:.25rem 0;line-height:1.5;color:#f4e5c5}.boss-hunt-new{color:#f4d78f;font-size:.7rem;letter-spacing:.05em;margin-left:.5rem}.boss-hunt-page details{margin:1rem 0}.boss-hunt-page summary{min-height:44px;cursor:pointer}.boss-hunt-empty{max-width:38rem}@media(max-width:450px){.boss-hunt-art{width:96px;height:112px}.boss-hunt-facts{grid-template-columns:1fr}.boss-hunt-page .challenge-boss-heading h2{font-size:1.3rem}}

button[data-challenge-choice^="enter:"]{display:block;width:100%;margin:8px 0 0;box-sizing:border-box}
.hunt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));gap:1rem;margin-top:1rem}
.hunt-tile{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.6rem .8rem;grid-template-rows:auto 1fr;align-content:stretch;min-width:0;padding:.9rem;border:1px solid #776343;border-radius:6px;background:linear-gradient(160deg,#182234,#0c1420);box-shadow:inset 0 0 0 2px #0c1420,inset 0 0 0 3px #74603e55}
.hunt-tile.is-ready{border-color:#c8a35b}
.hunt-tile .boss-hunt-art{width:84px;height:84px}
.hunt-tile-body{min-width:0;align-self:center}.hunt-tile-body h2{margin:.15rem 0;font-size:1.2rem;line-height:1.2}.hunt-tile-body .eyebrow{margin:0;font-size:.72rem}
.hunt-tile-mechanic{margin:0;color:#e0c483;font-size:.9rem}
.hunt-tile>ul,.hunt-tile>p,.hunt-tile>button{grid-column:1/-1}
.hunt-tile-facts{display:grid;gap:.25rem;margin:0;padding:0;list-style:none;font-size:.85rem;color:#c9d1da}
.hunt-tile .exp-error,.hunt-tile .small-note{margin:0;font-size:.85rem}
.hunt-tile>button{min-height:44px;width:100%;margin:0}
.hunt-tile .boss-hunt-art{overflow:hidden;position:relative}
.hunt-tile .boss-hunt-art .enemy-portrait{display:block;width:100%;height:100%;max-width:100%}
.hunt-notices h2{margin:0 0 .5rem;font-size:1.05rem}
.hunt-notices ul{display:grid;gap:.4rem;margin:0;padding:0;list-style:none}
.hunt-notices li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:44px}
.hunt-notices li span{min-width:0;overflow-wrap:anywhere}
.hunt-notices li button{flex:none;min-height:44px}
/* Hunt tiers (public/hunt-tiers.js; drawn only while IRP_HUNT_TIERS_VERSION is on): a wrapping row of 44 px tier buttons. */
.hunt-tiers{margin:.75rem 0}.hunt-tier-row{display:flex;flex-wrap:wrap;gap:.4rem;margin:.4rem 0}.hunt-tier-row .hunt-tier{min-width:44px;min-height:44px;padding:0 .6rem}.hunt-tier-row .hunt-tier.is-locked{opacity:.45}
/* Hunt dangers (public/hunt-dangers.js; drawn only while IRP_HUNT_DANGERS_VERSION is on): a wrapping row of 44 px toggles, name over one line of text. */
.hunt-dangers{margin:.75rem 0}.hunt-danger-row{display:flex;flex-wrap:wrap;gap:.4rem;margin:.4rem 0}.hunt-danger-row .hunt-danger{flex:1 1 10rem;min-width:0;max-width:100%;min-height:44px;padding:.4rem .6rem;display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;text-align:left;white-space:normal}.hunt-danger-row .hunt-danger span{font-size:.85em;line-height:1.25}.hunt-danger-row .hunt-danger:disabled:not([aria-pressed="true"]){opacity:.55}
/* Second fix (14 Oct): the chosen Hunt level is the gold main-button look (public/ui-kit.css .uk-btn-primary). Its class "primary" has no style
   of its own, so it showed as a flat grey button that read as disabled. Outside the Choose window the row is read-only (disabled) but the
   chosen level still reads as chosen. */
.hunt-tier-row .hunt-tier[aria-pressed="true"],.hunt-tier-row .hunt-tier[aria-pressed="true"]:disabled{opacity:1;border:1px solid #e6c98f;border-radius:4px;background:linear-gradient(180deg,#c9a468,#8f6f3c);color:#1b1509;font-weight:800;text-shadow:none;box-shadow:inset 0 1px 0 #fff2c95c,inset 0 0 0 2px #8a682f66,0 0 0 2px #e6c98f40,0 2px 5px #0005;cursor:default}
.hunt-tier-row .hunt-tier[aria-pressed="true"]:focus-visible{outline:2px solid #fbe3ac;outline-offset:2px}
/* A picked danger stays lit, in the Choose window and in the read-only row while waiting or fighting (a disabled button is otherwise dimmed and grey). */
.hunt-danger-row .hunt-danger[aria-pressed="true"],.hunt-danger-row .hunt-danger[aria-pressed="true"]:disabled{opacity:1;color:#fff6e0;background:linear-gradient(#a87a35,#6e4e20);border-color:#dab36b;box-shadow:inset 0 0 0 1px #f3d58f}

/* /periodic-quests.css */
.periodic-quests{display:grid;gap:18px;min-width:0}
.periodic-intro{margin:0;color:#c7bea8}
.periodic-set{min-width:0;padding:14px;border:1px solid #534b3b;background:#131a1e}
.periodic-set>header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px;margin-bottom:10px}
.periodic-set>header h2{margin:0;font-size:1.15rem;display:flex;align-items:center;gap:6px}
.periodic-timer{font-size:.85rem;color:#dcc698}
.periodic-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:10px}
.periodic-quest{min-width:0;padding:12px;border:1px solid #3f3a2e;background:#0f151a;overflow-wrap:anywhere}
.periodic-quest.is-ready{border-color:#cfaa57;box-shadow:0 0 10px #cfaa5733}
.periodic-quest.is-claimed{opacity:.7}
.periodic-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.periodic-row h3{margin:0;font-size:1rem;line-height:1.25}
.periodic-count{flex:none;font-size:.85rem;color:#dcc698;white-space:nowrap}
.periodic-bar{height:8px;margin:8px 0;border:1px solid #534b3b;background:#0a0f13;border-radius:2px;overflow:hidden}
.periodic-bar>span{display:block;height:100%;background:linear-gradient(90deg,#8d6f36,#cfaa57)}
.periodic-help{margin:0 0 4px;font-size:.8rem;color:#a9a08a}
.periodic-quest .quest-reward{margin:0 0 8px;font-size:.85rem}
.periodic-status{min-height:44px;display:flex;align-items:center}
.periodic-status button{min-height:44px;width:100%;white-space:normal}
.periodic-state{font-size:.85rem;color:#a9a08a}
.quest-tabs .quest-ready-badge{margin-left:6px}
@media(max-width:360px){.periodic-set{padding:10px}.periodic-row{flex-direction:column;gap:2px}}
.linklike{background:none;border:0;padding:0;color:#dcc698;text-decoration:underline;cursor:pointer;font:inherit}
.periodic-balance{margin:0;color:#dcc698}
.periodic-cap{margin:0 0 10px;font-size:.8rem;color:#a9a08a}
.quest-tree{display:grid;gap:16px;min-width:0}
.tree-top p{margin:0 0 6px}
.tree-balance{color:#dcc698}
.tree-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:44px}
.tree-actions button{min-height:44px;flex:1 1 120px;white-space:normal}
.tree-state{font-size:.85rem;color:#a9a08a}
.tree-panel{padding:14px;border:1px solid #534b3b;background:#131a1e}
.tree-form{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-top:8px}
.tree-form label{display:grid;gap:4px;flex:1 1 160px;font-size:.85rem}
.tree-form input[name=name]{min-height:44px;box-sizing:border-box;width:100%}
.tree-form button{min-height:44px}
.tree-frame-sample,.outfit-portrait[class*=frame-],.frame-bronze,.frame-silver,.frame-ember,.frame-verdant{box-sizing:border-box}
.tree-frame-sample{flex:none;width:28px;height:28px;border-radius:4px;background:#0a0f13;border:3px solid #7d6a3c}
.frame-bronze{border-color:#a8703a!important;box-shadow:0 0 0 1px #4a2f16,0 0 8px #a8703a66}
.frame-silver{border-color:#c9d1d8!important;box-shadow:0 0 0 1px #59626b,0 0 8px #c9d1d866}
.frame-ember{border-color:#e2712d!important;box-shadow:0 0 0 1px #6a2a0d,0 0 10px #ff8a3d99}
.frame-verdant{border-color:#7fb35a!important;box-shadow:0 0 0 1px #2f4a1c,0 0 8px #7fb35a77}
.outfit-portrait[class*=frame-]{border:3px solid;border-radius:4px}
.character-title{display:block;font-size:.8rem;color:#dcc698;font-weight:normal}
.bag-slot-grid[data-favorites-only=true] .item-tile:not([data-favorite]){opacity:.18}
.item-favorite-mark{position:absolute;top:2px;left:3px;font-size:.75rem;line-height:1;color:#ffd76a;text-shadow:0 0 3px #000}
.perk-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}
.perk-row button,.preset-form button{min-height:44px}
.preset-list{display:grid;gap:8px;margin:8px 0}
.preset-card{padding:10px;border:1px solid #3f3a2e;background:#0f151a}
.preset-card h4{margin:0 0 4px}
.preset-form{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}
.preset-form label{display:grid;gap:4px;flex:1 1 140px;font-size:.85rem}
.preset-form input{min-height:44px;box-sizing:border-box;width:100%}
/* ---- Quest Tree: a painted perk tree (markup and layout table in quest-tree-ui.js) ---- */
.qt{--qt-tile:60px;--qt-nw:92px;--qt-gold:#d6b575;--qt-gold-hi:#f0ce83;--qt-dim:#5b5548;--qt-focus:#f4cd86;display:grid;gap:14px;min-width:0}
.qt [hidden]{display:none!important}
.qt-defs{position:absolute;width:0;height:0;overflow:hidden}
.qt-top{display:grid;gap:8px}
.qt-top .small-note{margin:0;color:#c7bea8}
.qt .tree-balance{position:relative;display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-height:58px;box-sizing:border-box;margin:0;padding:8px 16px 8px 64px;border:1px solid #8f7645;border-radius:6px;background:linear-gradient(100deg,#3b2a14,#1a120b 70%);box-shadow:inset 0 0 0 2px #0c0805,inset 0 0 0 3px #b8955a3d;font:1rem Georgia,serif;color:#ead9b4}
.qt .tree-balance strong{font-size:1.7rem;line-height:1;color:#ffe1aa;text-shadow:0 0 12px #e0a83b66;margin-right:2px}
.qt-coin{position:absolute;left:10px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:42px;height:42px;border-radius:50%;border:2px solid #d6b575;background:radial-gradient(circle at 50% 30%,#6b4d1f,#20160a 75%);box-shadow:0 0 14px #d6a64a55,inset 0 0 0 2px #0c0805}
.qt-coin .qt-glyph{width:26px;height:26px}
.qt-glyph{display:block;width:32px;height:32px;fill:color-mix(in srgb,var(--qt-tone,#e0b766) 24%,transparent);stroke:url(#qt-gild);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 1px #000c)}
.qt-tabs{display:flex;flex-wrap:wrap;gap:6px}
.qt-tab{display:inline-flex;align-items:center;justify-content:center;gap:8px;flex:0 1 auto}
.qt-tab small{font:700 .6875rem system-ui;color:#c7a85f;padding:1px 6px;border:1px solid #6f5d3c;border-radius:9px;background:#0d0906}
.qt-tab .fantasy-icon{width:26px;height:26px;flex-basis:26px}
.qt-tab .qt-tab-icon{display:grid;place-items:center;width:26px;height:26px}
.qt-tab .qt-glyph{width:22px;height:22px}
.qt-stage{min-width:0;overflow:hidden;background:#0e0906}
.qt-pane{min-width:0}
.qt-banner{min-height:112px;box-sizing:border-box;padding:22px 30px 16px;display:flex;flex-direction:column;justify-content:flex-end;gap:2px;background:linear-gradient(90deg,#120c07f5 0%,#120c07c4 38%,#120c0726 92%),var(--qt-art) center 30%/cover;border-bottom:2px solid transparent;border-image:linear-gradient(90deg,var(--qt-tone),#8f764566 60%,transparent) 1}
.qt-banner h3{margin:0;font:600 1.7rem/1.1 Georgia,serif;letter-spacing:.04em;color:#f3dfae;text-shadow:0 2px 6px #000,0 0 22px color-mix(in srgb,var(--qt-tone) 55%,transparent)}
.qt-banner .small-note{margin:0;color:#e0d3b6;text-shadow:0 1px 4px #000}
.qt-body{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;background:radial-gradient(ellipse at 50% 0,#4a3518aa,transparent 62%),radial-gradient(#e0b76614 .6px,transparent .6px) 0 0/26px 26px,linear-gradient(#1c130b,#0e0906)}
.qt-map{min-width:0;padding:16px 26px 30px}
.qt-board{position:relative;max-width:560px;margin:0 auto}
.qt-links{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.qt-wire{fill:none;stroke:#8f7645;stroke-opacity:.38;stroke-width:2;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.qt-wire.is-open{stroke:#d6b575;stroke-opacity:.75}
.qt-wire.is-lit{stroke:#ffd977;stroke-opacity:1;stroke-width:3;filter:drop-shadow(0 0 4px #ffb93cd0)}
.qt-hub{position:absolute;width:11px;height:11px;margin-left:-5.5px;transform:rotate(45deg);background:#2c2010;border:1px solid #8f7645;box-shadow:0 0 0 2px #120c07}
.qt-hub.is-lit{background:#ffd977;border-color:#fff0c0;box-shadow:0 0 0 2px #120c07,0 0 10px #ffb93cd0}
.qt-root{position:absolute;transform:translateX(-50%);width:220px;text-align:center;pointer-events:none}
.qt-crest{width:42px;height:42px;margin:8px auto 12px;position:relative;border-color:var(--qt-tone)!important;box-shadow:0 0 0 5px #151009,0 0 0 6px #8f7645,0 0 30px color-mix(in srgb,var(--qt-tone) 45%,transparent)}
.qt-crest>span{display:grid;place-items:center}
.qt-crest .qt-glyph{width:26px;height:26px}
.qt-crest .fantasy-icon{width:32px;height:32px;flex-basis:32px}
.qt-root strong{display:block;font:600 .9375rem Georgia,serif;letter-spacing:.16em;text-transform:uppercase;color:#f0d9a2;text-shadow:0 2px 4px #000}
.qt-root .qt-label{width:max-content;max-width:none;margin:0 auto}
.qt-root small{display:block;margin-top:2px;font:.625rem system-ui;letter-spacing:.1em;text-transform:uppercase;color:#b3a583}
.qt-slot{position:absolute;transform:translateX(-50%);width:var(--qt-nw)}
.qt-node{appearance:none;display:grid;justify-items:center;gap:5px;width:100%;min-height:44px!important;margin:0;padding:0!important;border:0!important;border-radius:10px;background:none!important;box-shadow:none!important;color:inherit;font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.qt-tile{position:relative;display:grid;place-items:center;box-sizing:border-box;width:var(--qt-tile);height:var(--qt-tile);border-radius:14px;border:3px solid var(--qt-tone);background:radial-gradient(circle at 50% 28%,color-mix(in srgb,var(--qt-tone) 30%,#1c130b),#0b0705 78%);box-shadow:inset 0 0 0 2px #0a0704,inset 0 0 0 3px color-mix(in srgb,var(--qt-tone) 45%,transparent),0 4px 10px #000b;transition:box-shadow .15s,border-color .15s}
.qt-icon{display:grid;place-items:center;width:calc(var(--qt-tile) - 20px);height:calc(var(--qt-tile) - 20px)}
.qt-icon .fantasy-icon{width:100%;height:100%;flex-basis:auto}
.qt-icon .qt-glyph{width:100%;height:100%}
.qt-frame-icon{position:relative;display:block;width:100%;height:100%;border-radius:7px;border-width:4px;background:#0a0f13}
.qt-frame-icon::after{content:"";position:absolute;inset:0;opacity:.75;background:radial-gradient(circle at 50% 36%,#d9c79a 0 17%,transparent 18%),radial-gradient(ellipse at 50% 104%,#d9c79a 0 40%,transparent 41%)}
.qt-rank{position:absolute;right:-7px;bottom:-7px;min-width:28px;padding:1px 5px;box-sizing:border-box;text-align:center;border:1px solid #8f7645;border-radius:6px;background:#160f08;font:700 .625rem/.875rem Georgia,serif;color:#cdbd97;white-space:nowrap}
.qt-worn{position:absolute;white-space:nowrap;left:50%;top:-9px;transform:translateX(-50%);padding:0 6px;border:1px solid #f0ce83;border-radius:8px;background:#3b2a14;font:700 .5625rem/.875rem system-ui;letter-spacing:.06em;text-transform:uppercase;color:#ffe6a6}
.qt-label{display:grid;justify-items:center;gap:1px;max-width:100%;padding:3px 8px;border-radius:9px;background:radial-gradient(ellipse at 50% 50%,#120c07 58%,#120c0700 100%)}
.qt-name{max-width:100%;font:600 .75rem/1.2 Georgia,serif;text-align:center;color:#ead9b4;overflow-wrap:anywhere;text-shadow:0 1px 3px #000}
.qt-cost{font:600 .6875rem system-ui;color:#c7a85f}
.qt-node.is-unlocked .qt-tile{background:radial-gradient(circle at 50% 28%,color-mix(in srgb,var(--qt-tone) 55%,#1c130b),color-mix(in srgb,var(--qt-tone) 12%,#0b0705) 82%);box-shadow:inset 0 0 0 2px #0a0704,inset 0 0 0 3px color-mix(in srgb,var(--qt-tone) 60%,transparent),0 4px 10px #000b,0 0 20px color-mix(in srgb,var(--qt-tone) 60%,transparent)}
.qt-node.is-unlocked .qt-rank{border-color:var(--qt-tone);color:#fff1cc;background:color-mix(in srgb,var(--qt-tone) 30%,#160f08)}
.qt-node.is-ready .qt-tile{border-color:#f0ce83;box-shadow:inset 0 0 0 2px #0a0704,inset 0 0 0 3px #f0ce8377,0 4px 10px #000b,0 0 16px #e6b95a80}
.qt-node.is-ready .qt-cost{color:#ffe6a6}
.qt-node.is-locked .qt-tile{border-color:var(--qt-dim);background:radial-gradient(circle at 50% 28%,#2a251e,#0b0705 78%);box-shadow:inset 0 0 0 2px #0a0704,0 4px 10px #000b}
.qt-node.is-locked .qt-icon,.qt-node.is-locked .qt-frame-icon{filter:grayscale(1) brightness(.78)}
.qt-node.is-locked .qt-name{color:#a29a88}
.qt-node.is-locked .qt-cost{color:#8a8068}
.qt-node.is-soon{opacity:.72}
.qt-node:hover .qt-tile{border-color:#f6d798}
.qt-node[aria-pressed=true] .qt-tile{outline:2px solid #ffe0a0;outline-offset:3px}
.qt-node:focus-visible{outline:none}
.qt-node:focus-visible .qt-tile{outline:3px solid var(--qt-focus);outline-offset:3px}
.qt-detail{min-width:0}
.qt-panel{position:relative;box-sizing:border-box;padding:16px;border:1px solid #8f7645;border-radius:6px;background:radial-gradient(ellipse at 20% 0,color-mix(in srgb,var(--qt-tone,#e0b766) 16%,transparent),transparent 60%),linear-gradient(160deg,#2a1e11,#130d08);box-shadow:inset 0 0 0 2px #0c0805,inset 0 0 0 3px #b8955a3d,0 8px 24px #000a}
.qt-panel>header{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;margin-bottom:10px}
.qt-panel h3{margin:0;font:600 1.15rem/1.2 Georgia,serif;color:#f3dfae}
.qt-tile-sm{--qt-tile:52px}
.qt-chip{margin:3px 0 0;font:700 .6875rem system-ui;letter-spacing:.06em;text-transform:uppercase;color:var(--qt-tone,#c7a85f)}
.qt-panel.is-locked .qt-chip{color:#a29a88}
.qt-help{margin:0 0 10px;font-size:.92rem;line-height:1.45;color:#dcd3bd}
.qt-why{margin:0 0 10px;padding:8px 10px;border-left:3px solid #c98543;background:#2a1a0e;font-size:.88rem;color:#f0d3b0}
.qt-panel .small-note{margin:0 0 10px}
.qt-panel .tree-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:44px}
.qt-panel .tree-actions button{min-height:44px;flex:1 1 120px}
.qt-close{display:none;width:44px;height:44px;padding:0;border:1px solid #8f7645;border-radius:8px;background:#160f08;color:#ead9b4;font:400 1.5rem/1 system-ui;cursor:pointer}
.qt-empty{text-align:left}
.qt-key{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;list-style:none;font-size:.82rem;color:#c7bea8}
.qt-key-dot{display:inline-block;width:12px;height:12px;margin-right:6px;vertical-align:-1px;border-radius:4px;border:2px solid var(--qt-dim);background:#1c1610}
.qt-key-dot.is-unlocked{border-color:#f2c85b;background:#8a6a2a;box-shadow:0 0 8px #e6b95a99}
.qt-key-dot.is-ready{border-color:#f0ce83;background:#2a1e11;box-shadow:0 0 6px #e6b95a66}
.qt-labels{margin:0 18px 18px}
@media(min-width:1000px){
 .qt-body{grid-template-columns:minmax(0,1fr) 300px;column-gap:6px}
 .qt-detail{position:sticky;top:14px;margin:16px 26px 0 0}
 .qt-labels{grid-column:1/-1}
}
@media(max-width:999px){
 .qt-detail{position:fixed;left:0;right:0;bottom:var(--mobile-nav-height,0px);z-index:60;max-height:min(52dvh,480px);overflow:auto;padding:0 10px 10px;pointer-events:none}
 .qt-detail>.qt-panel{pointer-events:auto;max-width:640px;margin:0 auto;border-radius:12px 12px 6px 6px}
 .qt-pane[data-selected=""] .qt-detail{display:none}
 .qt-pane:not([data-selected=""]) .qt-map{padding-bottom:min(54dvh,500px)}
 .qt-close{display:inline-grid;place-items:center}
 .qt-empty{display:none}
}
@media(max-width:540px){
 .qt-map{padding:12px 18px 26px}
 .qt-banner{min-height:92px;padding:16px 22px 12px}
 .qt-banner h3{font-size:1.35rem}
 .qt-labels{margin:0 12px 14px}
}
@media(max-width:400px){
 .qt{--qt-tile:52px;--qt-nw:64px}
 .qt-map{padding:10px 12px 22px}
 .qt-name{font-size:.6875rem}
 .qt-label{padding:2px 3px}
 .qt .tree-balance{padding-right:10px}
}
/* Threat and tactics: the one-time notice that cosmetics were refunded. */
.qt-refund{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin:0 18px 14px;padding:12px 14px;border:1px solid #9fc4e8;border-radius:8px;background:#0f1d26;color:#dfe8ee}.qt-refund p{margin:0;flex:1 1 220px;line-height:1.45}.qt-refund button{min-height:44px}
@media(max-width:540px){.qt-refund{margin:0 12px 12px}}
/* The Quest Points ? keeps a full 44 px touch target; the wrapping balance row was squeezing it to 30 px. */
.qt .tree-balance .ui-help{flex:none;min-width:44px;min-height:44px}
/* ---- Perk trees (engine switch IRP_PERK_TREES_VERSION=1; markup pathBranch in quest-tree-ui.js): drawn like the class skill tree ---- */
.pt-pane .qt-body{background:radial-gradient(ellipse at 50% 0,#2a3550aa,transparent 55%),radial-gradient(ellipse at 15% 60%,#3b261a55,transparent 50%),radial-gradient(ellipse at 85% 70%,#1f2d4a66,transparent 55%),linear-gradient(#0d131d,#090d14)}
.pt-map{min-width:0;overflow-x:auto;overflow-y:hidden;padding:10px 14px 26px;overscroll-behavior-x:contain;scrollbar-color:#826948 #111823}
.pt-map:focus-visible{outline:2px solid var(--qt-focus);outline-offset:-2px}
.pt-board{position:relative;width:100%;min-width:var(--pt-w);max-width:calc(var(--pt-w) * 1.25);margin:0 auto}
.pt-links{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:1}
.pt-wire{fill:none;stroke:#7d6a4a;stroke-opacity:.45;stroke-width:2;vector-effect:non-scaling-stroke}
.pt-wire.is-open{stroke:#c9a865;stroke-opacity:.8}
.pt-wire.is-lit{stroke:#ffd977;stroke-opacity:1;stroke-width:2.6;filter:drop-shadow(0 0 4px #ffb93cc0)}
.pt-trunk{stroke:#b89a5f;stroke-opacity:.7;filter:none;stroke-width:2}
.pt-band{position:absolute;left:0;right:0;height:0;border-top:1px dashed #b7965726;z-index:0}
.pt-band>span{position:absolute;left:0;top:10px;width:calc(var(--pt-g) - 10px);display:grid;gap:2px;padding:7px 8px;box-sizing:border-box;border-left:2px solid #5d5545;background:linear-gradient(90deg,#0e131cdd,#0e131c00);font:600 .625rem/1.2 system-ui;letter-spacing:.08em;text-transform:uppercase;color:#8d8370}
.pt-band>span b{font:600 .8125rem Georgia,serif;letter-spacing:.06em;color:#b49a68}
.pt-band>span em{font-style:normal;color:#c7bea8}
.pt-band>span small{font:.5625rem/1.25 system-ui;letter-spacing:.04em;text-transform:none;color:#8d8370}
.pt-band.is-reached{border-top-color:#d6b5754d}.pt-band.is-reached>span{border-left-color:#f0ce83}.pt-band.is-reached>span b{color:#f0ce83}.pt-band.is-reached>span small{color:#b8ab8e}
.pt-knot{position:absolute;z-index:2;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;transform:rotate(45deg);background:#20283a;border:1px solid #8f7645;box-shadow:0 0 0 2px #0b1018}
.pt-knot.is-lit{background:#ffd977;border-color:#fff0c0;box-shadow:0 0 0 2px #0b1018,0 0 10px #ffb93cd0}
.pt-root{position:absolute;top:6px;transform:translateX(-50%);z-index:2;display:grid;justify-items:center;text-align:center;pointer-events:none}
.pt-crest{display:grid;place-items:center;width:46px;height:46px;transform:rotate(45deg);border:1px solid var(--qt-tone);background:#111522;box-shadow:0 0 0 4px #0b1018,0 0 0 5px #8f7645,0 0 26px color-mix(in srgb,var(--qt-tone) 40%,transparent)}
.pt-crest .pt-art{transform:rotate(-45deg);width:40px;height:40px}
.pt-root strong{margin-top:14px;font:600 .9375rem Georgia,serif;letter-spacing:.2em;text-transform:uppercase;color:#f0d9a2;text-shadow:0 2px 4px #000}
.pt-root small{font:.5625rem system-ui;letter-spacing:.12em;text-transform:uppercase;color:#a9a08a}
.pt-head{position:absolute;transform:translate(-50%,-100%);z-index:2;text-align:center;white-space:nowrap;pointer-events:none;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--qt-tone) 45%,transparent)}
.pt-head small{display:block;font:600 .5625rem system-ui;letter-spacing:.16em;text-transform:uppercase;color:#a9a08a}
.pt-head h4{margin:2px 0 0;font:500 1.35rem/1.15 Georgia,serif;color:var(--qt-tone);text-shadow:0 2px 6px #000,0 0 18px color-mix(in srgb,var(--qt-tone) 35%,transparent)}
.pt-slot{position:absolute;transform:translateX(-50%);width:128px;z-index:3}
.pt-node{gap:3px}
.pt-level{font:600 .5625rem/1 system-ui;letter-spacing:.12em;color:#a9a08a}
.pt-orb{position:relative;display:grid;place-items:center;width:68px;height:68px;box-sizing:border-box;border-radius:50%;border:2px solid #5d5545;background:radial-gradient(circle at 50% 35%,#24304a,#0b1018 75%);box-shadow:0 0 0 3px #0b1018,0 6px 14px #000c;transition:box-shadow .15s,border-color .15s}
.pt-orb .pt-art{width:50px;height:50px;filter:drop-shadow(0 2px 2px #000a)}
.pt-rank{position:absolute;left:50%;bottom:-8px;transform:translateX(-50%);min-width:30px;padding:0 5px;box-sizing:border-box;text-align:center;border:1px solid #6d6150;border-radius:4px;background:#0e131c;font:600 .5625rem/.9375rem system-ui;color:#c7bea8}
.pt-name{margin-top:8px;max-width:100%;font:500 .875rem/1.2 Georgia,serif;text-align:center;color:#e8dcc2;text-shadow:0 1px 3px #000;overflow-wrap:anywhere}
.pt-cost{font:600 .625rem system-ui;letter-spacing:.04em;color:#a9926a}
.pt-node.is-unlocked .pt-orb{border-color:#f2c85b;background:radial-gradient(circle at 50% 35%,color-mix(in srgb,var(--qt-tone) 45%,#24304a),#0b1018 78%);box-shadow:0 0 0 3px #0b1018,0 0 0 4px #b8954a,0 0 22px color-mix(in srgb,var(--qt-tone) 70%,transparent),0 6px 14px #000c}
.pt-node.is-unlocked .pt-rank{border-color:#f2c85b;color:#fff1cc;background:#3a2a12}
.pt-node.is-unlocked .pt-cost{color:#f0ce83}
.pt-node.is-ready .pt-orb{border-color:color-mix(in srgb,var(--qt-tone) 70%,#f0ce83);box-shadow:0 0 0 3px #0b1018,0 0 14px color-mix(in srgb,var(--qt-tone) 50%,transparent),0 6px 14px #000c}
.pt-node.is-ready .pt-cost{color:#ffe6a6}
.pt-node.is-locked .pt-art{filter:grayscale(.85) brightness(.62)}
.pt-node.is-locked .pt-name{color:#a29a88}
.pt-node:hover .pt-orb{border-color:#f6d798}
.pt-node[aria-pressed=true] .pt-orb{outline:2px solid #ffe0a0;outline-offset:4px}
.pt-node:focus-visible .pt-orb{outline:3px solid var(--qt-focus);outline-offset:4px}
.pt-pane .qt-panel .qt-tile .pt-art{width:40px;height:40px}
.pt-phone{display:none}
.pt-chips{display:flex;gap:6px;margin:4px 0 10px;flex-wrap:wrap}
.pt-chip{flex:1 1 0;min-height:44px;padding:6px 8px!important;border:1px solid #b7965740!important;border-radius:2px!important;background:#0d151d!important;color:var(--qt-tone)!important;font:500 .8125rem Georgia,serif!important}
.pt-chip[aria-pressed=true]{border-color:var(--qt-tone)!important;background:color-mix(in srgb,var(--qt-tone) 14%,#0d151d)!important;box-shadow:0 0 12px color-mix(in srgb,var(--qt-tone) 30%,transparent)}
.pt-role{font-weight:700}.pt-role-DPS{color:#e2c86a}.pt-role-Tank{color:#b4a0e2}.pt-role-Healer{color:#8fd18a}
.pt-node.is-locked .pt-role{opacity:.75}
@media(max-width:600px){
 .pt-map{padding:8px 6px 22px;overflow-x:visible}.pt-full{display:none}.pt-phone{display:block}.pt-single{min-width:0;max-width:none}
 .pt-head h4{font-size:1.1rem}.pt-slot{width:104px}.pt-name{font-size:.8125rem}
 .pt-band>span{padding:6px 5px}.pt-band>span b{font-size:.75rem}.pt-band>span em{font-size:.5625rem}
}

/* /ui-quests.css */
/* Quests screen on the UI kit (switch IRP_UI_QUESTS_VERSION, default off; public/ui-quests.js). Page-local layout only: colours, frames and shadows come from ui-kit.css tokens and classes. */
/* The kit scopes heading type and the focus ring to .uk-page; the game screen scopes them here instead. */
.uq-screen :where(h1,h2,h3){margin:0;font-family:var(--uk-serif);font-weight:500;letter-spacing:.02em;color:var(--uk-gold-text);text-wrap:balance}
.uq-screen :focus-visible{outline:3px solid var(--uk-focus);outline-offset:2px}
/* .uk-stack / .uk-stat set display and beat the hidden attribute (kit request 10): hidden has to win for the tab panels and the stats of the other tabs. */
.uq-screen [hidden]{display:none!important}
/* Fewer, larger cards on a wide screen (the sample's own rule). */
@media(min-width:900px){.uq-screen .uk-grid{--uk-card-min:300px}}
.uq-rules{margin:0 0 var(--uk-gap)}
/* The state tag is nowrap in the kit: "Limit reached" is wider than a two-column card at 320 px. Let it wrap inside the card (kit request 22). */
.uq-screen .uk-card .uk-state{max-width:100%;white-space:normal;text-align:center}
/* The "How it works" list sits under the disclosure's own box. */
.uq-rules>.uk-bullets{padding:12px 4px 4px}

/* /skill-compact.css */
/* Compact skill tree (IRP_SKILL_TREE_COMPACT_VERSION=1, default off): shorter header, tighter tree, ability bar with equip, a pop-up instead of the side panel. Only drawn while the switch is on. */
/* ---- Header: one slim row; the painted banner stays. ---- */
.paths-page.skill-compact .paths-heading{min-height:0;padding:10px 40px 10px 22px;gap:14px;align-items:center;margin-bottom:10px}
.paths-page.skill-compact .paths-heading h1{font-size:1.375rem;margin:2px 0 0}
.paths-page.skill-compact .paths-heading>div:first-child>p:not(.eyebrow):not(.paths-raid-note){display:none}
.paths-page.skill-compact .paths-heading .eyebrow{margin:0}
.paths-page.skill-compact .paths-heading{flex-wrap:wrap}
.paths-page.skill-compact .paths-heading>div:first-child{min-width:0;flex:1 1 260px}
.paths-page.skill-compact .paths-budgets{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px 12px;max-width:none}
.paths-page.skill-compact .paths-budgets>span{padding:6px 12px}
.paths-page.skill-compact .paths-budgets strong{font-size:1.25rem}
.paths-page.skill-compact .paths-budgets>small{display:none}
.paths-page.skill-compact .paths-budgets .secondary,.paths-page.skill-compact .paths-budgets .text-button{margin:0}
/* ---- Tree: the whole map shows; the page scrolls, not a box inside it. ---- */
.paths-page.skill-compact .class-tree-viewport{height:auto;min-height:0;overflow-x:auto;overflow-y:hidden}
.paths-page.skill-compact .tree-map-hint{display:none}
.paths-page.skill-compact .tree-legend{padding:6px 14px}
.class-tree[data-compact] .class-tree-root{top:6px;width:300px;height:46px;display:flex;align-items:center;justify-content:center;gap:12px;text-align:left}
.class-tree[data-compact] .tree-crest{width:28px;height:28px;margin:0;box-shadow:0 0 0 3px #151c24,0 0 0 4px #6d5d3e}
.class-tree[data-compact] .tree-crest span{font-size:1.125rem}
.class-tree[data-compact] .class-tree-root h2{margin:0;font-size:1.25rem}
.class-tree[data-compact] .class-tree-path-root{top:52px;width:200px}
.class-tree[data-compact] .class-tree-path-root h3{margin:2px 0 0;font-size:1.375rem}
.class-tree[data-compact] .class-tree-path-root:after{display:none}
.class-tree[data-compact] .class-tree-columns span{top:104px}
.class-tree[data-compact] .class-tree-tier3{text-align:left}
.class-tree[data-compact] .class-tree-tier3 span{display:inline-block;margin-left:6px}
/* ---- Ability bar ---- */
.skill-bar-compact{margin:0 0 12px;padding:10px 12px;border:1px solid #8b744044;border-radius:10px;background:linear-gradient(#111926,#0c121c);color:#e7dcc7}
.skill-bar-compact>header{display:flex;align-items:baseline;gap:12px;margin-bottom:8px}
.skill-bar-compact h2{font:1.0625rem Georgia,serif;color:#e9d4a8;margin:0}
.skill-bar-compact>header p,.skill-bar-compact .bar-note{margin:0;font-size:.8125rem;color:#9aa5b4;line-height:1.4}
.bar-slots{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.bar-slots.five{grid-template-columns:repeat(5,minmax(0,1fr))}
.bar-slot{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"head remove" "skill skill";align-items:center;gap:4px 6px;padding:6px 8px;border:1px solid #8b744040;border-radius:8px;background:#0b1119;min-height:84px}
.bar-slot.filled{border-color:#a98b4f77}
.bar-slot.ultimate-slot{border-color:#c9a25488}
.bar-slot.locked{opacity:.6}
.bar-slot-head{grid-area:head;display:flex;align-items:center;gap:5px;min-width:0;font-size:.6875rem;letter-spacing:.05em;text-transform:uppercase;color:#c3b18b;line-height:1.2}
.bar-slot-head span{min-width:0}
.bar-skill{grid-area:skill;display:flex;align-items:center;gap:8px;min-height:44px;padding:2px;border:0;background:none;color:#f0e6cf;text-align:left;cursor:pointer;min-width:0}
.bar-skill strong,.bar-option strong,.bar-chip strong{font-size:.875rem;font-weight:600;line-height:1.2;min-width:0;overflow-wrap:break-word}
.bar-skill svg,.bar-skill img,.bar-option svg,.bar-option img{width:40px;height:40px;flex:none;border-radius:6px}
.bar-chip svg,.bar-chip img{width:32px;height:32px;flex:none;border-radius:5px}
.bar-remove{grid-area:remove;min-height:30px;padding:2px 8px;border:1px solid #6b5a3a;border-radius:6px;background:#141b27;color:#cdbb95;font-size:.75rem;cursor:pointer}
.bar-remove:hover,.bar-skill:hover{filter:brightness(1.2)}
.bar-slot.empty .bar-add{grid-area:skill;position:static}
.bar-add>summary{list-style:none;display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;border:1px dashed #a98b4f99;border-radius:8px;color:#e2c27e;cursor:pointer;background:#10172280}
.bar-add>summary::-webkit-details-marker{display:none}
.bar-add>summary span{font-size:1.5rem;line-height:1}
.bar-add>summary em{font-style:normal;font-size:.8125rem;color:#cdbb95}
.bar-add[open]>summary{background:#1a2333;border-style:solid}
.bar-picker{position:absolute;z-index:30;left:0;top:calc(100% + 4px);min-width:236px;max-height:min(320px,60vh);overflow-y:auto;display:grid;gap:4px;padding:8px;border:1px solid #a98b4f;border-radius:8px;background:#0f1622;box-shadow:0 10px 30px #000c}
.bar-slot:nth-child(n+3) .bar-picker{left:auto;right:0}
.bar-option,.bar-chip{display:flex;align-items:center;gap:8px;min-height:44px;padding:3px 8px 3px 4px;border:1px solid #6b5a3a88;border-radius:8px;background:#141b27;color:#f0e6cf;text-align:left;cursor:pointer}
.bar-option:hover,.bar-chip:hover{border-color:#e2c27e}
.bar-option small,.bar-chip small{display:block;font-size:.6875rem;color:#9aa5b4}
.bar-unused{margin-top:10px;padding-top:8px;border-top:1px solid #8b744030}
.bar-unused h3{margin:0 0 6px;font:.9375rem Georgia,serif;color:#e9d4a8}
.bar-unused>div{display:flex;flex-wrap:wrap;gap:6px}
.bar-chip{min-height:40px;padding:2px 8px 2px 3px;gap:6px}
.bar-chip strong{font-size:.8125rem}
.bar-chip{cursor:grab}
.bar-unused .bar-note{margin-top:6px}
.skill-bar-compact.dragging .bar-slot:not(.can-drop){opacity:.45}
.skill-bar-compact .bar-slot.can-drop{outline:2px dashed #e2c27e;outline-offset:1px}
.skill-bar-compact .bar-slot.drop-over{background:#1d2a3d;outline-style:solid}
/* ---- Skill pop-up (replaces the side panel) ---- */
dialog.skill-pop{position:fixed;inset:0;margin:auto;box-sizing:border-box;width:min(440px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:16px 18px 18px;border:1px solid #a98b4f;border-radius:12px;background:#0f1622;color:#e7dcc7;box-shadow:0 18px 60px #000d;overflow-y:auto}
dialog.skill-pop::backdrop{background:#000b}
.skill-pop-close{position:absolute;top:6px;right:8px;width:44px;height:44px;border:0;background:none;color:#cdbb95;font-size:1.75rem;cursor:pointer}
.skill-pop-title{display:flex;gap:12px;align-items:center;padding-right:40px;margin-bottom:8px}
.skill-pop-title svg,.skill-pop-title img{width:56px;height:56px;flex:none;border-radius:8px}
.skill-pop-title h2{margin:0;font:1.375rem Georgia,serif;color:#f0e0b8}
.skill-pop-title .eyebrow{margin:0 0 2px}
.skill-pop-title strong{display:block;color:#e8a269;font-size:.875rem}
.skill-pop-on{display:inline-block;margin-left:8px;color:#9ec9b0;font-size:.75rem}
.skill-pop .path-skill-summary,.skill-pop .path-trigger{margin:6px 0;line-height:1.5}
.skill-pop .path-trigger{color:#aeb7c4;font-size:.875rem}
.skill-pop .path-allocation{margin-top:10px}
.skill-pop .path-allocation-reason{margin:6px 0;color:#d9c9a2}
.skill-pop .path-learn{width:100%;min-height:44px}
.skill-pop-upgrade{display:flex;align-items:center;gap:10px;width:100%;margin-top:10px;min-height:44px;text-align:left}
.skill-pop-upgrade span{color:#9aa5b4;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}
.skill-pop-upgrade strong{flex:1;color:#f0e0b8}
@media(max-width:700px){
 .paths-page.skill-compact .paths-heading{padding:8px 12px}
 .bar-slots,.bar-slots.five{grid-template-columns:repeat(2,minmax(0,1fr))}
 .paths-page.skill-compact .paths-heading{min-height:0;flex-direction:row;align-items:center}
 .paths-page.skill-compact .paths-budgets{justify-content:flex-start;flex-direction:row}
 .bar-slot{grid-template-areas:"head head" "skill remove"}
 .bar-remove{min-height:44px;min-width:36px;padding:0;font-size:0}
 .bar-remove:before{content:"×";font-size:1.5rem;line-height:1}
 .bar-skill svg,.bar-skill img{width:30px;height:30px}
 .bar-slot{padding:6px 5px;gap:4px}
 .bar-skill{gap:5px;padding:0}
 .bar-skill strong{font-size:.8125rem}
 .bar-slot.empty .bar-add{grid-column:1 / -1}
 .bar-picker{left:0;right:auto;min-width:min(236px,calc(100vw - 48px))}
 .bar-slot:nth-child(2n) .bar-picker{left:auto;right:0}
}
.skill-pop .path-rank-preview,.skill-pop details{margin-top:10px;font-size:.875rem}
.skill-pop .path-rank-preview h3{margin:8px 0 2px;font-size:.8125rem;color:#e8a269}
.skill-pop .path-rank-preview p{margin:2px 0;line-height:1.45}
.skill-pop .path-stats,.skill-pop .path-stat-grid{max-width:100%}
.skill-pop dl,.skill-pop table{max-width:100%;font-size:.8125rem}

/* /alpha-wipe-notice.css */
.wipe-countdown{display:flex;align-items:center;gap:10px;box-sizing:border-box;max-width:100%;margin:.75rem clamp(.5rem,2vw,1.5rem);padding:8px 6px 8px 14px;border:1px solid #c7a15e;border-left:4px solid #e0a64f;border-radius:5px;background:#2a1d14;color:#eadfc7;font:normal .875rem/1.45 system-ui,sans-serif;text-align:left;overflow-wrap:break-word}.wipe-countdown>div{flex:1 1 auto;min-width:0}.wipe-countdown strong{display:block;color:#f1cd83}.wipe-countdown p{margin:2px 0 0}.wipe-countdown-left{font-weight:600;font-variant-numeric:tabular-nums;color:#f6d79a;white-space:nowrap}.wipe-countdown-close{flex:0 0 auto;width:44px;height:44px;padding:0;background:transparent;border:0;color:#edcf87;font-size:1.5rem;line-height:1;cursor:pointer}.wipe-countdown-close:focus-visible{outline:2px solid #edcf87;outline-offset:1px}
@media(max-width:1000px){.mmo-shell>.wipe-countdown{margin:6px 8px;padding:6px 2px 6px 10px;gap:6px;font-size:.8125rem;line-height:1.35}}
/* Wide screens fit the battle to the window (desktop-fit.css): leave room for the banner so the battle controls stay on screen. */
@media(min-width:1180px){.shell.mmo-shell:has(>.wipe-countdown){--fit-top:128px}.shell.mmo-shell:has(>.wipe-countdown):has(>.alpha-notice:not([hidden])){--fit-top:212px}}

/* /guild-menu.css */
/* Guild page: three cards on top, a scrolling tab bar, one panel below. Markup: public/guild-ui.js. Notes: docs/GUILD_MENU.md.
   Same midnight-and-gold frame as .paper-slot-set (character-build.css) and .hunt-tile (challenge-quests.css).
   Loaded before ui-kit.css. The kit owns buttons and tab looks; this file owns layout, the card frame and the roster.
   Phones: no fixed widths, 44px touch targets, no hover-only information, the roster becomes stacked member cards. */

.gm-page{container-type:inline-size;--gm-frame:#776343;--gm-inner:#74603e55;--gm-gold:#e0c483;--gm-ink:#c9d1da;--gm-dim:#9fabb9}
.gm-page :is(.gm-card,.gm-panel,.gm-level,.gm-dir-card,.gm-app,.gm-upgrade){box-sizing:border-box;min-width:0;border:1px solid var(--gm-frame);border-radius:6px;background:linear-gradient(160deg,#182234,#0c1420);box-shadow:inset 0 0 0 2px #0c1420,inset 0 0 0 3px var(--gm-inner)}
.gm-page .eyebrow{margin:0;color:var(--gm-gold);font-size:.72rem;letter-spacing:.13em}
.gm-page :is(.gm-note,.gm-line,.gm-empty){margin:0;color:var(--gm-dim);font-size:.85rem;line-height:1.45}
.gm-page .gm-empty{padding:18px 8px;text-align:center}

/* Guild level strip */
.gm-page .guild-progression.gm-level{margin:14px 0 0;padding:12px 18px;gap:18px;border-bottom:1px solid var(--gm-frame)}
.gm-page .gm-level .guild-level-crest{width:64px;height:72px;flex:0 0 64px}
.gm-page .gm-level .guild-level-crest>strong{font-size:1.375rem}
.gm-page .gm-level .text-link{min-height:44px;background:none;border:0;color:var(--gm-gold);cursor:pointer;font:600 .8125rem system-ui;white-space:nowrap}

/* Top row: Vault, Buffs, Message of the day */
.gm-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) minmax(0,1fr);gap:12px;margin:14px 0}
.gm-card{display:flex;flex-direction:column;gap:10px;padding:14px 16px}
.gm-card>header{display:flex;align-items:center;gap:10px}
.gm-card>header .fantasy-icon{width:34px;height:34px;flex:0 0 34px}
.gm-card>button,.gm-card>details{margin-top:auto}
.gm-card>button{width:100%}
.gm-gold{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;margin:0;color:#ffe1aa}
.gm-gold .uk-icon{align-self:center;color:var(--gm-gold)}
.gm-gold b{font:700 clamp(1.5rem,4cqw,2rem) Georgia,serif;line-height:1.1;overflow-wrap:anywhere}
.gm-gold small{color:var(--gm-dim);font-size:.85rem}
.gm-line b{color:#ffe1aa}
.gm-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:6px;margin:0;padding:0;list-style:none}
.gm-chip{display:grid;grid-template-columns:18px minmax(0,1fr);grid-template-areas:"i l" "i v";column-gap:7px;align-items:center;min-width:0;padding:6px 8px;border:1px solid #5c4d33;border-radius:6px;background:#0c1522;font-size:.78rem;line-height:1.25;color:#e6ddc6}
.gm-chip .uk-icon{grid-area:i;width:18px;height:18px;flex-basis:18px;color:var(--gm-gold)}
.gm-chip span{grid-area:l;color:var(--gm-dim);overflow-wrap:anywhere}
.gm-chip b{grid-area:v;font-size:.95rem;color:#ffe1aa}
.gm-chip.is-zero{opacity:.62}
.gm-chip.is-zero b{color:var(--gm-ink);font-weight:600}
.gm-motd-text{margin:0;padding:10px 12px;border-left:3px solid #b8955a;background:#0c1522;color:#f1e6d0;font-size:.95rem;line-height:1.5;overflow-wrap:anywhere;white-space:pre-wrap}
.gm-motd-text.is-default{color:var(--gm-dim);font-style:italic}
.gm-edit>summary{display:flex;align-items:center;justify-content:center;list-style:none;cursor:pointer;width:100%;box-sizing:border-box}
.gm-edit>summary::-webkit-details-marker{display:none}
.gm-edit form{display:grid;gap:8px;margin-top:10px}
.gm-edit textarea{width:100%;min-height:76px;box-sizing:border-box;resize:vertical;background:#10151a;border:1px solid #5a513d;border-radius:4px;color:#f1e6d0;padding:10px;font:inherit}
.gm-edit label{margin:0}

/* Tab bar: one scrolling row */
.shell.shell .section-tabs.gm-tabs{display:flex;flex-wrap:nowrap;gap:6px;margin:0;padding:8px 0 10px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
.shell.shell .section-tabs.gm-tabs>button{flex:0 0 auto;min-width:0;min-height:44px;padding:9px 16px;white-space:nowrap;word-break:normal;overflow-wrap:normal}
.gm-count{display:inline-block;min-width:1.4em;margin-left:4px;padding:1px 6px;border-radius:999px;background:#0c1420;border:1px solid #b8955a;color:#ffe1aa;font-size:.75rem;line-height:1.4;text-align:center}
.gm-count.is-zero{border-color:#5b5040;color:var(--gm-dim)}
.gm-tabs .selected .gm-count{background:#3a2f22}

/* Panels */
.gm-panel{padding:14px 16px;margin:0}
.gm-panel-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;margin-bottom:12px}
.gm-panel-head small{color:var(--gm-dim);font-size:.85rem}
.gm-panel-head small b{color:#ffe1aa}
.gm-manage-panel h2{margin:0 0 6px;font-size:1.1rem}
.gm-body>.guild-hunt-section{margin:0}
.gm-toolbar{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 12px}
.gm-page .gm-search{position:relative;display:block;flex:1 1 220px;min-width:0;margin:0}
.gm-search .uk-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--gm-dim)}
.gm-page .gm-search input{width:100%;box-sizing:border-box;min-height:44px;padding:10px 12px 10px 40px;border-radius:6px}
.gm-page .gm-sort-select{display:none;flex:1 1 140px;margin:0}
.gm-page .gm-sort-select select{width:100%;min-height:44px;box-sizing:border-box}

/* Members: capacity header */
.gm-capacity{display:grid;grid-template-columns:auto minmax(80px,1fr) auto;align-items:center;gap:8px 18px;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid #b6985d33}
.gm-capacity-count strong{display:block;font:700 1.6rem Georgia,serif;color:#ffe1aa;line-height:1.15}
.gm-capacity-count small{display:block;color:var(--gm-dim);font-size:.85rem}
.gm-capacity progress{width:100%;height:10px;accent-color:#b39051}
.gm-capacity-action{display:grid;gap:4px;justify-items:end;max-width:260px}
.gm-capacity-action small{color:var(--gm-dim);font-size:.78rem;text-align:right;line-height:1.35}
.gm-capacity-action button{min-height:44px}

/* Members: table */
.gm-table-wrap{max-width:100%}
.gm-roster{width:100%;border-collapse:separate;border-spacing:0 4px;text-align:left}
.gm-roster thead th{padding:0 10px;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gm-gold);font-weight:600;white-space:nowrap}
.gm-sort{min-height:44px;padding:0 4px;border:0;background:none;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}
.gm-sort:hover,.gm-sort:focus-visible{color:#fff0c8}
.gm-roster tbody tr{background:linear-gradient(90deg,#16233a,#0f1929)}
.gm-roster td{padding:8px 10px;border-block:1px solid #3c3626;color:var(--gm-ink);font-size:.9rem;vertical-align:middle}
.gm-roster td:first-child{border-left:1px solid #3c3626;border-radius:6px 0 0 6px}
.gm-roster td:last-child{border-right:1px solid #3c3626;border-radius:0 6px 6px 0}
.gm-who{display:flex;align-items:center;gap:10px;min-width:0}
.gm-name{min-width:0;overflow-wrap:anywhere;color:#f4e7c6}
.gm-name em{margin-left:4px;color:var(--gm-dim);font-size:.75rem;font-style:normal}
.gm-avatar{position:relative;flex:0 0 40px;width:40px;height:40px;display:grid;place-items:center;border:1px solid #b8985b;border-radius:50%;background:radial-gradient(circle at 50% 28%,#2c4262,#111b2b 80%);color:#f0d9a0;font:700 1rem Georgia,serif}
.gm-dot{position:absolute;right:-2px;bottom:-2px;width:12px;height:12px;border:2px solid #0c1420;border-radius:50%;background:#6b7383}
.gm-dot.is-online{background:#5fd08a}
.gm-role{display:inline-block;padding:3px 9px;border:1px solid #5d6b80;border-radius:4px;background:#26303f;color:#c5cedb;font:700 .68rem/1.4 system-ui;letter-spacing:.09em;text-transform:uppercase;white-space:nowrap}
.gm-role-leader{border-color:#e6c98f;background:linear-gradient(180deg,#c9a468,#8f6f3c);color:#1b1509}
.gm-role-officer{border-color:#6fb0d8;background:linear-gradient(180deg,#2d5b7c,#1c3a52);color:#d8efff}
.gm-shield{position:relative;isolation:isolate;display:inline-grid;place-items:center;width:36px;height:40px;background:#c9a468;color:#fff1cc;font:700 .85rem system-ui;clip-path:polygon(50% 0,100% 12%,100% 62%,50% 100%,0 62%,0 12%)}
.gm-shield::before{content:"";position:absolute;inset:2px;z-index:-1;background:linear-gradient(180deg,#34486a,#131d31);clip-path:polygon(50% 0,100% 12%,100% 62%,50% 100%,0 62%,0 12%)}
.gm-c-level,.gm-c-role{text-align:left}
.gm-c-status,.gm-c-joined{color:var(--gm-dim);white-space:nowrap}
.gm-c-act{width:1%;white-space:nowrap;text-align:right}
.gm-manage{position:relative;display:inline-block;text-align:left}
.gm-manage>summary{display:inline-flex;align-items:center;justify-content:center;list-style:none;cursor:pointer;min-width:96px;box-sizing:border-box}
.gm-manage>summary::-webkit-details-marker{display:none}
.gm-manage-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:6;display:grid;gap:6px;min-width:220px;padding:8px;border:1px solid var(--gm-frame);border-radius:6px;background:#0f1929;box-shadow:0 8px 20px #000a}
.gm-manage-menu button{width:100%;min-height:44px}

/* Applications */
.gm-app-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:10px}
.gm-app{display:grid;grid-template-columns:40px minmax(0,1fr);gap:8px 12px;align-items:center;padding:12px}
.gm-app-who{min-width:0}
.gm-app-who strong{display:block;color:#f4e7c6;overflow-wrap:anywhere}
.gm-app-who small{color:var(--gm-dim)}
.gm-app-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.gm-app-actions button{min-height:44px;width:100%}

/* Upgrades */
.gm-upgrades{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:10px}
.gm-upgrade{display:grid;grid-template-columns:44px minmax(0,1fr);gap:8px 12px;align-items:start;padding:12px}
.gm-upgrade-icon{display:grid;place-items:center;width:44px;height:44px;border:1px solid #b8985b;border-radius:8px;background:radial-gradient(circle at 50% 28%,#24364e,#111b2b 78%);color:var(--gm-gold)}
.gm-upgrade-body{min-width:0;display:grid;gap:4px}
.gm-upgrade h3{margin:0;font-size:1rem}
.gm-upgrade strong{font-size:.85rem;color:#ffe1aa;font-weight:600}
.gm-upgrade progress{width:100%;height:8px;accent-color:#b39051}
.gm-upgrade small{color:var(--gm-dim);font-size:.8rem}
.gm-upgrade>button{grid-column:1/-1;min-height:44px;width:100%;white-space:normal}

/* Activity */
.gm-log{display:grid;gap:4px;margin:0;padding:0;list-style:none}
.gm-log li{display:grid;grid-template-columns:minmax(0,9.5rem) minmax(0,1fr);gap:4px 12px;padding:9px 12px;border-left:3px solid #b8955a;background:#0c1522;font-size:.9rem}
.gm-log time{color:var(--gm-dim);font-size:.82rem}
.gm-log span{color:var(--gm-ink);overflow-wrap:anywhere}

/* Directory cards (Browse guilds and the join screen) */
.gm-dir{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:10px}
.gm-dir-card{display:grid;grid-template-columns:60px minmax(0,1fr);gap:8px 12px;align-items:start;padding:12px}
.gm-dir-card.is-own{border-color:#e0bd73}
.gm-dir-card .guild-level-crest{width:56px;height:62px;flex:0 0 56px;grid-row:1}
.gm-dir-card .guild-level-crest>strong{font-size:1rem}
.gm-dir-body{min-width:0}
.gm-dir-body h3{margin:0 0 4px;font-size:1.05rem;overflow-wrap:anywhere}
.gm-dir-body p{margin:0 0 8px;color:var(--gm-ink);font-size:.88rem;overflow-wrap:anywhere}
.gm-facts{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.gm-facts li{padding:3px 8px;border:1px solid #5c4d33;border-radius:999px;background:#0c1522;color:var(--gm-dim);font-size:.78rem}
.gm-facts li b{color:#f4e7c6;font-weight:600}
.gm-facts .is-open{color:#a9e6bf;border-color:#3f6b52}
.gm-facts .is-closed{color:#e5b0a0;border-color:#7a4a40}
.gm-facts .is-own{color:#ffe1aa;border-color:#e0bd73}
.gm-dir-card>button,.gm-dir-card>p{grid-column:1/-1;margin:0}
.gm-dir-card>button{min-height:44px;width:100%}

/* Footer */
.gm-page .guild-footer{margin:18px 0 0}

/* Narrow container: the roster collapses to stacked member cards, the top row stacks */
@container (max-width:760px){
 .gm-top{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
 .gm-buffs{grid-column:1/-1;order:3}
}
@container (max-width:680px){
 .gm-top{grid-template-columns:minmax(0,1fr)}
 .gm-buffs{order:0}
 .gm-capacity{grid-template-columns:minmax(0,1fr) auto}
 .gm-capacity progress{grid-column:1/-1;grid-row:2}
 .gm-capacity-action{grid-column:1/-1;justify-items:stretch;max-width:none}
 .gm-capacity-action small{text-align:left}
 .gm-capacity-action button{width:100%}
 .gm-page .gm-sort-select{display:block}
 .gm-roster,.gm-roster tbody{display:block;width:100%}
 .gm-roster thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
 .gm-roster tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"who lvl" "role status" "joined joined" "act act";gap:6px 10px;align-items:center;margin:0 0 8px;padding:12px;border:1px solid #3c3626;border-radius:6px}
 .gm-roster td{display:block;min-width:0;padding:0;border:0;border-radius:0}
 .gm-roster td:first-child,.gm-roster td:last-child{border:0;border-radius:0}
 .gm-c-who{grid-area:who}
 .gm-c-level{grid-area:lvl;justify-self:end}
 .gm-c-role{grid-area:role;justify-self:start}
 .gm-c-status{grid-area:status;justify-self:end;text-align:right;white-space:normal}
 .gm-c-joined{grid-area:joined;white-space:normal;font-size:.82rem}
 .gm-c-joined::before{content:"Joined "}
 .gm-c-act{grid-area:act;width:auto;text-align:left}
 .gm-c-act:empty{display:none}
 .gm-manage{display:block}
 .gm-manage>summary{width:100%}
 .gm-manage-menu{position:static;margin-top:6px;min-width:0;box-shadow:none}
 .gm-roster td.gm-empty{grid-column:1/-1}
 .gm-log li{grid-template-columns:minmax(0,1fr)}
}

/* Phones */
@media(max-width:700px){
 .gm-page.exp-page{padding-inline:12px}
 .gm-page .exp-heading .az-actions>:is(button,a){min-height:44px;display:inline-flex;align-items:center;justify-content:center}
 .gm-page .guild-progression.gm-level{gap:12px;padding:12px}
 .gm-page :is(.gm-card,.gm-panel){padding:12px}
 .gm-page :is(.gm-card>button,.gm-panel button,.gm-edit summary,.gm-manage summary){min-height:44px}
 .gm-app-actions{grid-template-columns:1fr 1fr}
}
@media(max-width:380px){
 .gm-chips{grid-template-columns:repeat(2,minmax(0,1fr))}
 .gm-dir-card{grid-template-columns:52px minmax(0,1fr)}
}
.shell .gm-body>.guild-hunt-section{border-radius:6px;outline:1px solid var(--gm-frame);outline-offset:-1px}

/* Simpler screens (IRP_UI_PLAIN_VERSION): the Guild wallet card, a full-width row under the top cards, one line per guild measure */
.gm-wallet{grid-column:1/-1;order:4}
.gm-wallet-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.gm-wallet-list li{min-width:0;color:var(--gm-dim);font-size:.85rem;line-height:1.45}
.gm-wallet-name{color:var(--gm-ink);font-weight:600}
.gm-wallet-list b{color:var(--gm-gold)}
.gm-wallet-list small{font-size:inherit}
/* Guild chest: the tab strip sits outside the chest page, so give it the page's own side padding to line up with the content below. */
.shell.shell div.guild-page.gm-page>.section-tabs.gm-tabs{padding:14px clamp(14px,2.5vw,36px) 10px}
@media(max-width:650px){.shell.shell div.guild-page.gm-page>.section-tabs.gm-tabs{padding:10px 12px}}
/* An empty directory spans the whole row instead of one card column. */
.gm-dir>.gm-empty{grid-column:1/-1}

/* /ui-shell.css */
/* Phone shell notices on one strip (switch IRP_UI_SHELL_VERSION, default off; public/ui-shell.js). Page-local layout only: colours, borders, icons and shadows come from ui-kit.css (.uk-btn, .uk-btn-primary, .uk-badge, .uk-ico, .uk-art).
   Nothing here matches until the script has added .ush-strip, which it only does on a phone (540 px or less) with the switch on. */
.ush-strip{margin:.5rem clamp(.5rem,2vw,1.5rem) 0}
.ush-strip[hidden],.ush-sheet[hidden],.ush-pane[hidden]{display:none!important}
.ush-chips{display:flex;flex-wrap:wrap;gap:8px}
.ush-strip .ush-chip.uk-btn{position:relative;flex:0 1 auto;min-width:44px;padding:6px 8px;gap:4px;white-space:nowrap}
.ush-chip-label{overflow:hidden;text-overflow:ellipsis}
/* The count sits on the chip's top corner, so three chips fit one row at 320 px. */
.ush-chip .uk-badge{position:absolute;top:-8px;right:-6px;pointer-events:none}
.ush-sheet{margin-top:8px}
/* The notice keeps its own look; only its outer spacing is reset because the sheet now provides it. */
.ush-pane>*,.ush-pane :is(.squire-idle-reminder,.world-spawn-banner,.alpha-notice,.path-refund-notice,.recovery-help){margin:0}
.ush-pane>*+*{margin-top:8px}
.ush-pane-foot{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px}
.ush-foot-note{font-size:.8rem;color:var(--uk-ivory-dim)}

/* /guild-shop.css */
/* Guild shop: the Store and Orders tabs of the guild page, the leader's edit screen and the Contribute sheet.
   Markup: public/guild-shop-ui.js and public/guild-orders-ui.js. Notes: docs/NEXT_GUILD_UI_2026-10-02.md. Design: docs/DESIGN_GUILD_ORDERS_2026-10-01.md.
   Dormant: none of these classes exist in the page unless the engine's guild view carries the orders block.
   Loaded after guild-menu.css and before ui-kit.css, which stays last.

   Shared kit only (UI audit tokens report, section 5): one midnight surface, ivory text, gold highlight; three frame levels
   (page header: the guild page's own header; panel: realm-frame-light; card: uk-card; the Contribute sheet is a modal, so it wears the
   modal frame); four buttons (primary red-button, secondary, quiet text-button, danger secondary danger; danger is not needed here).
   No colour below is new: every value is a kit token or a literal already in ui-kit.css or interface-art.css.
   Mobile first: one column, 44px targets, words are never broken, nothing depends on hover (there is no hover rule in this file).
   Wide layouts use container queries on .gm-page, the same technique guild-menu.css uses. */

.gs-host,.gs-sheet-backdrop{
 --gs-gold:var(--uk-gold,#d6b575);--gs-hot:var(--uk-gold-hi,#f0ce83);--gs-strong:var(--uk-ivory,#eadbb9);--gs-muted:var(--uk-ivory-dim,#c9c3b4);
 --gs-dim:var(--uk-gold-dim,#8f7645);--gs-line:#b69a6044;--gs-ring:#b8985b;--gs-tile:radial-gradient(circle at 50% 28%,#24364e,#111b2b 78%);
}
.gs-host *,.gs-sheet-backdrop *{box-sizing:border-box}
/* The host is its own size container, so the wide layouts below work on every guild page skin (the kit page has no .gm-page container). */
.gs-host{container-type:inline-size}
.gs-host :is(button,input):focus-visible,.gs-sheet-backdrop :is(button,input):focus-visible{outline:3px solid var(--uk-focus,#f4cd86);outline-offset:2px}
.gs-host :is(h2,h3,strong,small,p,span,button),.gs-sheet-backdrop :is(h3,strong,small,p,span,button){overflow-wrap:normal;word-break:normal;hyphens:none}
.gs-host :is(h2,h3),.gs-sheet-backdrop h3{margin:2px 0 0;color:var(--gs-strong);font-family:Georgia,"Times New Roman",serif;font-weight:600;line-height:1.2}

/* ---- Panel (level 2 frame comes from the realm-frame-light class in the markup) ---- */
.gs-panel{position:relative;min-width:0;margin:0;padding:18px;background:var(--uk-navy-1,#101a2a)}
.gs-panel-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;margin:0 0 14px}
.gs-panel-head h2{font-size:1.3rem}
.gs-host .eyebrow,.gs-sheet-backdrop .eyebrow{margin:0;color:var(--gs-gold);font-size:.72rem;font-weight:600;letter-spacing:.13em;text-transform:uppercase}
.gs-lock{margin:0;color:var(--gs-hot);font-size:.9rem;font-weight:600}
.gs-note,.gs-fine,.gs-empty{margin:0;color:var(--gs-muted);font-size:.85rem;line-height:1.45}
.gs-fine{margin-top:6px;font-size:.82rem}
.gs-empty{padding:18px 4px;text-align:center}
.gs-warn{color:var(--gs-hot)}
.gs-host .gs-name{overflow-wrap:anywhere}
.gs-line{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 6px;font-size:.9rem}
.gs-line b{color:var(--gs-hot);font-variant-numeric:tabular-nums}
.gs-host progress,.gs-sheet-backdrop progress{display:block;width:100%;height:12px;accent-color:var(--gs-gold)}
.gs-host progress.thin{height:8px}

/* ---- Buttons: the kit owns their look; this file only sets reach and wrapping ---- */
.gs-host :is(.secondary,.red-button,.text-button,.icon-button),.gs-sheet-backdrop :is(.secondary,.red-button,.text-button,.icon-button){min-height:44px;overflow-wrap:normal;word-break:normal}
.gs-host .text-button,.gs-sheet-backdrop .text-button{padding:0 8px}
.gs-host .icon-button,.gs-sheet-backdrop .icon-button{min-width:44px}
.gs-cta{width:100%;min-height:48px;margin-top:auto}
.gs-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px}
.gs-actions .red-button{flex:1 1 180px}
.gs-link{width:100%}

/* ---- Coin row ---- */
.gs-purse{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;margin:0 0 14px;padding-bottom:14px;border-bottom:1px solid var(--gs-line)}
.gs-purse>.secondary{width:100%}
.gs-bal{display:flex;align-items:center;gap:12px;min-width:0}
.gs-bal b{display:block;color:var(--gs-hot);font:700 1.7rem/1.1 Georgia,serif}
.gs-bal small{display:block;color:var(--gs-muted);font-size:.82rem}

/* ---- Icon family (design section 4B). Class names are the family names; a class holds its art path. ----
   To drop in finished art, point the class at /assets/guild-orders/<name>-v1.webp (guild-shop-ui.js lists every name, status and target path).
   Items: the workshop sprite is 4 columns by 3 rows of square cells. Tiles whose art is still to be painted carry data-status="new". */
.go-art,.go-mat{position:relative;display:block;flex:0 0 auto;border:1px solid var(--gs-ring);border-radius:var(--uk-radius-icon,8px);box-shadow:inset 0 0 0 2px var(--uk-navy-0,#0c1723),inset 0 0 0 3px #b8985b40,0 2px 5px #0005}
.go-art{--sx:0%;--sy:0%;width:64px;height:64px;background:url("/art/crafting/workshop-icons-v1.webp") var(--sx) var(--sy)/400% 300% no-repeat,var(--gs-tile)}
.go-art.md{width:56px;height:56px}
.go-art.sm{width:40px;height:40px}
.go-mat{width:48px;height:48px;background:var(--art,none) center/contain no-repeat,var(--gs-tile)}
.go-mat b,.go-art b{position:absolute;left:3px;bottom:2px;color:#fff1cc;font:700 .625rem/1 system-ui;text-shadow:0 1px 2px #0005}
.go-art.sm b{left:2px;bottom:1px;font-size:.5625rem}
.go-mat .gs-fish{position:absolute;inset:3px;width:calc(100% - 6px);height:calc(100% - 6px)}
.go-art[data-status="new"]{display:grid;place-items:center;color:var(--gs-gold);background:var(--gs-tile)}
.go-art[data-status="new"] .uk-icon{width:60%;height:60%;flex:none}
.go-art.sm[data-status="new"] .uk-icon{width:22px;height:22px}
.go-art-empty{background:var(--gs-tile)}
.go-item-bulwark{--sx:0%;--sy:0%}
.go-item-celerity{--sx:33.333%;--sy:0%}
.go-item-precision{--sx:66.667%;--sy:0%}
.go-item-renewal{--sx:100%;--sy:0%}
.go-item-emberedge{--sx:0%;--sy:50%}
.go-item-stormstring{--sx:33.333%;--sy:50%}
.go-item-force{--sx:66.667%;--sy:50%}
.go-item-sorcery{--sx:100%;--sy:50%}
.go-item-mending{--sx:0%;--sy:100%}
.go-item-bounty{background:url("/assets/guild-orders/go-item-bounty-v1.webp") center/100% 100% no-repeat,var(--gs-tile)}
.go-item-fortune{background:url("/assets/guild-orders/go-item-fortune-v1.webp") center/100% 100% no-repeat,var(--gs-tile)}
.go-mat-mining-1{--art:url("/assets/gathering-materials/mining-1-v1.webp")}
.go-mat-mining-2{--art:url("/assets/gathering-materials/mining-2-v1.webp")}
.go-mat-mining-3{--art:url("/assets/gathering-materials/mining-3-v1.webp")}
.go-mat-mining-4{--art:url("/assets/gathering-materials/mining-4-v1.webp")}
.go-mat-mining-5{--art:url("/assets/gathering-materials/mining-5-v1.webp")}
.go-mat-herbalism-1{--art:url("/assets/gathering-materials/herbalism-1-v1.webp")}
.go-mat-herbalism-2{--art:url("/assets/gathering-materials/herbalism-2-v1.webp")}
.go-mat-herbalism-3{--art:url("/assets/gathering-materials/herbalism-3-v1.webp")}
.go-mat-herbalism-4{--art:url("/assets/gathering-materials/herbalism-4-v1.webp")}
.go-mat-herbalism-5{--art:url("/assets/gathering-materials/herbalism-5-v1.webp")}
.go-mat-woodcutting-1{--art:url("/assets/gathering-materials/woodcutting-1-v1.webp")}
.go-mat-woodcutting-2{--art:url("/assets/gathering-materials/woodcutting-2-v1.webp")}
.go-mat-woodcutting-3{--art:url("/assets/gathering-materials/woodcutting-3-v1.webp")}
.go-mat-woodcutting-4{--art:url("/assets/gathering-materials/woodcutting-4-v1.webp")}
.go-mat-woodcutting-5{--art:url("/assets/gathering-materials/woodcutting-5-v1.webp")}
/* go-mat-fishing-1..5 and go-coin have no painted art yet: they draw their placeholder and carry data-status="new". */
.go-coin{display:inline-grid;place-items:center;flex:0 0 24px;width:24px;height:24px;border:1px solid var(--gs-ring);border-radius:50%;background:var(--gs-tile);color:var(--gs-gold)}
.go-coin .uk-icon{width:14px;height:14px;flex:0 0 14px}
.go-coin.lg{flex-basis:40px;width:40px;height:40px}
.go-coin.lg .uk-icon{width:24px;height:24px;flex-basis:24px}
/* Until go-coin is painted, it wears the kit's painted guild coin (the same art as the price chips) instead of the line-icon stand-in. */
.go-coin[data-status="new"]{border:0;background:url('/art/ui/icons-rewards-v1.webp') 66.6667% 0%/400% 400% no-repeat;filter:drop-shadow(0 2px 2px #0009)}
.go-coin[data-status="new"] .uk-icon{display:none}
.go-coin.lg[data-status="new"]{flex-basis:52px;width:52px;height:52px}

/* ---- Orders: two big cards (level 3 frame comes from uk-card) ---- */
.gs-orders,.gs-slots{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-items:start}
.gs-order{display:flex;flex-direction:column;gap:14px;min-width:0;padding:14px;background:radial-gradient(circle at 12% 0%,#24364e,var(--uk-navy-1,#101a2a) 70%)}
.gs-order-head,.gs-slot-head{display:flex;align-items:center;gap:12px;min-width:0}
.gs-order-title{flex:1;min-width:0}
.gs-order-title h3{font-size:1.1rem}
.gs-stocks{margin:3px 0 0;color:var(--gs-muted);font-size:.85rem}
.gs-tier{align-self:flex-start;padding:1px 9px;border:1px solid var(--gs-dim);border-radius:var(--uk-radius,4px);color:var(--gs-hot);font:700 .75rem/1.6 system-ui;letter-spacing:.06em}
.gs-mats{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;margin:0;padding:12px 0;list-style:none;border-block:1px solid var(--gs-line)}
.gs-row{display:grid;grid-template-columns:48px minmax(0,1fr);gap:4px 10px;align-items:center;min-width:0}
.gs-row .go-mat{grid-row:1/3}
.gs-row .gs-each{grid-column:2}
.gs-info{min-width:0}
.gs-info strong{display:block;color:var(--gs-strong)}
.gs-info small{display:block;color:var(--gs-muted);font-size:.82rem}
.gs-each{display:inline-flex;align-items:center;gap:6px;color:var(--gs-hot);font-size:.85rem;font-weight:600;white-space:nowrap}

/* ---- Tomorrow row ---- */
.gs-next{display:grid;grid-template-columns:minmax(0,1fr);gap:12px 18px;margin-top:16px;padding-top:14px;border-top:1px solid var(--gs-line)}
.gs-next>.secondary{width:100%}
.gs-next-list{display:flex;flex-wrap:wrap;gap:10px 18px;margin:0;padding:0;list-style:none}
.gs-next-list li{display:flex;align-items:center;gap:10px;min-width:0;color:var(--gs-strong)}
.gs-next-list em{margin-left:4px;padding:0 6px;border:1px solid var(--gs-dim);border-radius:var(--uk-radius,4px);color:var(--gs-hot);font-size:.78rem;font-style:normal}

/* ---- Leader edit ---- */
.gs-cover{margin:10px 0 14px;color:var(--gs-muted);font-size:.9rem}
.gs-cover b{color:var(--gs-hot)}
.gs-slot{display:grid;gap:12px;min-width:0;padding:14px}
.gs-slot-head .secondary{margin-left:auto;flex:0 0 auto}
.gs-step{margin:0;color:var(--gs-gold);font-size:.85rem;font-weight:600}
.gs-opt{display:grid;gap:8px;margin-top:14px}
.gs-opt p{margin:0}
.gs-today-pick{grid-template-columns:1fr auto;align-items:center;margin:0 0 12px}
.gs-today-pick .red-button{min-width:220px}
@media (max-width:640px){.gs-today-pick{grid-template-columns:1fr}.gs-today-pick .red-button{min-width:0;width:100%}}
.gs-effects{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:4px;margin:12px 0}
.gs-slot .gs-effects{margin:0}
.gs-eff{display:grid;justify-items:center;align-content:start;gap:6px;min-width:0;min-height:92px;padding:6px 2px;border:0;background:none;color:inherit;font:600 .6875rem/1.2 system-ui;text-align:center;cursor:pointer}
.gs-eff[aria-pressed="true"]{color:var(--gs-hot)}
.gs-eff[aria-pressed="true"] .go-art{border-color:var(--gs-hot);box-shadow:inset 0 0 0 2px var(--uk-navy-0,#0c1723),0 0 0 2px var(--gs-hot),0 2px 5px #0005}
.gs-eff-tag{font:500 .625rem/1.1 system-ui;color:var(--gs-hot);opacity:.85}

/* ---- Segmented choices: the kit tab look (aria-pressed marks the chosen one). Specificity matches the kit's tab rules so layout wins here. ---- */
.shell .gs-host .uk-tabs.gs-seg{display:grid;gap:6px;margin:0 0 12px;padding:0;border:0}
.shell .gs-host .gs-seg-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.shell .gs-host .gs-seg-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.shell .gs-host .gs-seg-5{grid-template-columns:repeat(5,minmax(0,1fr))}
.shell .gs-host .uk-tabs.gs-seg>button{display:grid;justify-items:center;align-content:center;gap:2px;flex:none;min-width:0;min-height:52px;padding:4px 2px;text-align:center;white-space:normal;overflow-wrap:normal;word-break:normal}
.shell .gs-host .uk-tabs.gs-seg-2>button{min-height:44px}
.gs-seg small{display:block;color:var(--gs-muted);font:400 .6875rem/1.1 system-ui}
.gs-seg>button[aria-pressed="true"] small{color:#fff1cc}
.gs-seg .uk-icon{width:16px;height:16px;flex:0 0 16px}

/* ---- Store: the selected item as a grid of kit cards, one per tier (docs/UI_KIT_V1_2026-10-03.md).
   The cards, chips, state words and the lock/coin icons are kit classes; only the layout below is page-local. ---- */
.gs-store{display:grid;gap:10px;margin-top:14px;min-width:0}
/* One card per row on phones; the kit's own 200px minimum applies from 600px (ui-kit.css loads after this file). */
.gs-trows{--uk-card-min:100%;margin:0;padding:0;list-style:none}
.gs-trow .uk-card-head{flex-direction:row;flex-wrap:wrap;align-items:center}
.gs-trow .uk-card-head .go-art{flex:0 0 auto}
.gs-trow .uk-card-title{flex:1 1 auto;white-space:nowrap}
.gs-trow .uk-state{margin-left:auto}
.gs-trow .uk-card-foot>:is(.secondary,.red-button){width:100%}
/* A note on a card never runs past the card: it wraps (only a word longer than the card is broken). */
.gs-host .uk-card-note{min-width:0;overflow-wrap:break-word}
.gs-trow.is-locked .gs-opens{color:var(--uk-locked-text,#9aa3b0)}
.gs-trow.is-locked .go-art{filter:grayscale(1) brightness(.65)}
/* The old row classes: the Contribute sheet still uses .gs-info and .gs-meta. Specificity 0,2,0 so the flex row beats ".gs-info small{display:block}" above. */
.gs-info .gs-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;color:var(--gs-muted)}
.gs-info .gs-note{margin-top:2px}
.gs-confirm{display:grid;gap:8px;padding:2px 0 0}
.gs-confirm p{margin:0;color:var(--gs-strong)}
.gs-confirm .gs-actions{margin-top:0}

/* ---- Contribute sheet: a modal, so it wears the modal frame (interface-art.css gives .modal-backdrop>.ornate its painted border) ---- */
.gs-sheet-backdrop{place-items:center;padding:16px}
.gs-sheet{display:grid;gap:14px;width:min(560px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:24px 26px;background:linear-gradient(150deg,#1c2b40,#101a2b)}
.gs-sheet-head{display:flex;align-items:center;gap:12px}
.gs-sheet-head>div{flex:1;min-width:0}
.gs-sheet-head h3{font-size:1.2rem}
.gs-lines{display:grid;gap:12px;margin:0;padding:0;list-style:none}
.gs-lrow{display:grid;grid-template-columns:56px minmax(0,1fr) auto;grid-template-areas:"i t s";gap:10px;align-items:center}
.gs-lrow .go-mat{grid-area:i;width:56px;height:56px}
.gs-lrow .gs-info{grid-area:t}
.gs-ctl{grid-area:s;display:flex;align-items:center;justify-content:flex-end;gap:6px}
.gs-qty{width:72px;min-height:44px;padding:0 6px;border:1px solid var(--gs-dim);border-radius:var(--uk-radius,4px);background:var(--uk-navy-0,#0c1723);color:var(--gs-hot);font:700 1.125rem Georgia,serif;text-align:center}
.gs-quick{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.gs-sum{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0}
.gs-sum b{display:inline-flex;align-items:center;gap:8px;color:var(--gs-hot);font-size:1.1rem}
.gs-sheet .gs-info strong{display:block;color:var(--gs-strong)}
.gs-sheet .gs-info small{display:block;color:var(--gs-muted);font-size:.82rem}
.gs-sheet .gs-note,.gs-sheet .gs-fine{margin:0}

/* ---- Store page: a header with the purse, today's two orders as feature cards, then the full catalogue ---- */
.gs-hero{align-items:center;gap:14px 20px;margin-bottom:18px}
.gs-hero-title{flex:1 1 260px;min-width:0}
.gs-hero-title .gs-note{margin-top:6px}
.gs-hero .gs-purse{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin:0;padding:10px 14px;border:1px solid var(--gs-line);border-radius:var(--uk-radius-card,6px);background:var(--uk-navy-0,#0c1723)}
.gs-hero .gs-purse>.secondary{width:auto}
.gs-sec{margin:0 0 12px}
.gs-sec h3{font-size:1.1rem}
.gs-sec p{margin:4px 0 0;color:var(--gs-muted);font-size:.85rem;line-height:1.45}
.gs-feature{margin:0 0 6px}
.gs-feature-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
.gs-feature-card{display:flex;flex-direction:column;gap:12px;min-width:0;padding:16px;background:radial-gradient(circle at 12% 0%,#24364e,var(--uk-navy-1,#101a2a) 70%)}
.gs-feature-card.is-stocked{border-color:var(--gs-gold);box-shadow:0 0 0 1px #d6b57555,0 2px 5px #0005}
.gs-feature-head{display:flex;align-items:center;gap:14px;min-width:0}
.gs-feature-head .go-art{width:72px;height:72px}
.gs-feature-head h4{margin:2px 0 0;color:var(--gs-strong);font:600 1.15rem/1.2 Georgia,"Times New Roman",serif}
.gs-feature-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:6px}
.gs-feature-stock{margin:0;color:var(--gs-muted);font-size:.9rem}
.gs-feature-stock b{color:var(--gs-hot);font:700 1.35rem/1 Georgia,serif;margin-right:4px}
.gs-feature-stock.is-empty{color:var(--gs-gold);font-style:italic}
.gs-next-one .gs-fine{margin-top:6px}
.gs-feature-go{width:100%;margin-top:auto}
.gs-browse{margin-top:22px;padding-top:18px;border-top:1px solid var(--gs-line)}
.gs-store-panel .gs-effects{margin:4px 0 8px}
.gs-store-panel .gs-eff{padding:8px 4px;border:1px solid transparent;border-radius:var(--uk-radius-card,6px)}
.gs-store-panel .gs-eff[aria-pressed="true"]{border-color:var(--gs-line);background:var(--uk-navy-0,#0c1723)}
.gs-foot{display:grid;gap:2px;margin-top:18px;padding-top:12px;border-top:1px solid var(--gs-line)}
.gs-foot .gs-fine{margin:0}

/* ---- Wide layouts: follow the width of the page area, not the screen ---- */
@container (min-width:541px){
 .gs-panel{padding:22px 24px}
 .go-mat{width:56px;height:56px}
 .gs-row{grid-template-columns:56px minmax(0,1fr) auto}
 .gs-row .go-mat{grid-row:auto}
 .gs-row .gs-each{grid-column:auto}
 .gs-eff{font-size:.75rem}
 .gs-order-title h3{font-size:1.3rem}
}
@container (min-width:761px){
 .gs-orders,.gs-slots,.gs-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .gs-purse{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px}
 .gs-purse>.secondary{width:auto}
 .gs-next{grid-template-columns:auto minmax(0,1fr) auto;align-items:center}
 .gs-next>.secondary{width:auto}
}
@container (min-width:1100px){
 .gs-mats{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ---- Phones: the sheet becomes a bottom sheet (it sits outside the guild page, so it follows the screen) ---- */
@media(max-width:540px){
 .gs-sheet-backdrop{place-items:end stretch;padding:0}
 .gs-sheet{width:auto;max-height:calc(100dvh - 8px);padding:20px 22px 22px;border-radius:var(--uk-radius-card,6px) var(--uk-radius-card,6px) 0 0}
 .gs-lrow{grid-template-columns:48px minmax(0,1fr);grid-template-areas:"i t" "s s"}
 .gs-lrow .go-mat{width:48px;height:48px}
 .gs-ctl{justify-content:space-between}
 .gs-actions .red-button{flex-basis:100%}
}

/* ---- Plain answers: the engine's refusal (kept on screen, the game's toast vanishes after a few seconds), and the last hand-in or purchase of the day ---- */
.gs-error,.gs-last{margin:0 0 14px;padding:10px 12px;border:1px solid var(--gs-dim);border-radius:var(--uk-radius,4px);font-size:.9rem;line-height:1.45}
.gs-error{border-color:var(--gs-hot);background:var(--uk-navy-0,#0c1723);color:var(--gs-strong)}
.gs-last{color:var(--gs-muted)}
.gs-last b{display:block;margin-bottom:2px;color:var(--gs-gold);font-size:.74rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase}

/* ---- Crafting page card (engine switch level 2): replaces the workbench with one card and one button ---- */
.gs-craft-moved{display:grid;gap:10px;min-width:0;margin:14px 0;padding:18px}
.gs-craft-moved :is(h2,p,button){overflow-wrap:normal;word-break:normal;hyphens:none}
.gs-craft-moved h2{margin:2px 0 0;color:var(--uk-ivory,#eadbb9);font-family:Georgia,"Times New Roman",serif;font-size:1.3rem;font-weight:600;line-height:1.2}
.gs-craft-moved .eyebrow{margin:0;color:var(--uk-gold,#d6b575);font-size:.72rem;font-weight:600;letter-spacing:.13em;text-transform:uppercase}
.gs-craft-moved p{margin:0;color:var(--uk-ivory-dim,#c9c3b4);line-height:1.45}
.gs-craft-moved .gs-fine{font-size:.82rem}
.gs-craft-moved .red-button{min-height:48px}
.gs-craft-moved button:focus-visible{outline:3px solid var(--uk-focus,#f4cd86);outline-offset:2px}
@media(min-width:700px){
 .gs-craft-moved .gs-cta{width:auto;justify-self:start;min-width:220px}
}
/* Weekly contribution tally (IRP_GUILD_CONTRIBUTION_VERSION; drawn only when the engine sends orders.contribution). Wraps at 390px. */
.gs-weekly{display:grid;gap:6px;margin:0 0 14px;padding:0 0 14px;border-bottom:1px solid var(--gs-line);min-width:0}
.gs-weekly .gs-line{flex-wrap:wrap;gap:4px 12px}
.gs-weekly progress{width:100%}

/* /ui-guild.css */
/* Guild screen on the UI kit: LAYOUT ONLY (grid, spacing, clamping). WRITTEN, NEVER RUN.
   Linked in index.html before ui-kit.css (which stays last); every rule starts with .uk-guild, so it does nothing until the switch draws that markup. Markup: public/ui-guild.js. Plan: docs/NEXT_UI_GUILD_2026-10-03.md.
   Colours, frames and shadows come from public/ui-kit.css; the only colour here is the kit's own token on the one dark bar under the title (kit request 19 asks for a stronger gradient instead).
   Phones: no fixed widths, nothing wider than the screen, 44 px targets (buttons and tabs get theirs from the kit). */
.uk-guild{display:grid;gap:14px;align-content:start;min-width:0}
.uk-guild>*{min-width:0}
.uk-guild [hidden]{display:none!important}
.uk-guild label{margin:0}

/* One header block: crest, name, description, tools, then ONE strip (level, members, vault gold, experience bar) on a dark bar so it never sits over the art. */
.uk-guild .uk-head{grid-template-columns:auto minmax(0,1fr);min-height:0}
.uk-guild .uk-head-help{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.uk-guild .uk-title-row{flex-wrap:wrap;justify-content:flex-start}
.uk-guild .uk-title-row>h1{flex:0 1 auto;overflow-wrap:anywhere}
.uk-guild .uk-guild-tools{display:inline-flex;gap:6px;margin-left:auto}
.uk-guild .uk-head>.uk-guild-strip{grid-column:1/-1;display:grid;gap:10px;padding:10px 12px;border-radius:var(--uk-radius);background:var(--uk-navy-0)}
.uk-guild .uk-guild-strip .uk-stats{padding:0}
@media(max-width:480px){.uk-guild .uk-head-help{-webkit-line-clamp:1}}

/* Message of the day: one line; the text is cut with an ellipsis until the banner is opened. */
.uk-guild .uk-guild-motd>summary{display:flex;align-items:center;gap:10px}
.uk-guild .uk-guild-motd-text{min-width:0}
.uk-guild .uk-guild-buffs{margin:0}
.uk-guild .uk-guild-nowrap{white-space:nowrap}
.uk-guild .uk-guild-motd-hint{flex:0 0 auto;white-space:nowrap}
.uk-guild .uk-guild-motd-line{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uk-guild .uk-guild-motd-tag{margin-right:6px;font:700 .72rem/1.3 var(--uk-sans);letter-spacing:.1em;text-transform:uppercase}
.uk-guild .uk-guild-motd[open]>summary .uk-guild-motd-line{white-space:normal}
.uk-guild .uk-guild-motd>form,.uk-guild .uk-guild-motd>.uk-guild-motd-full{margin:10px 4px 4px}
.shell .uk-guild-motd>form{display:grid;gap:10px;max-width:none}
.uk-guild .uk-guild-motd .uk-btn{justify-self:start}
.uk-guild .uk-guild-motd-static{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 14px;box-sizing:border-box}

/* Tabs: the kit's tab rules win on width, so this repeats the specificity; three per row on phones (kit request 15). */
.uk-guild .uk-guild-tabs{margin:0}
.shell .uk-guild-tabs.uk-tabs>.uk-tab{flex:1 1 auto;min-width:max-content;gap:6px;padding-inline:10px}
@media(max-width:480px){.shell .uk-guild-tabs.uk-tabs>.uk-tab{flex:1 1 28%;min-width:0}}

/* Section heading lines and empty states. */
.uk-guild .uk-guild-line{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px}
.uk-guild .uk-guild-line .uk-heading{flex:0 1 auto;margin-bottom:0}
.uk-guild .uk-guild-line>.uk-card-note{flex:1 1 220px}
.uk-guild .uk-guild-empty{margin:0;padding:18px 8px;text-align:center}
.uk-guild .uk-guild-wide{--uk-card-min:240px}
@media(min-width:900px){.uk-guild .uk-guild-wide{--uk-card-min:300px}}
.uk-guild .uk-guild-desc{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

/* Search and sort. */
.uk-guild .uk-guild-toolbar{display:flex;flex-wrap:wrap;gap:10px}
.uk-guild .uk-guild-search{flex:1 1 220px;min-width:0;margin:0}
.uk-guild .uk-guild-sort{flex:0 1 200px;min-width:0;margin:0}
.uk-guild .uk-guild-search input,.uk-guild .uk-guild-sort select{width:100%;box-sizing:border-box;min-height:44px}

/* Members: one compact two-line row per member; the leader's row is a details element, so the menu opens only under the row that was tapped. */
.uk-guild .uk-guild-members{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,400px),1fr));gap:8px;align-items:start;margin:0;padding:0;list-style:none}
.uk-guild .uk-guild-row{min-width:0;padding:0;overflow:hidden}
.uk-guild .uk-guild-line-row{display:grid;grid-template-columns:44px minmax(0,1fr);grid-template-areas:"seal who" "seal sub";align-items:center;gap:2px 10px;box-sizing:border-box;min-height:56px;padding:8px 10px}
.uk-guild .uk-guild-line-row>.uk-card-icon{grid-area:seal;align-self:start}
.uk-guild .uk-guild-who{grid-area:who;min-width:0}
.uk-guild .uk-guild-who .uk-card-title{display:block;font-size:.95rem;letter-spacing:0}
.uk-guild .uk-guild-lvl{margin-left:auto;white-space:nowrap;font-size:1.15rem}
.uk-guild .uk-guild-sub{grid-area:sub;display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;min-width:0}
.uk-guild .uk-guild-sub .uk-card-note{margin:0}
.uk-guild .uk-guild-seal{font:600 1.15rem/1 var(--uk-serif);color:var(--uk-gold-text)}
.uk-guild .uk-guild-has-menu{grid-template-columns:44px minmax(0,1fr) 28px;grid-template-areas:"seal who more" "seal sub more";cursor:pointer;list-style:none}
.uk-guild .uk-guild-has-menu::-webkit-details-marker{display:none}
.uk-guild .uk-guild-has-menu::marker{content:""}
.uk-guild .uk-guild-more{grid-area:more;display:grid;place-items:center;width:28px;height:44px}
.uk-guild .uk-guild-more::before{content:"\22EF";font-size:1.5rem;line-height:1}
.uk-guild .uk-guild-manage[open] .uk-guild-more::before{content:"\25B4"}
.uk-guild .uk-guild-menu{padding:0 10px 10px}

/* Daily, log, forms, footer. */
.uk-guild .uk-guild-log dd{font:500 .85rem/1.3 var(--uk-sans);color:var(--uk-ivory-dim);white-space:nowrap}
.uk-guild .uk-guild-log dt{min-width:0;overflow-wrap:anywhere}
.uk-guild .uk-guild-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:14px}
.uk-guild .uk-guild-form>:is(.uk-guild-perms,.uk-card-note,.uk-btn,.uk-guild-span){grid-column:1/-1}
.uk-guild .uk-guild-form .uk-btn{justify-self:start}
.shell .uk-guild .uk-guild-form{max-width:none;width:100%;align-items:start}
.uk-guild .uk-guild-form label{margin:0;align-content:start}
.uk-guild .uk-guild-perms{display:grid;align-items:start;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:12px}
.uk-guild .uk-guild-perms fieldset{display:grid;gap:10px;min-width:0;margin:0}
.uk-guild .uk-guild-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.uk-guild .uk-guild-foot>.uk-card-note{flex:1 1 200px;margin:0}

/* Phones: a SHORT header (about 160 px, so the tab bar is in the first screen under the game's own top bar): no crest column and no description, the title
   and the two icon buttons on one row, the three numbers on one row, the experience bar thin (its words are kept for screen readers), the message one line,
   and a compact vault gold (the full number is in the page for screen readers and in Upgrades). */
.uk-guild .uk-guild-compact{display:none}
.uk-guild .uk-guild-foot-help{display:none}
@media(max-width:480px){
 .uk-guild .uk-head-icon,.uk-guild .uk-head-help{display:none}
 .uk-guild .uk-head{grid-template-columns:minmax(0,1fr);gap:8px}
 .uk-guild .uk-title-row{flex-wrap:nowrap;gap:4px 6px}
 .uk-guild .uk-title-row>h1{flex:1 1 0;min-width:0;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .uk-guild .uk-guild-tools{margin-left:0}
 .uk-guild .uk-head>.uk-guild-strip{gap:6px;padding:6px 10px}
 .uk-guild .uk-guild-strip .uk-stat dd{font-size:1.05rem;white-space:nowrap}
 .uk-guild .uk-head .uk-title-row>.uk-help{display:none}
 .uk-guild .uk-guild-strip .uk-meter-line,.uk-guild .uk-guild-strip .uk-guild-full{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
 .uk-guild .uk-guild-strip .uk-progress-lg{height:8px}
 .uk-guild .uk-guild-compact{display:inline}
 .uk-guild .uk-guild-foot-help{display:inline-block;margin:-9px 0 -9px auto}
 .uk-guild .uk-guild-sort{flex:1 1 100%}
}
/* The tier mark on a gathering material icon is 10 px in the shared workshop art: raise it to the 11.5 px floor on this screen. */
.uk-guild .workshop-art b{font-size:.72rem;line-height:1}

/* The state tag is nowrap in the kit; let it wrap inside a narrow card (kit request 22, first made on the Quests screen). */
.uk-guild .uk-card .uk-state{max-width:100%;white-space:normal;text-align:center}

/* The guild shop client draws Orders and Store (its own HTML) inside one thin kit panel. */
.uk-guild .uk-guild-shop{min-width:0;overflow:hidden}

/* /ui-hunts.css */
/* Boss Hunts, Raids and Party on the UI kit: LAYOUT ONLY (grid, spacing, clamping). WRITTEN, NEVER RUN.
   Linked in index.html before ui-kit.css (which stays last); every rule starts with .uh-page (or .shell .uh-...), so it does nothing until the switch draws that markup. Markup: public/ui-hunts.js. Plan: docs/NEXT_UI_HUNTS_2026-10-03.md.
   Colours, frames and shadows come from public/ui-kit.css; the only colours here are the kit's own tokens (the dark bar under the title, the ring on the Hunt to do next).
   Phones: no fixed widths, nothing wider than the screen, 44 px targets (buttons and tabs get theirs from the kit), smallest text .72rem (11.5 px). */
.uh-page{display:grid;gap:14px;align-content:start;min-width:0}
.uh-page>*{min-width:0}
/* The kit scopes heading type and the focus ring to .uk-page; the game screen scopes them here instead (same two lines as the Quests screen). */
.uh-page :where(h1),.uh-page :where(h2),.uh-page :where(h3){margin:0;font-family:var(--uk-serif);font-weight:500;letter-spacing:.02em;color:var(--uk-gold-text);text-wrap:balance}
.uh-page :focus-visible{outline:3px solid var(--uk-focus);outline-offset:2px}
.uh-page [hidden]{display:none!important}

/* One header block: icon, title, one line of help, then ONE strip of three numbers on a dark bar so a number never sits over the art (kit request 26). The words are the labels, each cell holds one number. */
.uh-page .uk-head{grid-template-columns:auto minmax(0,1fr);min-height:0}
.uh-page .uk-head>.uk-stats{grid-column:1/-1;padding:10px 12px;border:0;border-radius:var(--uk-radius);background:var(--uk-navy-0)}
.uh-page .uk-stat dd{font-size:clamp(1.05rem,4.6vw,1.55rem)}
.uh-page .uk-stat dt{letter-spacing:.06em}
.uh-page .uk-title-row>h1{flex:0 1 auto;overflow-wrap:anywhere}
/* Phone first screen: the shell adds a topbar, notices and a bottom nav around the page, so the header is one title row and one row of three numbers (about 140 px): no icon, no help line, no stat icons, labels on one line. */
@media(max-width:480px){.uh-page .uk-head-icon,.uh-page .uk-head-help,.uh-page .uk-stat>.uk-art,.uh-page .uh-wide{display:none}.uh-page .uk-head{grid-template-columns:minmax(0,1fr);gap:6px}.uh-page .uk-head>.uk-stats{padding:6px 2px}.uh-page .uk-stat{padding:0 3px}.uh-page .uk-stat dd{font-size:1.05rem}.uh-page .uk-stat dt{letter-spacing:0;text-transform:none;font-size:.72rem}.uh-page .uk-title-row{flex-wrap:nowrap;align-items:flex-start}.uh-page .uk-title-row>h1{flex:1 1 auto;font-size:1.35rem}.uh-rule>.uk-card-note{font-size:.85rem}}

/* Three icon tabs, equal width at every size (the kit stacks icon over label under 480 px). */
.uh-page .uh-tabs{margin:0}
.shell .uh-tabs.uk-tabs>.uk-tab{flex:1 1 0;min-width:0}

/* Text that stands alone under the tabs. */
.uh-rule{display:grid;gap:6px}
.uh-rule>p,.uh-page .uh-reason{margin:0}
.uh-page .uh-reason{display:flex;align-items:center;gap:8px;line-height:1.35;color:var(--uk-gold-text)}
.uh-page .uh-reason .uk-art{width:22px;height:22px}
.uh-page .uh-empty{margin:0;padding:12px 4px}

/* "Needs you": a gold card with one primary button. It is a card of its own (not a state tag on a seat) so it cannot be mistaken for "Not ready". */
.uh-need{display:flex;flex-direction:column;gap:8px;min-width:0;padding:12px 0}
.uh-need>.uk-card-head,.uh-need>.uk-card-note,.uh-need>.uk-card-foot,.uh-need>.uh-notice-list{margin-inline:var(--uk-pad)}
.uh-need .uk-card-head{flex-direction:row;align-items:center;flex-wrap:wrap;gap:10px}
.uh-need .uk-card-head .uk-state{margin-left:auto}
.uh-need .uk-card-foot{display:block}
.uh-notice-list{display:grid;gap:8px;margin-block:0;padding:0;list-style:none}
.uh-notice-list>li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px}
.uh-page .uk-card .uk-state{max-width:100%;white-space:normal;text-align:center}

/* Boss Hunts: a boss portrait beside the title on a phone (76 px, never hidden), a column on the right from 700 px. */
.uh-hunts{display:grid;gap:14px;min-width:0}
.uh-page .uh-hunt{grid-template-columns:92px minmax(0,1fr);gap:10px 12px;align-items:start}
.uh-page .uh-hunt>.uk-event-body{display:contents}
.uh-page .uh-hunt>.uk-event-body>*{grid-column:1/-1;min-width:0}
.uh-page .uh-hunt .uh-top{grid-column:2;grid-row:1;display:grid;gap:6px}
.uh-page .uh-hunt>.uh-boss{grid-column:1;grid-row:1}
.uh-boss{display:grid;place-items:center;width:92px;height:92px;min-width:0;overflow:hidden}
.uh-page .uh-boss svg,.uh-page .uh-boss img{display:block;width:100%;height:100%;border:0;background:none;object-fit:contain}
.uh-page .uh-hunt .uh-next,.uh-page .uh-hunt .uk-event-eyebrow{margin:0}
/* 320 px phones (game text QA, 7 Oct): long zone names such as SHATTERDUNE CARAVANSERAI broke mid-word beside the portrait. */
@media (max-width:420px){.uh-page .uh-hunt .uk-event-eyebrow{font-size:.71875rem;letter-spacing:.02em;overflow-wrap:break-word}}
.uh-page .uh-hunt.is-next{outline:2px solid var(--uk-gold-hi);outline-offset:3px}
.uh-page .uh-hunt .uk-chips{margin:0}
.uh-page .uh-hunt .uk-bullets{font-size:.95rem}
@media(min-width:700px){
 .uh-page .uh-hunt{grid-template-columns:minmax(0,1fr) minmax(180px,28%);align-items:center}
 .uh-page .uh-hunt>.uk-event-body{display:grid;gap:10px;grid-column:1;grid-row:1}
 .uh-page .uh-hunt>.uk-event-body>*{grid-column:auto}
 .uh-page .uh-hunt .uh-top{grid-column:auto;grid-row:auto}
 .uh-page .uh-hunt>.uh-boss{grid-column:2;grid-row:1;width:100%;height:100%;min-height:210px}
}

/* The raid is the biggest card on the page: a larger title and art column, and a banner of the raid's own picture on phones too. */
.uh-page .uh-raid{--uk-frame-w:22px}
.uh-page .uh-raid h2{font-size:clamp(1.7rem,6vw,2.3rem)}
.uh-page .uh-raid .uk-event-art{order:-1;display:block;min-height:0;height:120px}
.uh-page .uh-raid .uk-meter{margin-block:2px}
.uh-more>.uh-more-body,.uh-more-body{display:grid;gap:10px;padding:12px 4px 4px}
.uh-more-body>p,.uh-more-body>.uk-btn{margin:0}
.uh-more-body>.uk-btn{justify-self:start}
.uh-seals{display:grid;gap:10px;margin:0;padding-left:1.4rem}
.uh-seals>li{display:grid;gap:3px}
.uh-seals>li>span{color:var(--uk-ivory-dim);font-size:.9rem}
@media(min-width:700px){
 .uh-page .uh-raid{grid-template-columns:minmax(0,1fr) minmax(240px,40%)}
 .uh-page .uh-raid .uk-event-art{order:0;height:100%;min-height:300px}
}

/* Raid group and party headings. */
.uh-line{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px}
.uh-line .uk-heading{flex:1 1 auto;margin-bottom:0}
.uh-line>.uk-chips{flex:0 1 auto}
.uh-count{color:var(--uk-ivory-dim);font:600 .95rem var(--uk-serif)}
.uh-count.is-full{color:var(--uk-done)}

/* Roster: grouped by role, one 56 px row per seat (portrait, name with class and state, role icon, state mark). Three role columns from 900 px; one column on a phone. */
.uh-roles{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
@media(min-width:900px){.uh-roles{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}}
.uh-role{display:grid;gap:8px;min-width:0}
.uh-role>h3{margin:0}
.uh-seats{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.uh-seat{display:grid;grid-template-columns:40px minmax(0,1fr) 22px 22px;align-items:center;gap:8px;box-sizing:border-box;min-height:56px;padding:8px 10px}
.uh-face{display:grid;place-items:center;flex:0 0 auto;width:40px;height:40px;overflow:hidden;border-radius:var(--uk-radius-icon)}
.uh-face .tavern-portrait{display:block;width:100%;height:100%;object-fit:cover}
.uh-face .uk-art{width:30px;height:30px}
.uh-seat .uh-seat-role,.uh-seat .uh-seat-mark{width:22px;height:22px}
.uh-seat-who{display:grid;min-width:0}
.uh-seat-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 .95rem/1.25 var(--uk-serif);color:var(--uk-ivory)}
.uh-seat-who small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 .72rem/1.3 var(--uk-sans);color:var(--uk-ivory-dim)}
.uk-card.is-locked .uh-seat-name{color:var(--uk-locked-text)}
.uk-card.is-locked .uh-seat-who small{color:var(--uk-locked-text)}
.uh-seat-open .uh-face{border:1px dashed var(--uk-locked)}
.uh-seat-open{border-style:dashed}
.uh-open-word{grid-column:3/5;justify-self:end;font:700 .72rem/1 var(--uk-sans);letter-spacing:.06em;text-transform:uppercase;color:var(--uk-locked-text)}
.uh-you{font:700 .72rem/1.3 var(--uk-sans);font-style:normal;letter-spacing:.06em;text-transform:uppercase;color:var(--uk-gold-text);margin-left:4px}

/* Party: four seat cards across at 1280, two on a phone; manage rows. */
.uh-party{--uk-card-min:150px}
@media(min-width:900px){.uh-party{--uk-card-min:210px}}
.uh-party .uh-face{width:44px;height:44px}
.uh-party .uk-card-title{overflow-wrap:anywhere}
.uh-party>.uk-card .uk-card-foot.uk-actions{display:flex}
.uh-manage-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px}
.uh-manage-row>.uk-actions{flex:0 1 auto}
.uh-page .uh-manage>summary>.uk-card-note,.uh-page .uh-records>summary>.uk-card-note{display:inline;margin-left:8px}
.uh-extra>.uk-heading{margin:0}
.uh-page .uk-bullets{font-size:.95rem}
@media(max-width:480px){.uh-seat .uh-lv{display:none}.uh-seat-name{white-space:normal;overflow-wrap:anywhere}.uh-seat-who small{white-space:normal;overflow-wrap:anywhere}}
.uh-page .text-link{display:inline-flex;align-items:center;min-height:44px;margin:0 18px 0 0}
.uh-page .raid-entry-reason{display:grid;gap:4px;justify-items:start}
/* The old Party / Combat records row sits above the header: tighter, still two 44 px buttons (the class uh-tabs-tight is set by public/ui-hunts.js only while this screen is the next element after it; no :has()). */
.shell .section-tabs.uh-tabs-tight{margin:0 0 6px;gap:6px}
.shell .section-tabs.uh-tabs-tight>.section-tab{padding-block:4px}

/* Your timers (simpler screens #9, IRP_UI_PLAIN_VERSION): one wrapping row of chips under the Raids & Dungeons header. Each chip is a 44px tap target. */
.uh-page .uh-timers{display:flex;flex-direction:column;gap:8px;padding:10px var(--uk-pad)}
.uh-page .uh-timers-title{margin:0;font:600 .8rem/1.3 var(--uk-sans);letter-spacing:.06em;text-transform:uppercase;color:var(--uk-gold-text)}
.uh-page .uh-timer-list{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.uh-page .uh-timer-list>li{display:flex;flex:1 1 8.5em;min-width:0;max-width:100%}
.uh-page .uk-btn.uh-timer{display:grid;grid-template-columns:22px minmax(0,1fr);grid-template-rows:auto auto;column-gap:7px;align-items:center;align-content:center;width:100%;min-width:0;min-height:44px;box-sizing:border-box;margin:0;padding:4px 8px;border:1px solid var(--uk-gold-dim);border-radius:8px;background:var(--uk-navy-0);color:var(--uk-ivory);font:600 .8rem/1.2 var(--uk-sans);text-align:left;cursor:pointer}
.uh-page .uk-btn.uh-timer .uk-art{grid-row:1/3;width:22px;height:22px}
.uh-page .uh-timer-name{min-width:0;font-weight:600;font-size:.72rem;color:var(--uk-ivory-dim)}
.uh-page .uh-timer-state{min-width:0;font-weight:700;color:var(--uk-gold-text)}
.uh-page .uk-btn.uh-timer.is-ready{border-color:var(--uk-done-dim)}.uh-page .uk-btn.uh-timer.is-ready .uh-timer-state{color:var(--uk-done)}
.uh-page .uk-btn.uh-timer.is-closed{border-color:var(--uk-locked)}.uh-page .uk-btn.uh-timer.is-closed .uh-timer-state{color:var(--uk-locked-text);font-weight:600}
.uh-page .uk-btn.uh-timer:focus-visible{outline:2px solid var(--uk-focus);outline-offset:2px}
/* Flexible raid (switch IRP_RAID_SIZE_VERSION, docs/NEXT_RAID_FLEX_2026-10-05.md): the "Fill up to" stepper, the lend toggle, the companion lists and the open-seats block. Layout only, same kit tokens.
   Phone first: the stepper wraps under its label, every control is a kit button (44 px), names wrap instead of being cut, one column. */
.uh-page .uh-fill{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.uh-page .uh-fill-label{font:600 .95rem var(--uk-serif);color:var(--uk-gold-text)}
.uh-page .uh-stepper{display:inline-flex;align-items:center;gap:8px;max-width:100%}
.uh-page .uh-stepper .uk-btn{min-width:44px;padding-inline:0;flex:0 0 auto}
.uh-page .uh-fill-count{min-width:5.5em;text-align:center;font:600 1rem var(--uk-serif);color:var(--uk-ivory);overflow-wrap:anywhere}
.uh-page .uh-fill>.uh-fill-note{flex:1 1 100%}
.uh-page .uh-fill-note,.uh-page .uh-flex-need,.uh-page .uh-flex-effect{margin:0}
.uh-page .uh-lend{display:grid;gap:6px;justify-items:start}
.uh-page .uh-lend>.uk-btn{max-width:100%;white-space:normal;text-align:left}
.uh-page .uh-lend>p{margin:0}
.uh-page .uh-fill-rows{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.uh-page .uh-fill-rows>li{display:grid;gap:2px;min-width:0;overflow-wrap:anywhere}
.uh-page .uh-fill-rows>li>span{color:var(--uk-ivory-dim);font-size:.9rem}
.uh-page .uh-seats-spare{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.uh-page .uh-flex .uh-seat-who small{white-space:normal;overflow-wrap:anywhere}
/* Fill mode (2026-10-05): the "Fill with" two-button control and the weak-filler warning above Start. Same kit tokens; buttons wrap their words, 44 px touch targets, one row or two at 320 px. */
.uh-page .uh-fillmode{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.uh-page .uh-modes{display:flex;flex-wrap:wrap;gap:8px;max-width:100%}
.uh-page .uh-modes .uk-btn{min-height:44px;min-width:44px;flex:1 1 9em;white-space:normal;text-align:center}
.uh-page .uh-fillmode>.uh-fill-note{flex:1 1 100%;margin:0}
.uh-page .uh-flex-weak{color:var(--uk-danger-text);border-left:3px solid var(--uk-danger);padding-left:10px;overflow-wrap:anywhere}
/* Player report (10 Oct): the Start a raid box at the top of Raids, and the busy line with Leave expedition on Raids, Party and Boss Hunts. */
.uh-page .uh-raid-start{border-left:3px solid var(--uk-gold)}
.uh-page .uh-raid-start .uk-card-note{overflow-wrap:anywhere}
.uh-page .uh-busy{display:flex;flex-direction:column;gap:8px;min-width:0}
.uh-page .uh-busy .uh-reason{overflow-wrap:anywhere}
.uh-page #uh-group-title{scroll-margin-top:120px}
/* Friction sweep (10 Oct): the jump row under the Raids header. */
.uh-page .uh-jump{flex-wrap:wrap;gap:8px}
.uh-page .uh-jump .uk-btn{flex:1 1 7em}
.uh-page #uh-dungeons-title,.uh-page #uh-world-boss{scroll-margin-top:120px}

.uh-lobby-members{list-style:none;margin:0;padding:0}.uh-lobby-member{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:6px 0}.uh-lobby-dot{width:8px;height:8px;border-radius:50%;background:var(--uk-locked)}.uh-lobby-dot.is-on{background:var(--uk-done)}.uh-lobby-invite-form{align-items:center}.uh-lobby-invite-form input{min-height:44px;flex:1 1 160px}

/* /activity-builds.css */
/* Auto-switch card of the Skills tab (activity builds): LAYOUT ONLY. WRITTEN, NEVER RUN.
   Linked in index.html before ui-kit.css (which stays last); every rule starts with .ab-, so it does nothing until public/activity-builds-ui.js draws that markup (only while
   IRP_ACTIVITY_BUILDS_VERSION is on). Markup: public/activity-builds-ui.js. Plan: docs/NEXT_ACTIVITY_BUILDS_2026-10-04.md.
   Frames, buttons and colours come from public/ui-kit.css (the card is a .uk-card, the buttons are .uk-btn); the only colours here are kit tokens.
   Phones: no fixed widths, nothing wider than the screen, the label sits above each select at 320 px, every control is 44 px tall, select text is 16 px (no zoom on focus on iPhone). */
.ab-card{display:grid;gap:10px;margin-top:12px;padding:12px;min-width:0}
.ab-card>*{min-width:0;margin:0}
.ab-title{font-size:1.1rem}
.ab-intro,.ab-summary,.ab-empty,.ab-notice{font-size:.95rem;line-height:1.4;overflow-wrap:anywhere}
.ab-summary{margin:8px 0 0;font-weight:700;color:var(--uk-gold-text)}
.ab-form{display:grid;gap:10px;min-width:0}
.ab-row{display:grid;gap:4px;min-width:0}
.ab-label{font-weight:700;color:var(--uk-ivory)}
.ab-select{box-sizing:border-box;width:100%;min-width:0;min-height:var(--uk-tap,44px);padding:6px 10px;font:inherit;font-size:1rem;color:var(--uk-ivory);background:var(--uk-navy-2);border:1px solid var(--uk-gold-dim);border-radius:var(--uk-radius,4px);text-overflow:ellipsis}
.ab-select:focus-visible{outline:2px solid var(--uk-focus);outline-offset:2px}
.ab-select:disabled{opacity:.6}
.ab-actions{display:flex;flex-wrap:wrap;gap:8px}
.ab-actions .uk-btn{min-height:var(--uk-tap,44px);min-width:44px}
.ab-notice{padding-left:8px;border-left:3px solid var(--uk-gold)}
.ab-notice:empty{display:none}
@media (min-width:640px){
 .ab-row{grid-template-columns:minmax(8rem,12rem) minmax(0,1fr);align-items:center}
}
.ab-actions .ab-undo-why{flex:1 1 100%;font-size:.85rem;line-height:1.35;color:var(--uk-ivory-dim);overflow-wrap:anywhere}
.ab-actions .ab-undo-off{cursor:not-allowed}

/* /ui-leaderboards.css */
/* Leaderboards screen on the UI kit: LAYOUT ONLY (grid, spacing, clamping). WRITTEN, NEVER RUN.
   Linked in index.html before ui-kit.css (which stays last); every rule starts with .uk-lb, so it does nothing until the switch draws that markup. Markup: public/ui-leaderboards.js. Plan: docs/NEXT_UI_LEADERBOARDS_2026-10-04.md.
   Colours, frames and shadows come from public/ui-kit.css; the only colour here is the kit's own token on the one dark bar under the title.
   Phones: no fixed widths, nothing wider than the screen, 44 px targets (rows, tabs, buttons and selects get theirs from the kit). */
.uk-lb{display:grid;gap:14px;align-content:start;min-width:0;max-width:1100px;margin-inline:auto}
.uk-lb>*{min-width:0}
.uk-lb [hidden]{display:none!important}
.uk-lb .uk-lb-more{display:block;width:100%;margin-top:8px}
.uk-lb .uk-lb-classes{display:grid;grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:6px}
.uk-lb .uk-lb-class{display:flex;align-items:center;justify-content:flex-start;gap:5px;min-width:0;width:100%;min-height:44px;padding:4px 6px 4px 4px;white-space:nowrap}
.uk-lb .uk-lb-class img{flex:none;width:34px;height:34px;border-radius:50%;object-fit:cover}
.uk-lb .uk-lb-class.is-all{padding-left:10px}
@media(max-width:480px){.uk-lb .uk-lb-classes{grid-template-columns:repeat(2,minmax(0,1fr))}}
.uk-lb .uk-lb-mode{margin-top:8px}

/* Header: the three numbers sit on a dark bar so they never lie over the art. */
.uk-lb .uk-head>.uk-lb-strip{grid-column:1/-1;padding:10px 12px;border-radius:var(--uk-radius);background:var(--uk-navy-0)}
.uk-lb .uk-lb-strip .uk-stats{padding:0;border:0}
.uk-lb .uk-lb-strip .uk-stat dd{white-space:nowrap}

/* Tabs: five across at 1280, 2 + 3 on a phone (the kit tab rule is repeated with .shell so it wins on width, like the Guild bar). */
.uk-lb .uk-lb-tabs{margin:0}
.shell .uk-lb-tabs.uk-tabs>.uk-tab{flex:1 1 auto;min-width:max-content;gap:6px;padding-inline:10px}
@media(max-width:480px){.shell .uk-lb-tabs.uk-tabs>.uk-tab{flex:1 1 28%;min-width:0}}
/* How many rows a list holds: quiet text, never the gold notification badge (that one means something is waiting). */
.uk-lb .uk-lb-tabs .uk-lb-count{color:var(--uk-ivory-dim);font:500 .78rem/1 var(--uk-sans);font-variant-numeric:tabular-nums;opacity:.85}
.uk-lb .uk-lb-tabs .uk-lb-count::before{content:'· '}
@media(max-width:480px){.uk-lb .uk-lb-tabs .uk-lb-count::before{content:none}}

/* Body: filters, list and rules. One column on a phone; from 900 px the filters and the rules sit in a left column beside the list. */
.uk-lb .uk-lb-layout{display:grid;gap:14px;grid-template-columns:minmax(0,1fr);align-items:start;align-content:start;min-width:0}
.uk-lb .uk-lb-filters{display:grid;gap:10px;padding:10px 12px}
.uk-lb .uk-lb-list{display:grid;gap:10px;align-content:start;min-width:0}
.uk-lb .uk-lb-list .uk-title-row{justify-content:flex-start}
.uk-lb .uk-lb-list .uk-heading{flex:0 1 auto;margin-bottom:0;overflow-wrap:anywhere}
.uk-lb .uk-lb-sub{margin:0;color:var(--uk-ivory-dim);font-size:.9rem;line-height:1.35}
.uk-lb .uk-lb-rules{display:grid;gap:10px;align-content:start;padding:10px 12px}
.uk-lb .uk-lb-rules-title{margin:0;font:600 1.05rem/1.2 var(--uk-serif);color:var(--uk-gold-text)}
.uk-lb .uk-lb-rules .uk-card-note{margin:0}
@media(min-width:900px){
 .uk-lb .uk-lb-layout{grid-template-columns:300px minmax(0,1fr);grid-template-areas:"filters list" "rules list" "fill list";grid-template-rows:auto auto 1fr}
 .uk-lb .uk-lb-filters{grid-area:filters}
 .uk-lb .uk-lb-list{grid-area:list}
 .uk-lb .uk-lb-rules{grid-area:rules}
}
.uk-lb select.uk-select{min-width:0}

/* Rows: the kit row; this adds only the bar line, the crest tile and the open drawer's people. */
.uk-lb .uk-row-list{gap:8px}
.uk-lb .uk-row-title{overflow-wrap:anywhere}
.uk-lb .uk-row-sub .uk-chip{min-height:0}
.uk-lb .uk-row-extra{flex-wrap:wrap;row-gap:2px}
.uk-lb .uk-row-extra .uk-progress{flex:1 1 56px}
.uk-lb .uk-lb-pct,.uk-lb .uk-lb-ago{white-space:nowrap}
.uk-lb .uk-row-extra .uk-chip{min-height:0;padding-block:1px}
.uk-lb .uk-row details>summary{list-style:none}
.uk-lb .uk-lb-crest{position:relative;background:none;border:0;overflow:visible}
.uk-lb .uk-lb-crest>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:50% 50%}
.uk-lb .uk-lb-crest>b{position:relative;margin-top:-3px;font:600 1.1rem/1 var(--uk-serif);color:var(--uk-gold-text);text-shadow:0 1px 2px var(--uk-navy-0)}
.uk-lb .uk-lb-drawer-title{margin:0;font:700 .72rem/1.3 var(--uk-sans);letter-spacing:.12em;text-transform:uppercase;color:var(--uk-ivory-dim)}
.uk-lb .uk-lb-people{display:flex;flex-wrap:wrap;gap:6px}
.uk-lb .uk-lb-people>.uk-btn{max-width:100%;overflow-wrap:anywhere}
.uk-lb .uk-row-drawer .uk-rows{margin:2px 0 0}
.uk-lb .uk-row-drawer .uk-actions{margin:0}

/* Pinned row: the kit rule already keeps it above the game's bottom bar and the safe area (bottom offset max(--mobile-nav-height, safe-area inset)); nothing is overridden here.
   While its row is open it is released into the list: an open pinned row is about 300 px tall at 200% text and would cover the list. */
.uk-lb .uk-row.is-pinned.is-open{position:static}

/* Empty state. */
.uk-lb .uk-lb-empty{display:grid;justify-items:center;gap:6px;padding:22px 14px;text-align:center}
.uk-lb .uk-lb-empty h3{margin:0;font:600 1.1rem/1.2 var(--uk-serif);color:var(--uk-gold-text)}
.uk-lb .uk-lb-empty p{margin:0;color:var(--uk-ivory-dim)}

/* Phones: a short header (no icon column), the strip on one row, a one-line help. */
@media(max-width:480px){
 .uk-lb .uk-head-icon{display:none}
 .uk-lb .uk-head{grid-template-columns:minmax(0,1fr);gap:8px}
 .uk-lb .uk-head>.uk-lb-strip{padding:6px 10px}
 .uk-lb .uk-lb-strip .uk-stat dd{font-size:1.05rem}
 .uk-lb .uk-lb-list .uk-heading{font-size:1.1rem}
}

/* Phones: the name needs room, so the row is a grid. Rank and tile on the left, name and small line, the big number and the arrow on the right, and the bar line runs under the name and the number. */
@media(max-width:480px){
 .uk-lb summary.uk-row-main{display:grid;grid-template-columns:28px 36px minmax(0,1fr) auto 8px;column-gap:6px;row-gap:3px;align-items:center;padding-inline:8px}
 .uk-lb summary.uk-row-main>.uk-row-media{width:36px;height:36px}
 .uk-lb summary.uk-row-main .uk-row-title{font-size:.95rem}
 .uk-lb summary.uk-row-main>.uk-rank{grid-column:1;grid-row:1/span 2}
 .uk-lb summary.uk-row-main>.uk-row-media{grid-column:2;grid-row:1/span 2}
 .uk-lb summary.uk-row-main>.uk-row-body{display:contents}
 .uk-lb summary.uk-row-main .uk-row-title{grid-column:3;grid-row:1;align-self:end}
 .uk-lb summary.uk-row-main .uk-row-sub{grid-column:3;grid-row:2;align-self:start}
 .uk-lb summary.uk-row-main .uk-row-extra{grid-column:3/-1;grid-row:3}
 .uk-lb summary.uk-row-main>.uk-row-end{grid-column:4;grid-row:1/span 2;max-width:none}
 .uk-lb summary.uk-row-main>.uk-row-caret{grid-column:5;grid-row:1/span 2}
}

/* Phones, zone clears and guild raids: the time is wide ("3:41.34"), so these rows are three lines: name across, the small line, then the time under it. */
@media(max-width:480px){
 .uk-lb .uk-lb-timed summary.uk-row-main{grid-template-columns:28px 36px minmax(0,1fr) 8px}
 .uk-lb .uk-lb-timed summary.uk-row-main>.uk-rank,.uk-lb .uk-lb-timed summary.uk-row-main>.uk-row-media,.uk-lb .uk-lb-timed summary.uk-row-main>.uk-row-caret{grid-row:1/span 3}
 .uk-lb .uk-lb-timed summary.uk-row-main .uk-row-title{grid-column:3;grid-row:1}
 .uk-lb .uk-lb-timed summary.uk-row-main .uk-row-sub{grid-column:3;grid-row:2}
 .uk-lb .uk-lb-timed summary.uk-row-main>.uk-row-end{grid-column:3;grid-row:3;display:flex;align-items:baseline;justify-content:flex-start;gap:8px;text-align:left}
 .uk-lb .uk-lb-timed summary.uk-row-main>.uk-row-caret{grid-column:4}
}
.uk-lb .uk-row-end{gap:2px}
/* Short screens (a phone on its side): a pinned row would cover too much of the list, so it stays where it is in the list. */
@media(max-height:560px){.uk-lb .uk-row.is-pinned{position:relative;bottom:auto}}

/* /ui-auction.css */
/* Auction House on the UI kit: LAYOUT ONLY (grid, spacing, clamping). WRITTEN, NEVER RUN.
   Linked in index.html before ui-kit.css (which stays last); every rule starts with .ah-page (the <main> of the kit screen), so it does nothing until IRP_UI_AUCTION_VERSION draws that markup.
   Markup: public/ui-auction.js. Plan and map: docs/NEXT_UI_AUCTION_2026-10-04.md. Rules in this file beat the kit's own button rules (same specificity, kit loads last) by starting with ".shell .ah-page".
   Colours, frames and shadows come from public/ui-kit.css tokens only (no colour literal here). Phones: no fixed width over 320 px, nothing wider than the screen, 44 px targets (buttons, tabs, fields and slots get theirs from the kit). */
.shell .ah-page{display:grid;gap:14px;align-content:start;min-width:0;container:ahpage/inline-size}
.shell .ah-page>*{min-width:0}
.shell .ah-page [hidden]{display:none!important}
.shell .ah-page label{margin:0}
.shell .ah-page .ah-panel{display:grid;gap:14px;align-content:start;min-width:0;container:ahp/inline-size}
.shell .ah-page .ah-h{margin:0;font:600 1.2rem/1.2 var(--uk-serif);color:var(--uk-ivory);overflow-wrap:anywhere}
.shell .ah-page .ah-sec{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;min-width:0}

/* Header: title row (guide link and refresh), one help line, the three numbers. */
.shell .ah-page .uk-title-row>h1{flex:0 1 auto;overflow-wrap:anywhere}
.shell .ah-page .ah-head{margin:0}
.shell .ah-page .ah-add-slots{margin-top:8px}
.shell .ah-page .ah-tabs{margin:0}
@container ahpage (max-width:560px){.shell .ah-page .ah-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Browse: search, category tiles, type buttons, two drop-downs, then the result count and the rows. */
.shell .ah-page .ah-filters{display:grid;gap:12px;min-width:0}
.shell .ah-page .ah-search{position:relative}
.shell .ah-page .ah-suggest{display:grid;gap:4px;max-height:320px;padding:4px;overflow:auto;border:1px solid var(--uk-gold-dim);border-radius:var(--uk-radius);background:var(--uk-navy-0)}
.shell .ah-page .ah-suggest button{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:6px 10px;border:0;border-radius:var(--uk-radius);background:var(--uk-navy-1);color:var(--uk-ivory);text-align:left;cursor:pointer}
.shell .ah-page .ah-suggest button[aria-selected="true"]{outline:3px solid var(--uk-focus);outline-offset:-3px}
.shell .ah-page .ah-suggest button:focus-visible{outline:3px solid var(--uk-focus);outline-offset:-3px}
.shell .ah-page .ah-suggest .gear-icon{flex:0 0 38px;width:38px;height:40px}
.shell .ah-page .ah-suggest strong,.shell .ah-page .ah-suggest small{display:block;white-space:normal;overflow-wrap:anywhere}
.shell .ah-page .ah-suggest small{font-size:.71875rem;color:var(--uk-ivory-dim)}
/* The line under the name already says Unique, Set, Charm or Rune; the corner badge wrapped and hid the art in this small box. */
.shell .ah-page .ah-suggest .item-tier-badge{display:none}
.shell .ah-page .ah-cats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.shell .ah-page .ah-cat{flex-direction:row;justify-content:flex-start;gap:8px;min-width:0;min-height:48px;padding:4px 8px;text-align:left}
.shell .ah-page .ah-cat-ico{display:block;flex:0 0 28px;width:28px;height:32px}
.shell .ah-page .ah-cat-ico>*{display:block;width:100%;height:100%;font-size:1rem}
.shell .ah-page .ah-cat-ico .item-tier-badge,.shell .ah-page .ah-cat-ico b{display:none}
.shell .ah-page .ah-cat-t{min-width:0;overflow-wrap:anywhere}
.shell .ah-page .ah-types{display:flex;flex-wrap:wrap;gap:6px}
.shell .ah-page .ah-type{flex:0 1 auto;min-width:0;gap:6px;padding:6px 12px}
.shell .ah-page .ah-type small{font:500 .71875rem/1 var(--uk-sans);color:var(--uk-ivory-dim)}
.shell .ah-page .ah-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.shell .ah-page .ah-results{display:grid;gap:12px;align-content:start;min-width:0}
.shell .ah-page .ah-meta{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;min-width:0;color:var(--uk-ivory-dim)}
.shell .ah-page .ah-count{margin:0;font:600 .9rem/1.3 var(--uk-sans);overflow-wrap:anywhere}
.shell .ah-page .ah-count b{color:var(--uk-gold-text)}
.shell .ah-page .ah-tip,.shell .ah-page .ah-foot{margin:0}
@container ahp (min-width:480px){
 .shell .ah-page .ah-cats{grid-template-columns:repeat(4,minmax(0,1fr))}
 .shell .ah-page .ah-cat{flex-direction:column;justify-content:center;gap:3px;min-height:68px;padding:5px 4px;text-align:center;font-size:.71875rem}
 .shell .ah-page .ah-cat-ico{flex:0 0 auto}
}
@container ahp (min-width:860px){.shell .ah-page .ah-cats{grid-template-columns:repeat(8,minmax(0,1fr))}}
@container ahp (max-width:419px){.shell .ah-page .ah-pair{grid-template-columns:minmax(0,1fr)}.shell .ah-page .ah-pair.is-num{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* A listing row: item picture, name (a button that opens the details), rarity word, class and level, seller and time; price and the one action on the line below. */
.shell .ah-page .ah-lots{grid-template-columns:minmax(0,1fr)}
.shell .ah-page .ah-lot .uk-row-main{align-items:flex-start}
.shell .ah-page .ah-ico{display:block;flex:0 0 auto;width:64px;height:64px}
.shell .ah-page .ah-ico.is-lg{width:72px;height:72px}
.shell .ah-page .ah-ico>*{display:block;width:100%;height:100%;max-height:none;font-size:1.9rem}
.shell .ah-page .ah-name{display:block;box-sizing:border-box;width:100%;min-height:var(--uk-tap);margin:-12px 0 -14px;padding:12px 0 14px;border:0;border-radius:0;background:none;box-shadow:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.shell .ah-page .ah-name:hover .uk-row-title{color:var(--uk-gold-text)}
.shell .ah-page .ah-name:focus-visible{outline:3px solid var(--uk-focus);outline-offset:-3px}
.shell .ah-page .uk-row-sub{overflow-wrap:anywhere}
.shell .ah-page .ah-rar{color:var(--uk-rarity);font-weight:700}
.shell .ah-page .ah-tags{margin-top:2px}
.shell .ah-page .ah-lot .uk-row-foot>.uk-btn,.shell .ah-page .ah-lot .uk-row-foot>.uk-state{flex:1 1 96px;min-width:96px;max-width:200px;margin-left:auto}
.shell .ah-page .ah-lot .uk-row-foot>.uk-price{flex:0 1 auto}
.shell .ah-page .ah-extra{border-top:1px solid var(--uk-navy-3)}
.shell .ah-page .ah-time{display:grid;gap:3px}
.shell .ah-page .ah-time-text{font:500 .8rem/1.3 var(--uk-sans);color:var(--uk-ivory-dim)}
.shell .ah-page .ah-sentence{margin:0;font-size:.9rem;line-height:1.4;color:var(--uk-ivory)}
.shell .ah-page .ah-note{flex:1 0 100%;margin:0}
.shell .ah-page .ah-block{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;align-items:start;margin:0;padding:12px}
.shell .ah-page .ah-block>.uk-ico{width:30px;height:30px}
.shell .ah-page .ah-ico .item-tier-badge,.shell .ah-page .ah-slot-art .item-tier-badge,.shell .ah-page .ah-ico b,.shell .ah-page .ah-slot-art b,.shell .ah-page .ah-order .uk-card-icon b{font-size:.71875rem}
.shell .ah-page .uk-label{font-size:.71875rem}
.shell .ah-page .ah-block p{margin:0;line-height:1.4}
.shell .ah-page .ah-block .uk-btn{margin-top:10px}
@container ahp (min-width:880px){.shell .ah-page .ah-lots{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.shell .ah-page .ah-ico{width:56px;height:56px}.shell .ah-page .ah-ico.is-lg{width:64px;height:64px}}

/* Sell: the bag grid beside the chosen item and its price form. */
.shell .ah-page .ah-sell{display:grid;gap:14px;grid-template-columns:minmax(0,1fr);align-items:start}
.shell .ah-page .ah-bag{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:8px;margin:0;padding:0;list-style:none}
.shell .ah-page .ah-slot{--uk-slot:100%;width:100%;height:auto;aspect-ratio:1;min-width:56px;min-height:56px}
.shell .ah-page .ah-slot-art{display:block;width:100%;height:100%}
.shell .ah-page .ah-slot-art>*{display:block;width:100%;height:100%;max-height:none;border:0;border-radius:0;box-shadow:none;font-size:1.6rem}
.shell .ah-page .ah-slot.is-selected .ah-slot-art .item-tier-badge{display:none}
.shell .ah-page .ah-selection{max-width:none;margin:0}
.shell .ah-page .ah-sel-head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:center}
.shell .ah-page .ah-sel-text{display:grid;gap:4px;min-width:0}
.shell .ah-page .ah-actions{display:flex;flex-wrap:wrap;gap:8px}
.shell .ah-page .ah-actions>*{flex:1 1 140px}
.shell .ah-page .ah-form{display:grid;gap:14px;align-items:stretch;min-width:0;padding:0;border:0}
.shell .ah-page .ah-stats-body{padding:8px 4px;overflow-wrap:anywhere}
@container ahpage (min-width:860px){.shell .ah-page .ah-sell{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}

/* Buy orders: the form beside your orders and the other buyers' orders. */
.shell .ah-page .ah-orders{display:grid;gap:14px;grid-template-columns:minmax(0,1fr);align-items:start}
.shell .ah-page .ah-panel-stack{display:grid;gap:14px;min-width:0}
.shell .ah-page .ah-order-grid{--uk-card-min:240px}
.shell .ah-page .ah-order .uk-card-icon>*{display:block;width:34px;height:34px;font-size:1.2rem}
@container ahpage (min-width:860px){.shell .ah-page .ah-orders{grid-template-columns:minmax(0,340px) minmax(0,1fr)}}

/* Other buyers sits behind a tap (closed by default); quantity boxes have minus and plus buttons (kit .uk-stepper). */
.shell .ah-page .ah-others>summary{cursor:pointer;list-style:none;min-height:44px}
.shell .ah-page .ah-others>summary::-webkit-details-marker{display:none}
.shell .ah-page .ah-others>summary::before{content:'\25B8';color:var(--uk-gold)}
.shell .ah-page .ah-others[open]>summary::before{transform:rotate(90deg)}
.shell .ah-page .ah-others[open]>summary{margin-bottom:10px}
.shell .ah-page .ah-matpick{display:grid;gap:8px;min-width:0}
.shell .ah-page .ah-bcats{display:flex;flex-wrap:wrap;gap:8px}
.shell .ah-page .ah-bcat{min-height:44px;display:inline-flex;align-items:center;gap:8px}
.shell .ah-page .ah-bmats{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}
.shell .ah-page .ah-bmat{min-height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px 6px;text-align:center;cursor:pointer}
.shell .ah-page .ah-bmat-name{min-width:0;overflow-wrap:break-word}


/* Browse > Materials: open buy orders of other players, above the listings. */
.shell .ah-page .ah-wanted{margin:12px 0}
.shell .ah-page .ah-wanted .uk-btn{margin-top:10px}
.shell .ah-page .ah-wanted-art{flex:none;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;overflow:hidden}
.shell .ah-page .ah-wanted-art>*{max-width:100%;max-height:100%;width:100%;height:100%;object-fit:contain}

/* Header stat tiles (found by the live-switches play, 5 Oct): "Your gold" with six or more digits broke in the middle of the number ("500,00" over "0") because the kit lets a stat value wrap anywhere and the three tiles share one narrow column equally.
   Scoped to the Auction House header: the gold tile takes the width its number needs, the other two share the rest, and a value never wraps. Phones use the smaller size of the Hunts and Guild tiles. */
.shell .ah-page .ah-head .uk-stats{grid-template-columns:max-content minmax(0,1fr) minmax(0,1fr)}
.shell .ah-page .ah-head .uk-stat dd{overflow-wrap:normal;white-space:nowrap;font-size:clamp(1rem,2.4vw,1.35rem)}
@media(max-width:480px){.shell .ah-page .ah-head .uk-stat{padding:0 3px}.shell .ah-page .ah-head .uk-stat dd{font-size:1rem}}

/* /ui-affixmarks.css */
/* Prefix / suffix marks: page-local LAYOUT for public/ui-affixmarks.js (docs/NEXT_UI_AFFIXMARKS_2026-10-03.md). WRITTEN, NEVER RUN.
   Every rule needs a class that exists only in markup written while IRP_UI_AFFIXMARKS_VERSION is on (.am-kind, .am-strip), so with the switch off nothing here matches.
   Linked before ui-kit.css (the kit stays last). Colours are kit tokens only: Prefix is the kit's gold chip, Suffix the same chip in the kit's dim ivory,
   Tier 0 the kit's gold badge fill (--uk-gold with --uk-navy-0 text, as .uk-badge), a full side the kit's done chip. Prefix and Suffix differ by their WORD first. */

/* The chip beside a modifier line. Specificity (0,2,0) so it beats the old '.gear-affixes span' rule (uppercase, margin, colour) that also matches a span in the list. */
.am-kind.uk-chip{display:inline-flex;margin:0 0 0 8px;min-height:22px;padding:1px 9px;text-transform:none;letter-spacing:0;font:600 .72rem/1.2 var(--uk-sans,system-ui);white-space:nowrap;vertical-align:middle}
.am-kind.am-prefix{border-color:var(--uk-gold-dim);color:var(--uk-gold-text)}
.am-kind.am-suffix{border-color:var(--uk-ivory-dim);color:var(--uk-ivory-dim)}
.am-kind.am-tier0{border-color:var(--uk-gold-hi);background:var(--uk-gold);color:var(--uk-navy-0)}
/* In a narrow line the chip drops below the text as a whole (it never breaks inside). */
.gear-affixes>li>.am-kind.uk-chip{margin-top:2px}

/* The slot strip under the item name. */
.am-strip.uk-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 10px;padding:0;list-style:none}
.am-strip .am-cap.uk-chip{display:inline-flex;align-items:baseline;gap:5px;margin:0;min-height:26px;padding:3px 10px;text-transform:none;letter-spacing:0;font:600 .78rem/1.3 var(--uk-sans,system-ui);color:var(--uk-gold-text)}
.am-strip .am-cap b{font-weight:700;font-variant-numeric:tabular-nums;color:inherit}
.am-strip .am-cap.am-full{color:var(--uk-done)}
.am-strip .am-cap-state{font:700 .74rem/1.3 var(--uk-sans,system-ui);letter-spacing:0;text-transform:none}
.am-strip .am-fixed{color:var(--uk-ivory-dim)}
.am-strip .am-cap.am-t0.uk-chip{border-color:var(--uk-gold-hi);color:var(--uk-gold-text);white-space:normal}
/* The one-line text form (comparison, salvage rows): plain words, a full side in the kit's done colour plus the word. */
.am-line{margin:2px 0 0;font:600 .74rem/1.45 var(--uk-sans,system-ui);color:var(--uk-ivory-dim)}
.am-line .am-part{display:inline-block;margin-right:10px;overflow-wrap:anywhere}
.am-line b{font-weight:700;font-variant-numeric:tabular-nums;color:var(--uk-gold-text)}
.am-line .am-part-full,.am-line .am-part-full b{color:var(--uk-done)}

/* Enchanter list: the chip stands first in the row's main line, the name next to it, the tier at the end. */
.enchanter-affix-main>.am-kind.uk-chip{order:-1;flex:none;align-self:center;margin:0}
.enchanter-affix-main.am-has-kind{flex-wrap:wrap;gap:3px 8px}
.enchanter-affix-main.am-has-kind>strong{flex:1 1 8em;margin-right:auto}
/* The pool of possible modifiers: each name carries its side. */
.enchanter-pool>span .am-kind.uk-chip{margin-left:6px}
.enchanter-pool>span.am-has-kind{display:inline-flex;align-items:center;flex-wrap:wrap}

/* Salvage prompt: the text line sits under the item name. */
.salvage-review .salvage-item-list li.am-has-line{flex-wrap:wrap}
.salvage-review .salvage-item-list li>.am-line{flex:1 0 100%;margin:0}

/* Comparison: one text line under each item name. */
.compare-items>div>.am-line{margin:0;min-width:0;max-width:100%}
.compare-items>div>.am-line .am-part{display:block;margin:0}

/* Tier 0 frame, narrow screens (fixes after Dev 1 run): the gold frame of an item card (.tier0-item: a 3 px rail 5 px inside the card edge) sat on the first characters of the strip and of every modifier line at 320 px, where the inventory dialog gives the card no padding. 14 px clears the rail with room to spare. Scoped to the card of a Tier 0 item, and to the strip and the list that follows it (no parent-state selector). */
@media(max-width:480px){
.item-details.tier0-item .am-strip.uk-chips{padding-inline:14px}
.item-details.tier0-item .am-strip~.gear-affixes>li{padding-inline:14px}
}

/* Tier 0 frame, narrow screens, round 2 (F2): the same rail still sat on the first letters of the title block (rarity, name, kind, tier, item level and requirements), of "Which stats can this slot roll?", of the base box and of the Sell-for-gold line, which also have no padding at the edge. Same 14 px as the two rules above, only on the card of a Tier 0 item. */
@media(max-width:480px){
.item-details.tier0-item .item-detail-title{padding-inline:14px}
.item-details.tier0-item>.text-button{margin-inline:14px}
.item-details.tier0-item>.gear-base{margin-inline:14px}
.item-details.tier0-item>.az-inline-form{padding-inline:14px}
}

/* Tier 0 frame, wider screens (found by the live-switches play, 5 Oct): the 14 px gap above is only inside the narrow media query, but the gold rail (3 px, 5 px inside the card edge) also sat on the "+" of every modifier line and on the first letters of the strip, the "Which stats can this slot roll?" link and the base box at 481 px and wider (desktop, tablet, a phone on its side). The same six rules for the other widths; at 480 px and narrower nothing changes. Scoped to the card of a Tier 0 item; no parent-state selector. */
@media(min-width:481px){
.item-details.tier0-item .am-strip.uk-chips{padding-inline:14px}
.item-details.tier0-item .am-strip~.gear-affixes>li{padding-inline:14px}
.item-details.tier0-item .item-detail-title{padding-inline:14px}
.item-details.tier0-item>.text-button{margin-inline:14px}
.item-details.tier0-item>.gear-base{margin-inline:14px}
.item-details.tier0-item>.az-inline-form{padding-inline:14px}
}
/* Capacity chip at 320 px (switch IRP_T0_SLOT_VERSION, 2026-10-05): 'Prefixes 3 / 3 (includes Tier 0) No free slot' broke inside the word 'Prefixes' and inside the count. The label and the count never break; the chip may wrap BETWEEN its parts, so the includes note goes to its own line. Only chips of the capacity strip (am- classes); nothing else changes. */
.am-strip .am-cap.uk-chip{flex-wrap:wrap;max-width:100%}
.am-strip .am-cap-name,.am-strip .am-cap b{white-space:nowrap}

/* /expedition-bar.css */
/* Compact expedition bar (IRP_UI_EXPEDITION_BAR_VERSION). Every rule is scoped to .arena-heading.ex-bar, a class public/expedition-bar.js adds only while the switch is on: with the switch off nothing here matches.
   One row of about 58 px (XP per hour left, the zone in the middle, gold per hour right); at 480 px and narrower two rows. Colours come from the ui-kit tokens; no gradient, no glow, no motion: the bar is never animated. */
.arena-column>.arena-heading.ex-bar{display:grid;grid-template-columns:minmax(0,max-content) minmax(0,1fr) minmax(0,max-content);align-items:center;column-gap:14px;row-gap:2px;min-height:0;padding:6px 12px;background:var(--uk-navy-1);box-shadow:none;border-bottom:1px solid var(--uk-gold-dim)}
.arena-heading.ex-bar>#adventureRates.ex-rates{display:contents}
.arena-heading.ex-bar>#formationStatus{grid-column:1/-1;grid-row:2;margin:0;padding:0;border:0;font:.71875rem/1.2 var(--uk-sans);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.arena-heading.ex-bar .ex-xp,.arena-heading.ex-bar .ex-gold{display:grid;gap:0;min-width:0;grid-row:1;align-items:center;padding:0}
.arena-heading.ex-bar .ex-xp{grid-column:1;justify-items:start}
.arena-heading.ex-bar .ex-gold{grid-column:3;justify-items:end;text-align:right}
.arena-heading.ex-bar .ex-rates small{font:500 .71875rem/1.2 var(--uk-sans);letter-spacing:0;color:var(--uk-ivory-dim)}
.arena-heading.ex-bar .ex-rates strong{font:700 1rem/1.25 var(--uk-sans);color:var(--uk-gold-text);font-variant-numeric:tabular-nums;white-space:nowrap}
.arena-heading.ex-bar .ex-rates .ex-note{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.arena-heading.ex-bar .zone-badge.ex-zone{grid-column:2;grid-row:1;position:static;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,340px) max-content minmax(0,1fr);column-gap:0;row-gap:1px;align-items:center;width:auto;max-width:100%;min-width:0;margin:0;padding:0;background:none;border:0;box-shadow:none;text-align:center;white-space:normal}
.arena-heading.ex-bar .ex-zone>*{grid-column:1/-1;min-width:0}
.arena-heading.ex-bar .ex-zone>span:first-child{margin:0;font:600 1rem/1.2 var(--uk-serif);letter-spacing:0;color:var(--uk-ivory);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arena-heading.ex-bar .ex-zone>#modeBadge{display:block;margin:0;font:500 .71875rem/1.15 var(--uk-sans);letter-spacing:0;color:var(--uk-ivory-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arena-heading.ex-bar .ex-zone>.ex-track{grid-column:2;display:block;height:6px;margin:2px 0;border-radius:3px;background:var(--uk-navy-3);overflow:hidden}
.arena-heading.ex-bar .ex-zone>.ex-track[hidden]{display:none}
.arena-heading.ex-bar .ex-track>.ex-fill{display:block;width:0;height:100%;border-radius:3px;background:var(--uk-gold)}
.arena-heading.ex-bar .ex-zone>.ex-count{grid-column:3;margin:0 0 0 8px;font:600 .71875rem/1 var(--uk-sans);letter-spacing:0;color:var(--uk-gold-text);white-space:nowrap}
.arena-heading.ex-bar .ex-zone>.ex-track[hidden]+.ex-count{grid-column:1/-1;margin:0;overflow:hidden;text-overflow:ellipsis}
.arena-heading.ex-bar .ex-zone>#killCounter{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media(max-width:480px){
.arena-column>.arena-heading.ex-bar{grid-template-columns:minmax(0,1fr) minmax(0,1fr);row-gap:4px;padding:5px 10px}
.arena-heading.ex-bar .ex-xp,.arena-heading.ex-bar .ex-gold{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:6px}
.arena-heading.ex-bar .ex-xp{grid-column:1;justify-content:flex-start}
.arena-heading.ex-bar .ex-gold{grid-column:2;justify-content:flex-end}
.arena-heading.ex-bar .zone-badge.ex-zone{grid-column:1/-1;grid-row:2}
.arena-heading.ex-bar>#formationStatus{grid-row:3}
}

/* /item-view.css */
/* Simpler item view (switch IRP_ITEM_VIEW_VERSION, public/item-view.js). Every rule is scoped to classes that exist only while the switch is on
   (.item-view-v1, .iv-*), so with the switch off nothing here matches. */

/* Header: a smaller picture, the requirements as two quiet chips. */
.item-view-v1 .item-detail-title{gap:16px;align-items:center;padding-bottom:14px;margin-bottom:12px}
.item-view-v1 .item-detail-title>.gear-icon{width:84px;height:84px;flex:0 0 84px}
.item-view-v1 .item-detail-title h2,.item-view-v1 .item-detail-title h3{margin:2px 0 4px;font-size:clamp(1.25rem,1rem + 1vw,1.6rem);line-height:1.15}
.item-view-v1 .item-detail-title .item-kind{margin:0;font-size:.9rem}
.item-view-v1 .item-detail-title .item-model-name{margin:2px 0 0;font-size:.8rem;opacity:.8}
.item-view-v1 .item-requirements{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0}
.item-view-v1 .item-requirements>div{display:flex;gap:6px;align-items:baseline;padding:3px 9px;border:1px solid #5a4b33;border-radius:999px;background:#0f1315;font-size:.78rem}
.item-view-v1 .item-requirements dt{margin:0;opacity:.75}
.item-view-v1 .item-requirements dd{margin:0;font-weight:700}

/* Actions straight under the name: one compact row that wraps, every target at least 44px tall. Salvage is set apart in a warmer colour. */
.item-view-v1 .iv-actions{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px;padding:10px;border:1px solid #4a3f2d;border-radius:8px;background:#0e1214}
:is(.item-inspector,.item-hover) .item-view-v1 .iv-actions>button,.item-view-v1 .iv-actions>button{flex:1 1 auto;min-height:44px;min-width:0;margin:0;padding:6px 12px;font-size:.85rem;line-height:1.15;white-space:normal}
.item-view-v1 .iv-actions>button[data-realm="salvage"]{border-color:#8a4a3a;color:#f1c3b4}
/* The main action (Equip, Unequip, Move to my inventory) leads the row in the gold of the old sticky footer, so a new player sees it first. */
.item-view-v1 .iv-primary-row{display:flex;flex:1 1 100%;gap:6px}
:is(.item-inspector,.item-hover) .item-view-v1 .iv-primary-row>button,.item-view-v1 .iv-primary-row>button{flex:1 1 0;min-height:44px;min-width:0;margin:0;padding:6px 12px;font-size:.95rem;font-weight:700;border-color:#b69b61;color:#f2dca7}
.item-view-v1 .iv-primary-row>button:not(:disabled){background:linear-gradient(#bca16d,#957340);color:#10151e}
.item-view-v1 .item-protection-note{margin:-6px 0 14px;font-size:.8rem}
.item-view-v1 .stash-reason{flex-basis:100%;margin:2px 0 0;font-size:.78rem}

/* Folded sections share one look: a summary row with a chevron. */
.item-view-v1 details.iv-section,.item-view-v1 details.iv-set,.item-view-v1 details.affix-roll-details{margin:12px 0;border:1px solid #3d382e;border-radius:8px;background:#101416}
.item-view-v1 details.iv-section>summary,.item-view-v1 details.iv-set>summary,.item-view-v1 details.affix-roll-details>summary{display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 12px;cursor:pointer;list-style:none;color:#e9d8ae}
.item-view-v1 :is(details.iv-section,details.iv-set,details.affix-roll-details)>summary::-webkit-details-marker{display:none}
.item-view-v1 :is(details.iv-section,details.iv-set,details.affix-roll-details)>summary::after{content:"";margin-left:auto;flex:0 0 auto;width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .15s}
.item-view-v1 :is(details.iv-section,details.iv-set,details.affix-roll-details)[open]>summary::after{transform:rotate(-135deg) translateY(-2px)}
.item-view-v1 :is(details.iv-section,details.affix-roll-details)>:not(summary){margin-left:12px;margin-right:12px}
.item-view-v1 details.iv-section[open],.item-view-v1 details.affix-roll-details[open]{padding-bottom:10px}

/* Set card: name, worn count and a pip per bonus threshold in the summary; the bonus lines, active ones lit, when opened. */
.item-view-v1 details.iv-set{border-color:#2f6b58;background:linear-gradient(180deg,#0f1d1a,#0f1416)}
.item-view-v1 .iv-set-title{display:flex;flex-direction:column;min-width:0}
.item-view-v1 .iv-set-title strong{font-family:Georgia,serif;font-size:1.05rem;color:#9fe6c9}
.item-view-v1 .iv-set-title small{font-size:.78rem;color:#b9c6bf}
.item-view-v1 .iv-set-pips{display:flex;gap:4px;margin-left:auto}
.item-view-v1 .iv-set-pips i{display:grid;place-items:center;width:22px;height:22px;border:1px solid #3f7d68;border-radius:50%;font-style:normal;font-size:.72rem;color:#9cbcb0}
.item-view-v1 .iv-set-pips i.on{background:#74d9b1;border-color:#74d9b1;color:#0b1a15;font-weight:700}
.item-view-v1 .iv-set>summary::after{margin-left:6px}
.item-view-v1 .iv-set-sub{margin:0 12px 8px;font-size:.8rem;color:#b9c6bf}
.item-view-v1 .iv-set-bonuses{list-style:none;margin:0 12px;padding:0;display:grid;gap:6px}
.item-view-v1 .iv-set-bonuses li{display:grid;grid-template-columns:40px minmax(0,1fr);gap:10px;align-items:start;margin:0;padding:8px;border:1px solid #26332f;border-radius:6px;font-size:.88rem;line-height:1.35;color:#c9d2cd}
.item-view-v1 .iv-set-bonuses li:not(.is-active){opacity:.82}
.item-view-v1 .iv-set-bonuses li.is-active{border-color:#4fae8b;background:#123029;color:#eaf7f1}
.item-view-v1 .iv-pc{display:flex;flex-direction:column;align-items:center;justify-content:center;height:36px;border-radius:6px;background:#1b2a26;font-weight:700;color:#9fe6c9;line-height:1}
.item-view-v1 .iv-pc small{font-size:.6rem;font-weight:400;opacity:.8}
.item-view-v1 .iv-set-bonuses em{font-style:normal;font-size:.7rem;padding:1px 6px;border-radius:999px;background:#2f6b58;color:#e6fff5}
.item-view-v1 .iv-active{font-size:.7rem;font-weight:700;color:#74d9b1;text-transform:uppercase;letter-spacing:.04em}
.item-view-v1 .iv-set-foot{margin:8px 12px 12px;font-size:.78rem;color:#aab3ae}
.item-view-v1 .iv-set-foot p{margin:4px 0;font-size:inherit;color:inherit}

/* Stats: the base line as a small card, rolled modifiers in two columns where there is room. */
.item-view-v1 .gear-base{margin:10px 0}
.item-view-v1 .gear-affixes{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:2px 16px;margin:8px 0}
.item-view-v1 .gear-affixes li{margin:0;padding:6px 0;border-bottom:1px solid #2a2722}
.item-view-v1>.text-button[data-guide-topic]{font-size:.78rem}

/* Comparison: the "Equipping now" line stays, the full table folds. */
.item-view-v1 .gear-comparison{margin-top:14px}
.item-view-v1 .gear-comparison>h3{font-size:1rem}
.item-view-v1 .iv-compare-full>summary{font-size:.92rem}
/* The folded table keeps the fold's side margins instead of running 24px past its right edge. */
.item-view-v1 .iv-compare-full>.compare-table{width:calc(100% - 24px);max-width:calc(100% - 24px)}

/* Quick menu (right-click / long-press on a bag item). */
.iv-quick-menu{position:fixed;z-index:1200;display:flex;flex-direction:column;min-width:200px;max-width:min(280px,calc(100vw - 16px));max-height:calc(100dvh - 16px);overflow:auto;padding:6px;border:1px solid #92754b;border-radius:8px;background:#171a1c;box-shadow:0 14px 40px #000c}
.iv-quick-menu>button{display:block;width:100%;min-height:44px;margin:0;padding:8px 12px;border:0;border-radius:5px;background:transparent;color:#eadfc6;font:inherit;font-size:.9rem;text-align:left;cursor:pointer}
.iv-quick-menu>button:hover:not([disabled]),.iv-quick-menu>button:focus-visible{background:#2a2a24;outline:none}
.iv-quick-menu>button:focus-visible{box-shadow:inset 0 0 0 2px #f2ce85}
.iv-quick-menu>button[disabled]{opacity:.45;cursor:not-allowed}
.iv-quick-menu>button:first-child{font-weight:700;border-bottom:1px solid #3a352b;border-radius:5px 5px 0 0}
.iv-quick-menu>button[data-realm="salvage"]{color:#f1b9a8}
.iv-quick-menu .stash-reason{display:none}
html.iv-on .item-tile[data-item]{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}

@media(max-width:600px){
 .item-view-v1 .item-detail-title>.gear-icon{width:68px;height:68px;flex-basis:68px}
 .item-view-v1 .iv-actions{padding:8px}
 :is(.item-inspector,.item-hover) .item-view-v1 .iv-actions>button,.item-view-v1 .iv-actions>button{flex:1 1 calc(50% - 6px);font-size:.82rem;padding:6px 8px}
 .item-view-v1 .gear-affixes{grid-template-columns:minmax(0,1fr)}
}

/* /gem-ui.css */
/* Defensive gem sockets (switch IRP_GEM_SOCKETS_VERSION, default off). Socket dots, card lines and the Gemcutter screen. */
.gear-icon.has-gems{position:relative}
.gem-dots{position:absolute;left:5%;bottom:5%;display:flex;gap:2px;pointer-events:none;z-index:2}
.gem-dot{display:inline-block;width:7px;height:7px;border-radius:50%;box-sizing:border-box;vertical-align:middle}
.gem-dot.filled{background:var(--gem-fill);border:1px solid rgba(0,0,0,.75);box-shadow:0 0 3px rgba(255,255,255,.35)}
.gem-dot.open{border:1.5px solid #e7ddc6;background:rgba(0,0,0,.45)}
.gem-dot.closed{border:1px solid rgba(231,221,198,.35);background:rgba(0,0,0,.25)}
.gem-lines{list-style:none;margin:.4rem 0;padding:0;display:grid;gap:.25rem}.gem-lines li{display:flex;align-items:center;gap:.4rem;font-size:.85rem}
.gem-stone{position:relative;display:inline-grid;place-items:center;width:var(--gem-size);height:var(--gem-size);flex:0 0 var(--gem-size);border-radius:50%;background:var(--gem-fill);box-shadow:inset -3px -4px 6px rgba(0,0,0,.45),inset 3px 3px 5px rgba(255,255,255,.45),0 0 0 2px rgba(0,0,0,.6);clip-path:polygon(50% 0,93% 25%,93% 75%,50% 100%,7% 75%,7% 25%)}
.gem-stone b{font:700 calc(var(--gem-size)*.38)/1 Arial,sans-serif;color:#111;text-shadow:0 0 3px rgba(255,255,255,.8)}
.gem-stone.gem-t1,.gem-stone.gem-t2{filter:saturate(.6) brightness(.85);border-radius:40%}
.gem-stone.gem-t6,.gem-stone.gem-t7,.gem-stone.gem-t8{filter:drop-shadow(0 0 4px var(--gem-glow,#fff8))}
.gem-stone.gem-t9,.gem-stone.gem-t10{filter:drop-shadow(0 0 7px #fff) saturate(1.2)}
.gemcutter .gem-head{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;justify-content:space-between}.gemcutter .gem-head h1{margin:0;color:var(--gold)}.gemcutter .gem-head p{margin:0;flex:1 1 260px}
.gem-tabs{display:flex;gap:.5rem;justify-content:center;margin:.75rem 0;border-bottom:1px solid #bfa16b36}.gem-tabs button{min-height:44px;min-width:96px}
.gem-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.75rem}
.gem-panel{border:1px solid var(--line);border-radius:8px;padding:.75rem;background:rgba(0,0,0,.25);min-width:0}.gem-panel h3{margin:.1rem 0 .6rem}
.gem-panel select{width:100%;min-height:44px}
/* Phones cut the native select's text, so the full label of the chosen item is repeated under it (gem QA, 14 Oct). */
.gem-item-chosen{display:none}
@media (max-width:640px){.gem-item-chosen{display:block;margin-top:6px;color:var(--muted,#c9b996);line-height:1.35}}
.gem-item-head{display:flex;flex-direction:column;align-items:center;margin:.75rem 0 .25rem}
.gem-sockets{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin:.75rem 0}
.gem-socket{display:flex;flex-direction:column;align-items:center;gap:.35rem;width:118px;text-align:center}
.gem-socket .gem-ring{width:52px;height:52px;border-radius:50%;border:4px solid #9a8a6a;background:radial-gradient(#000a,#0004)}
.gem-socket.closed{opacity:.9}.gem-socket.closed>span{font-size:.8rem;color:var(--muted);border:2px dashed #6b5a3a;border-radius:50%;width:52px;height:52px;display:grid;place-items:center;padding:4px}
.gem-socket button{min-height:44px;width:100%;font-size:.8rem}.gem-socket small{font-size:.75rem;color:var(--muted)}
.gem-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:.5rem}
.gem-cell{display:flex;flex-direction:column;align-items:center;gap:.2rem;min-height:84px;padding:.4rem;border:2px solid #555;border-radius:8px;background:rgba(0,0,0,.3)}
.gem-cell.selected{border-color:var(--gold);box-shadow:0 0 0 2px #dab36b55}.gem-cell span{font-size:.72rem}.gem-cell small{font-size:.7rem;color:var(--muted)}
.gem-merge-row{display:flex;align-items:center;justify-content:center;gap:.6rem;margin:.75rem 0;font-size:1.4rem}
.gem-odds{height:16px;border:1px solid #888;border-radius:8px;overflow:hidden;background:#222}.gem-odds i{display:block;height:100%;background:linear-gradient(90deg,#3a8f4a,#7fd36a)}
.gem-odds-text{font-size:.85rem}.gem-boosters{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:.5rem 0}.gem-boosters button{min-width:44px;min-height:44px}
.gem-last.ok{color:#7fd36a}.gem-last.bad{color:#f08b7f}
.gemcutter button.danger{border-color:#c0574b}
/* Painted gems (public/assets/gems/): the stone over its tier's frame plate, and painted socket rings on the Gemcutter screen. */
.gem-stone.painted{background:none;box-shadow:none;clip-path:none;filter:none;border-radius:0;overflow:visible}
.gem-stone.painted img{position:absolute;inset:2%;width:96%;height:96%;object-fit:contain;pointer-events:none;user-select:none}
.gem-stone.painted .gem-plate{inset:0;width:100%;height:100%}.gem-stone.painted.framed .gem-art{inset:17%;width:66%;height:66%}
.gem-socket .gem-ring{border:0;border-radius:0;background:url(/assets/gems/socket-open.webp) center/contain no-repeat}
.gem-socket.closed>span{border:0;border-radius:0;background:url(/assets/gems/socket-closed.webp) center/contain no-repeat;color:#e7ddc6;text-shadow:0 1px 2px #000,0 0 4px #000}
.gem-socket.filled>.gem-stone{background:url(/assets/gems/socket-setting.webp) center/contain no-repeat}
.gem-socket.filled>.gem-stone .gem-plate{display:none}.gem-socket.filled>.gem-stone .gem-art{inset:24%;width:52%;height:52%}
/* Painted header (as the Blacksmith and Enchanter), page tabs that look like the other section tabs, and gold main actions instead of the browser's plain grey. */
.gem-welcome .npc-greeting>button{align-self:flex-start;margin-top:.5rem}
.gem-welcome .gem-quote{font-family:Georgia,serif;font-size:1.1rem;color:#e4d2b1;font-style:italic}.gem-welcome .gem-portrait{background-image:url('/assets/town/gemcutter-v1.webp');background-size:auto 96%;background-position:center bottom;background-color:#1d1a16}@media(max-width:480px){.gem-welcome .gem-portrait{background-size:auto 94%;background-position:center bottom}}
.gemcutter .gem-tabs .section-tab{padding:9px 18px}.gemcutter .gem-tabs .section-tab:disabled{opacity:.55;cursor:default}
.gemcutter button:not(.secondary):not(.section-tab):not(.gem-cell):not(.red-button):not(:disabled){background:linear-gradient(#bca16d,#957340);color:#10151e;border:1px solid #d9bd83;border-radius:5px;font-weight:600;min-height:44px;padding:9px 18px}
.gemcutter button:not(.secondary):not(.section-tab):not(.gem-cell):not(.red-button):disabled{background:#26303a;color:#9aa3a6;border:1px solid #4f5a55;border-radius:5px;min-height:44px;padding:9px 18px}
/* Gem hover card */
.gem-tip{display:flex;gap:12px;align-items:center}.gem-tip h4{margin:2px 0;font-family:Georgia,serif;font-size:1.1rem;color:#f0dfb5}
.gem-tip-kind{margin:0;font-size:.8rem;color:#bca169;text-transform:uppercase;letter-spacing:.06em}.gem-tip-stat{margin:2px 0 0;color:#9fe0a0;font-weight:600}
.gem-tip-note{margin:10px 0 0;font-size:.85rem;line-height:1.4;color:#c9c2b0}
.gem-lines-head{margin:12px 0 4px;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:#bca169}

.gem-cost-part{white-space:nowrap}
.gem-socket small.gem-cost-missing{display:block;color:#e8a07a}

/* /desktop-fit.css */
/* Desktop fit (player report, 10 Oct 2026): on 1080p and 1440p monitors the battle
   scene grew with the screen and pushed the action bar and enemies below the fold,
   the sidebar ran off the bottom, and chat floated over the game.
   Desktop sidebar layout only (min-width:1180px); phones and tablets are unchanged. */
@media(min-width:1001px){
 /* Height already used above the battle: header strip plus the gap under it. The
    dismissible alpha notice adds its own height while it shows. */
 .shell.mmo-shell{--fit-top:64px;--fit-heading:153px;--fit-controls:330px}
 .shell.mmo-shell:has(>.alpha-notice:not([hidden])){--fit-top:148px}

 /* The scene keeps a fixed budget from the viewport (never from its contents, so
    casts and status chips still can't resize it), leaving room for the controls. */
 .shell.mmo-shell .combat-grid>.arena-column{
  grid-template-rows:auto clamp(260px,calc(100vh - var(--fit-top) - var(--fit-heading) - var(--fit-controls)),1100px) auto;
  grid-template-rows:auto clamp(260px,calc(100svh - var(--fit-top) - var(--fit-heading) - var(--fit-controls)),1100px) auto}
 .shell.mmo-shell .combat-grid .battlefield{min-height:260px}
 .shell.mmo-shell .combat-grid>.party-rail{max-height:calc(100svh - var(--fit-top) - 12px);overflow-y:auto;overscroll-behavior:contain}

 /* When the window is too short for the whole menu, the menu scrolls but the
    account block (Chat, Bag, Settings) stays pinned to the bottom. */
 .shell.mmo-shell.wayfarer-shell>.topbar>nav>.nav-account{position:sticky;bottom:-22px;z-index:2;margin-bottom:-22px;padding-bottom:22px;background:#0b1319}
}
/* Chat docks beside the game instead of covering it, when there is room for both. */
@media(min-width:1180px){
 .shell.wayfarer-shell{--chat-dock:clamp(300px,22vw,420px)}
 .shell.wayfarer-shell:has(>.community-chat){padding-right:var(--chat-dock)}
 .shell.wayfarer-shell>.community-chat{inset:0 0 0 auto;width:var(--chat-dock);border-width:0 0 0 1px;border-radius:0;box-shadow:none}
 /* Notices sit outside the shell; keep them clear of the docked chat's input and Send. */
 body:has(.shell.wayfarer-shell>.community-chat) .adventure-notices{right:calc(clamp(300px,22vw,420px) + 18px)}
}

/* Short desktop windows with a mouse: tighten the sidebar so Chat, Bag, Settings
   and Discord stay on screen. Touch screens keep the 44px targets and scroll. */
@media(min-width:1180px) and (max-height:1120px) and (pointer:fine){
 .shell.mmo-shell.wayfarer-shell>.topbar>nav .nav-button{min-height:36px;padding-top:2px;padding-bottom:2px}
 .shell.mmo-shell.wayfarer-shell>.topbar>nav .nav-button>:is(.fantasy-icon,.icon,img){max-height:28px}
 .shell.mmo-shell .nav-account .sidebar-actions{gap:5px}
 .shell.mmo-shell .nav-account .sidebar-actions>button,.shell.mmo-shell .nav-account .sidebar-actions>a,.shell.mmo-shell .nav-account .sidebar-actions>.chat-access>button{min-height:36px;padding-top:6px;padding-bottom:6px}
 .shell.mmo-shell .nav-account .account-block>.icon-button,.shell.mmo-shell .nav-account .sidebar-character-portrait{width:38px;height:38px;min-width:38px;min-height:38px}
}
@media(min-width:1180px) and (max-height:900px) and (pointer:fine){
 .shell.mmo-shell>.topbar>nav>.nav-brand .nav-brand-emblem{width:36px;height:36px}
 /* Patch notes, Settings and Discord share one row of icons. */
 .shell.mmo-shell .nav-account .sidebar-actions{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))}
 .shell.mmo-shell .nav-account .sidebar-actions>:is(.chat-access,.nav-inventory){grid-column:1/-1}
 .shell.mmo-shell .nav-account .sidebar-actions>:is([data-action="patch-notes"],[data-action="settings"],.nav-discord){justify-content:center;padding-left:0;padding-right:0;font-size:0;gap:0}
 .shell.mmo-shell .nav-account .sidebar-actions>:is([data-action="patch-notes"],[data-action="settings"],.nav-discord)>span:not(.change-log-symbol):not(.patch-new){display:none}
}

/* Character sheet: each attribute took three lines (name, Effect, buttons), so
   Review fell far below the fold. The buttons now sit on the Effect line. */
@media(min-width:1180px){
 .attribute-panel .attribute-row{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:8px;row-gap:2px;align-items:center;padding:8px 0}
 .attribute-panel .attribute-row>div:first-child{display:contents}
 .attribute-panel .attribute-row>div:first-child>*:not(details):first-child{grid-column:1;grid-row:1}
 .attribute-panel .attribute-row>div:first-child>*:not(details):not(:first-child){grid-column:2;grid-row:1;justify-self:end}
 .attribute-panel .attribute-row>div:first-child>details{grid-column:1/-1;grid-row:2;align-self:start;min-height:44px;display:block}
 .attribute-panel .attribute-row>div:first-child>details>summary{display:inline-flex;align-items:center;min-height:44px}
 .attribute-panel .attribute-row>.attribute-controls{grid-column:2;grid-row:2;align-self:start;justify-self:end;margin:0}
}
/* QA 2026-10-16: at 390px a long Welcome back summary pushed the Continue button off screen. The footer now stays pinned. */
@media(max-width:550px){.return-dialog>footer{position:sticky;bottom:0;z-index:1}}

/* /tutorial-tour.css */
/* Interactive tour (public/tutorial-tour.js). Above every dialog (the phone bag sits at 99999), below the studio splash. */
.tour-ring{position:fixed;z-index:2147482000;pointer-events:none;border:3px solid var(--uk-gold-hi,#f0ce83);border-radius:10px;box-shadow:0 0 0 2px rgba(10,16,20,.9),0 0 18px 4px rgba(240,206,131,.55);animation:tour-pulse 1.6s ease-in-out infinite;transition:left .18s,top .18s,width .18s,height .18s}
.tour-ring.tour-ring-dim{box-shadow:0 0 0 2px rgba(10,16,20,.9),0 0 18px 4px rgba(240,206,131,.55),0 0 0 200vmax rgba(4,7,10,.5)}
.tour-card{position:fixed;z-index:2147482001;box-sizing:border-box;width:360px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto;padding:16px 18px 14px;border:1px solid var(--uk-gold,#d6b575);border-radius:12px;background:linear-gradient(180deg,#1b2a33,#101a20);color:#eadfc8;box-shadow:0 12px 32px rgba(0,0,0,.6);font-size:15px;line-height:1.45}
.tour-card.tour-dim{box-shadow:0 12px 32px rgba(0,0,0,.6),0 0 0 200vmax rgba(4,7,10,.5)}
.tour-card[hidden],.tour-ring[hidden]{display:none}
.tour-card h2{margin:0 0 6px;font-size:19px;color:var(--uk-gold-text,#ffe1aa);font-family:inherit}
.tour-card p{margin:0 0 8px}
.tour-card .tour-count{margin:0 0 2px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#b9a77f}
.tour-card .tour-via{font-weight:600;color:var(--uk-gold-hi,#f0ce83)}
.tour-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px}
.tour-actions button{min-height:44px;min-width:44px;padding:0 16px;border-radius:8px;font:inherit;font-weight:600;cursor:pointer}
.tour-primary{border:1px solid var(--uk-gold-hi,#f0ce83);background:linear-gradient(180deg,#d9b46a,#a9813f);color:#1a1206}
.tour-secondary{border:1px solid var(--uk-gold-dim,#8f7645);background:#1a2830;color:#eadfc8}
.tour-skip{margin-left:auto;border:0;background:none;color:#c7bba2;text-decoration:underline;padding:0 6px}
.tour-actions button:focus-visible{outline:3px solid var(--uk-gold-hi,#f0ce83);outline-offset:2px}
@keyframes tour-pulse{50%{border-color:#fff3d2}}
@media (prefers-reduced-motion:reduce){.tour-ring{animation:none;transition:none}}
@media (max-width:540px){.tour-card{font-size:14px;padding:14px}.tour-card h2{font-size:17px}}

/* /chat-refresh.css */
/* Chat refresh (October 2026). Loaded after every older chat sheet and before ui-kit.css.
   One readable log: a fixed time column with wrapped lines hanging under the message,
   a colour per channel, day lines, mentions marked in gold, and a one-line composer that grows. */
.shell.wayfarer-shell .community-chat{
 --chat-accent:#e0c27f;--chat-bg:#0e171d;--chat-band:#132029;--chat-line:#ffffff10;--chat-muted:#8e9ea6;--chat-text:#dde4e4;
 background:var(--chat-bg);border-color:#6f6248;
}
.shell.wayfarer-shell .community-chat:has(#chat-tab-party[aria-selected=true]){--chat-accent:#86b8f5}
.shell.wayfarer-shell .community-chat:has(#chat-tab-guild[aria-selected=true]){--chat-accent:#83d39c}
.shell.wayfarer-shell .community-chat:has(#chat-tab-whisper[aria-selected=true]){--chat-accent:#e7a2dc}
.shell.wayfarer-shell .community-chat:has(#chat-tab-recruitment[aria-selected=true]){--chat-accent:#f0aa6c}
.shell.wayfarer-shell .community-chat:has(#chat-tab-announcements[aria-selected=true]){--chat-accent:#f2d07c}

/* Header: one compact band. */
.shell.wayfarer-shell .community-chat .chat-heading{padding:8px 10px 8px 14px;background:linear-gradient(120deg,#22343c,#15222a);border-bottom:1px solid #3c4a50}
.shell.wayfarer-shell .community-chat .chat-heading h2{display:flex;align-items:baseline;gap:10px;font:500 1.15rem/1.2 Georgia,serif;color:#ffe3b4;margin:0}
.shell.wayfarer-shell .community-chat .chat-heading h2 small{display:inline;margin:0;color:#9fcfb4;font:500 .6875rem system-ui;letter-spacing:.02em}
.shell.wayfarer-shell .community-chat .chat-heading>button{width:44px;height:44px;min-width:44px;padding:0;border-radius:50%;font-size:1rem}

/* Channel tabs: all six share one row at every width; the selected one carries the channel colour. */
.shell.wayfarer-shell .community-chat .chat-channels{display:flex;flex-wrap:nowrap;overflow:visible;gap:2px;padding:4px 6px 0;background:var(--chat-band);border-bottom:1px solid #2c3a42}
.shell.wayfarer-shell .community-chat .chat-channels>button[role=tab]{flex:1 1 auto;min-width:0;min-height:44px;display:flex;align-items:center;justify-content:center;gap:3px;padding:6px 5px;border:0;border-radius:6px 6px 0 0;background:transparent;box-shadow:none;color:#a8b6bd;font:600 .75rem/1.2 system-ui;white-space:nowrap}
@media(hover:hover){.shell.wayfarer-shell .community-chat .chat-channels>button[role=tab]:hover{background:#ffffff0a;color:#eef0e8}}
.shell.wayfarer-shell .community-chat .chat-channels>button[role=tab][aria-selected=true]{background:#ffffff0d;color:var(--chat-accent);box-shadow:inset 0 -3px 0 var(--chat-accent)}
.shell.wayfarer-shell .community-chat .chat-channels>button[role=tab] [data-chat-count]{min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#d8574f;color:#fff;font:700 .5625rem/16px system-ui;text-align:center;margin:0}
.shell.wayfarer-shell .community-chat .chat-channels>button[role=tab] [data-chat-count][hidden]{display:none}

/* The placeholder names the audience, so the separate destination line is for screen readers only. */
.shell.wayfarer-shell .community-chat .chat-destination{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;padding:0;border:0}
.shell.wayfarer-shell .community-chat .chat-conversation{position:relative}

/* Message log. */
.shell.wayfarer-shell .community-chat .chat-messages{padding:6px 6px 10px}
.shell.wayfarer-shell .community-chat .chat-message,.shell.wayfarer-shell .community-chat .chat-message.own{display:grid;grid-template-columns:52px minmax(0,1fr);column-gap:6px;align-items:start;margin:0;padding:3px 8px 3px 4px;border:0;border-radius:4px;background:none;font:.8125rem/1.45 system-ui;overflow-wrap:anywhere}
.shell.wayfarer-shell .community-chat .chat-message:nth-child(even){background:none}
@media(hover:hover){.shell.wayfarer-shell .community-chat .chat-message:hover{background:#ffffff07}}
.shell.wayfarer-shell .community-chat .chat-message>time{position:static;grid-column:1;justify-self:end;align-self:start;color:var(--chat-muted);font:.625rem/1.178rem system-ui;font-variant-numeric:tabular-nums;white-space:nowrap;margin:0}
.shell.wayfarer-shell .community-chat .chat-message>div{grid-column:2;display:block;min-width:0;width:auto;padding:0;margin:0;border:0;border-radius:0;background:none}
.shell.wayfarer-shell .community-chat .chat-message .chat-name,.shell.wayfarer-shell .community-chat .chat-message .chat-author{position:relative;display:inline;min-height:0;max-width:none;padding:0;margin:0 6px 0 0;border:0;background:none;box-shadow:none;color:var(--chat-accent);font:700 .8125rem/1.45 system-ui;vertical-align:baseline;cursor:pointer}
.shell.wayfarer-shell .community-chat .chat-message .chat-author{cursor:default}
.shell.wayfarer-shell .community-chat .chat-message .chat-name:hover{text-decoration:underline;text-underline-offset:3px}
.shell.wayfarer-shell .community-chat .chat-message .chat-name::after{content:":";color:var(--chat-muted);font-weight:400}
.shell.wayfarer-shell .community-chat .chat-message .chat-author::after{content:":";color:var(--chat-muted);font-weight:400}
/* Touch screens: the name keeps a full 44px tap area without spacing the lines apart. */
@media(pointer:coarse){.shell.wayfarer-shell .community-chat .chat-message .chat-name::before{content:"";position:absolute;left:-6px;right:-6px;top:50%;height:44px;transform:translateY(-50%)}}
.shell.wayfarer-shell .community-chat .chat-message p{display:inline;margin:0;color:var(--chat-text);font:.8125rem/1.45 system-ui;white-space:pre-wrap}
.shell.wayfarer-shell .community-chat .chat-message.own .chat-author{color:#8fd6c8}
.shell.wayfarer-shell .community-chat .chat-message.own{background:#8fd6c808}
.shell.wayfarer-shell .community-chat .chat-message.mention{background:#e0c27f17;box-shadow:inset 3px 0 #e0c27f}
.shell.wayfarer-shell .community-chat .chat-message.system{margin:4px 0;background:#f2d07c0b;box-shadow:inset 3px 0 #f2d07c66}
.shell.wayfarer-shell .community-chat .chat-message.system .chat-author{color:#f2d07c}
.shell.wayfarer-shell .community-chat .chat-message.system p{color:#d8d2bf}
.shell.wayfarer-shell .community-chat .chat-message.unique-drop{background:#ff747412;box-shadow:inset 3px 0 #ff7474}
.shell.wayfarer-shell .community-chat .chat-message.unique-drop>div>p,.shell.wayfarer-shell .community-chat .chat-message.unique-drop>div>p strong{color:#ff8a8a}
.shell.wayfarer-shell .community-chat .chat-message.tier0-drop{box-shadow:inset 3px 0 #f0ce83}
.shell.wayfarer-shell .community-chat .chat-message.tier0-drop>div>p{color:#f0ce83}
.shell.wayfarer-shell .community-chat .chat-message.legendary-forged{background:#ff8c2a14;box-shadow:inset 3px 0 #ffb85a}
.shell.wayfarer-shell .community-chat .chat-message.legendary-forged>div>p{color:#ffb85a}
.shell.wayfarer-shell .community-chat .chat-dev-badge{margin:0 .35em 0 .25em}

/* A day line wherever the date changes. */
.shell.wayfarer-shell .community-chat .chat-day{display:flex;align-items:center;gap:10px;margin:8px 4px 4px;color:var(--chat-muted);font:600 .625rem/1 system-ui;letter-spacing:.08em;text-transform:uppercase}
.shell.wayfarer-shell .community-chat .chat-day::before,.shell.wayfarer-shell .community-chat .chat-day::after{content:"";flex:1;height:1px;background:var(--chat-line)}

/* Linked items sit inline and open as a small card. */
.shell.wayfarer-shell .community-chat .chat-item>summary{min-height:0;padding:0}
.shell.wayfarer-shell .community-chat .chat-item[open]{border-radius:6px}
/* The opened card's icon and lines stack as blocks; the chat's inline paragraph rule must not flow them around the icon. */
.shell.wayfarer-shell .community-chat .chat-item>div>.gear-icon{display:block;margin:2px 0 6px}
.shell.wayfarer-shell .community-chat .chat-item>div>p{display:block;margin:0 0 6px}
.shell.wayfarer-shell .community-chat .chat-message.unique-drop .chat-item>div>p,.shell.wayfarer-shell .community-chat .chat-message.unique-drop .chat-item>div>p strong{color:var(--chat-text);font-weight:400}

/* Empty state. */
.shell.wayfarer-shell .community-chat .chat-empty{gap:8px;padding:24px 16px}
.shell.wayfarer-shell .community-chat .chat-empty>span{color:var(--chat-accent)}
.shell.wayfarer-shell .community-chat .chat-empty>strong{font-size:1.2rem}

/* Jump to latest floats over the bottom of the log instead of taking a row. */
.shell.wayfarer-shell .community-chat .chat-jump{position:relative;z-index:2;align-self:center;min-height:36px;margin:-44px auto 8px;padding:6px 14px;border-radius:18px;border:1px solid var(--chat-accent);background:#16252ef2;color:var(--chat-accent);font:600 .75rem system-ui;box-shadow:0 4px 14px #0008}
.shell.wayfarer-shell .community-chat .chat-jump[hidden]{display:none}

/* Whisper picker: name box and recent conversations with their unread counts. */
.shell.wayfarer-shell .community-chat .whisper-route{display:flex;gap:6px;padding:8px 10px;margin:0;border-bottom:1px solid var(--chat-line)}
.shell.wayfarer-shell .community-chat .whisper-route input{flex:1;min-width:0;min-height:44px;padding:8px 10px;border-radius:8px;font-size:1rem}
.shell.wayfarer-shell .community-chat .chat-recent{order:-1;display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px 0}
.shell.wayfarer-shell .community-chat .chat-recent>button{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:4px 12px;border-radius:18px;border:1px solid #4a5a62;background:#1b2a33;color:#e2d6ee;font:600 .75rem system-ui}
.shell.wayfarer-shell .community-chat .chat-recent>button[aria-pressed=true]{border-color:var(--chat-accent);background:#e7a2dc1c;color:var(--chat-accent)}
.shell.wayfarer-shell .community-chat .chat-recent-unread{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#d8574f;color:#fff;font:700 .625rem/18px system-ui;text-align:center}
@media(pointer:coarse){.shell.wayfarer-shell .community-chat .chat-recent>button{min-height:44px}}

/* Composer: Item, a one-line message box that grows, and Send on one row. */
.shell.wayfarer-shell .community-chat #chatForm{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:end;gap:4px 6px;padding:8px 8px 6px;background:var(--chat-band);border-top:1px solid #2f3e46;max-height:60%;overflow:auto}
.shell.wayfarer-shell .community-chat #chatForm>label.sr-only{position:absolute}
.shell.wayfarer-shell .community-chat #chatForm .chat-command-suggestion{grid-column:1/-1;grid-row:1;margin:0}
.shell.wayfarer-shell .community-chat #chatForm textarea{grid-column:2;grid-row:2;display:block;width:100%;height:44px;min-height:44px;max-height:128px;margin:0;padding:11px 12px;border:1px solid #4d5d64;border-radius:10px;background:#0a1419;color:#eef2ee;font:400 .9375rem/1.4 system-ui;resize:none;overflow-y:auto}
.shell.wayfarer-shell .community-chat #chatForm textarea:focus{border-color:var(--chat-accent);outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--chat-accent) 35%,transparent)}
.shell.wayfarer-shell .community-chat .chat-compose-actions{display:contents}
.shell.wayfarer-shell .community-chat .chat-compose-actions>button{min-height:44px;border-radius:10px;font:600 .75rem system-ui;white-space:nowrap}
.shell.wayfarer-shell .community-chat [data-chat-attach]{grid-column:1;grid-row:2;padding:0 10px;background:transparent;border:1px solid #4d5d64;box-shadow:none;color:#c9d2d6}
.shell.wayfarer-shell .community-chat [data-chat-attach][aria-expanded=true]{border-color:var(--chat-accent);color:var(--chat-accent)}
.shell.wayfarer-shell .community-chat .chat-compose-actions [type=submit]{grid-column:3;grid-row:2;min-width:64px;padding:0 14px;background:var(--chat-accent);border:1px solid var(--chat-accent);color:#1d1810}
.shell.wayfarer-shell .community-chat .chat-compose-actions [type=submit]:disabled{background:transparent;border-color:#4d5d64;color:#7e8d94;opacity:1}
.shell.wayfarer-shell .community-chat #chatCounter{grid-column:3;grid-row:4;justify-self:end;color:var(--chat-muted);font:.6875rem system-ui}
.shell.wayfarer-shell .community-chat #chatCounter[hidden]{display:none}
.shell.wayfarer-shell .community-chat .chat-attachment{grid-column:1/-1;grid-row:3;display:flex;flex-direction:column;gap:4px;margin:2px 0 0;font-size:.75rem;color:#b9c6cc}
.shell.wayfarer-shell .community-chat .chat-attachment[hidden]{display:none}
.shell.wayfarer-shell .community-chat .chat-input-help{grid-column:1/3;grid-row:4;margin:0;color:var(--chat-muted);font:.6875rem system-ui}
.shell.wayfarer-shell .community-chat #chatError{grid-column:1/-1;grid-row:5;margin:0;font-size:.75rem;color:#e7c98b}
.shell.wayfarer-shell .community-chat #chatError:empty{display:none}
@media(pointer:coarse){.shell.wayfarer-shell .community-chat .chat-input-help{display:none}}
.shell.wayfarer-shell .community-chat .chat-readonly{padding:8px 12px;background:var(--chat-band)}

/* Options fold away under the composer. */
.shell.wayfarer-shell .community-chat .chat-privacy{padding:0 12px;background:#0b141a;border-top:1px solid #26333a;font-size:.75rem}
.shell.wayfarer-shell .community-chat .chat-privacy summary{min-height:36px;display:flex;align-items:center;color:#9fb0b7}
@media(pointer:coarse){.shell.wayfarer-shell .community-chat .chat-privacy summary{min-height:44px}}

@media(max-width:360px){.shell.wayfarer-shell .community-chat .chat-channels>button[role=tab]{font-size:.6875rem}.shell.wayfarer-shell .community-chat .chat-message,.shell.wayfarer-shell .community-chat .chat-message.own{grid-template-columns:44px minmax(0,1fr)}}
/* A long audience line ("Whisper to Phoneshaman…") stays on the box's one line and ends in an ellipsis. */
.shell.wayfarer-shell .community-chat #chatForm textarea::placeholder{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* /combat-hud.css */
/* Combat HUD polish (12 Oct 2026). Presentation only: party frames, battlefield plates, enemy cards and the
   combat meter. Loaded last so it can refine the older layers without editing them. No layout here changes size
   while a fight runs, so the battle screen does not jump as health, casts or deaths change. */
.mmo-shell .combat-grid{--hud-tank:#6d9be0;--hud-healer:#6cc893;--hud-dps:#df7a5c;--hud-hp-a:#6fd36f;--hud-hp-b:#2f8d3f;--hud-low-a:#ff7656;--hud-low-b:#b42a1c;--hud-track:#081015}

/* Party frames: a role stripe, a taller green health bar that turns red under 35%, and coloured resource bars. */
.mmo-shell .combat-grid .compact-party-card{border-radius:6px;border-left-width:4px;background:linear-gradient(160deg,#1d2a30,#11191e 70%);box-shadow:0 2px 8px #0008,inset 0 1px #ffffff0d}
.mmo-shell .combat-grid .compact-party-card.role-tank{border-left-color:var(--hud-tank)}
.mmo-shell .combat-grid .compact-party-card.role-healer{border-left-color:var(--hud-healer)}
.mmo-shell .combat-grid .compact-party-card.role-dps{border-left-color:var(--hud-dps)}
.mmo-shell .combat-grid .compact-party-card .raid-frame-title small{letter-spacing:.02em}
.mmo-shell .combat-grid .compact-party-card .hud-bar{height:18px;min-height:18px;margin:5px 0 3px;border:1px solid #000b;border-radius:4px;background:var(--hud-track);box-shadow:inset 0 1px 3px #000d,0 0 0 1px #ffffff10}
.mmo-shell .combat-grid .compact-party-card .hud-bar>i{border-radius:3px 0 0 3px}
.mmo-shell .combat-grid .compact-party-card .hud-bar.health>i{background:linear-gradient(#8ae889,var(--hud-hp-a) 35%,var(--hud-hp-b));box-shadow:inset 0 1px #ffffff55}
.mmo-shell .combat-grid .compact-party-card .hud-bar em{font:600 11px/18px system-ui;letter-spacing:.02em;color:#fff;text-shadow:0 1px 2px #000,0 0 3px #000}
.mmo-shell .combat-grid .compact-party-card .hud-bar.resource{height:13px;min-height:13px;margin:0 0 4px}
.mmo-shell .combat-grid .compact-party-card .hud-bar.resource em{font:600 9.5px/13px system-ui}
.mmo-shell .combat-grid .compact-party-card .hud-bar.resource>i{background:linear-gradient(#6ab7ff,#2463d6)}
.mmo-shell .combat-grid .compact-party-card .hud-bar.resource[title=Rage]>i{background:linear-gradient(#f0775e,#a8291c)}
.mmo-shell .combat-grid .compact-party-card .hud-bar.resource:is([title=Focus],[title=Energy])>i{background:linear-gradient(#f6d76a,#c08b1c)}
.mmo-shell .combat-grid .compact-party-card:not(.fallen):has(.hud-bar.health>i.low){box-shadow:0 2px 8px #0008,inset 0 0 0 1px #ff5a3c88,inset 0 0 14px #ff3b2033}
.mmo-shell .combat-grid .compact-party-card .hud-bar.health>i.low{background:linear-gradient(#ff9b80,var(--hud-low-a) 35%,var(--hud-low-b))}
.mmo-shell .combat-grid .compact-party-card.fallen{opacity:.6}
.mmo-shell .combat-grid .compact-party-card.fallen .party-status-portrait{filter:grayscale(1)}

/* Battlefield plates. Ordinary enemies keep their slim bar (it had shrunk to a 6px square), and party members
   now carry the same slim bar over their heads so you can see who is hurt without looking away from the fight. */
.dungeon-battlefield .enemy-unit:not(.rare-unit):not(.boss-unit):not(.focus-target) .unit-hp,
.dungeon-battlefield .hero-unit .unit-hp{height:5px;margin:0;border:1px solid #000c;border-radius:2px;box-shadow:0 1px 2px #000,0 0 0 1px #ffffff1a}
.dungeon-battlefield .hero-unit .unit-name{display:block;width:44px!important;left:-22px!important}
.dungeon-battlefield .hero-unit .unit-name>:not(.unit-hp){display:none}
.dungeon-battlefield .hero-unit .unit-hp>i{background:linear-gradient(#8ae889,#2f8d3f)}

/* Enemy cards: health reads inside a thicker bar, elites stand out, the focus target glows. */
.mmo-shell .combat-grid .enemy-card{border-radius:6px;background:linear-gradient(160deg,#1e2a2f,#121b20 70%);box-shadow:0 2px 6px #0007}
.mmo-shell .combat-grid .enemy-card.focused{border-color:#f2c86e;box-shadow:0 0 0 1px #f2c86e,0 0 12px #f2c86e55}
.mmo-shell .combat-grid .enemy-card.fallen{opacity:.5}
.mmo-shell .combat-grid .enemy-identity>span{display:grid;grid-template-columns:minmax(0,1fr);align-content:center}
.mmo-shell .combat-grid .enemy-identity [data-enemy-health]{grid-row:4;grid-column:1;z-index:1;margin:2px 0 0;text-align:center;font:600 10px/14px system-ui;font-variant-numeric:tabular-nums;color:#fff;text-shadow:0 1px 2px #000,0 0 3px #000}
.mmo-shell .combat-grid .enemy-identity .enemy-health{grid-row:4;grid-column:1;height:14px;margin-top:2px;border:1px solid #000b;border-radius:3px;background:#1d0d0b;box-shadow:inset 0 1px 3px #000d,0 0 0 1px #ffffff10}
.mmo-shell .combat-grid .enemy-health i{background:linear-gradient(#ff8a68,#d24a33 40%,#8f2216)}
/* Defeated enemies move after the living ones, so on a phone the enemy still fighting is the first card you see. */
.mmo-shell .combat-grid .enemy-card.fallen{order:1}
.mmo-shell .combat-grid .enemy-card.fallen :is(.enemy-health,[data-enemy-health]){visibility:hidden}
/* A waiting enemy's cast line stays in place but reads quietly; its effects get one fixed row that scrolls. */
.mmo-shell .combat-grid .enemy-card .portrait-cast:not(.casting){border-color:#ffffff14;background:#0000002e;color:#9fb0b2}
/* Effects wrap onto up to three rows, then scroll, so two-line chips like "Doom ×3 / Until guards fall" and chips at a phone card's right edge are never cut off. */
.mmo-shell .combat-grid .enemy-card .portrait-effects{flex-wrap:wrap;align-items:flex-start;height:auto;min-height:30px;max-height:79px;margin-top:4px;overflow-x:hidden;overflow-y:auto;scrollbar-gutter:auto;scrollbar-width:thin}
.mmo-shell .combat-grid .enemy-card .portrait-effect{flex-shrink:0;max-width:100%}

/* Combat meter: one bar per person, filled in their class colour, with the numbers on the bar.
   The whole row opens the breakdown, so each row is still a full-size touch target. */
.mmo-shell .combat-grid .damage-meter header{align-items:baseline}
.mmo-shell .combat-grid .damage-meter header h3{font-size:1rem;margin:0}
.mmo-shell .combat-grid .damage-meter header>strong{font-size:.9375rem}
/* Tabs fill the row in equal columns of at least 72px, so Damage, Healing, Threat and Reset never cut off: two by two in a narrow
   party rail, one row where there is room. */
.mmo-shell .combat-grid .damage-meter .meter-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:4px;margin:10px 0 8px}
.mmo-shell .combat-grid .damage-meter .meter-tabs button{min-width:0;padding:0 4px;border-radius:4px;font-size:.8125rem;white-space:nowrap}
.mmo-shell .combat-grid .damage-meter .meter-tabs [data-meter-reset]{background:transparent;color:#c9b88f}
.mmo-shell .combat-grid [data-meter-rows] .meter-row{position:relative;align-items:center;gap:6px;min-height:44px;box-sizing:border-box;margin:3px 0;padding:4px 8px 4px 6px;border-radius:4px;background:#0a151b;box-shadow:inset 0 0 0 1px #ffffff0d;overflow:hidden}
.mmo-shell .combat-grid [data-meter-rows] .meter-track{position:absolute;inset:0;height:auto;margin:0;border-radius:4px;background:transparent}
.mmo-shell .combat-grid [data-meter-rows] .meter-track i{border-radius:0;background:linear-gradient(90deg,color-mix(in srgb,var(--meter-color) 18%,transparent),color-mix(in srgb,var(--meter-color) 48%,transparent))}
.mmo-shell .combat-grid [data-meter-rows] .meter-person{position:static}
.mmo-shell .combat-grid [data-meter-rows] :is(.meter-rank,.meter-person>div:first-child,.meter-totals){position:relative;z-index:1}
.mmo-shell .combat-grid [data-meter-rows] .meter-rank{min-width:1ch;padding:0;font:600 .6875rem system-ui;color:#c9d2d2;text-shadow:0 1px 2px #000}
.mmo-shell .combat-grid [data-meter-rows] .meter-person>div:first-child{align-items:baseline}
.mmo-shell .combat-grid [data-meter-rows] .meter-name{min-height:0;padding:0;font:700 .8125rem/1.3 system-ui;text-decoration:none;color:var(--meter-color);text-shadow:0 1px 2px #000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mmo-shell .combat-grid [data-meter-rows] .meter-name::after{content:'';position:absolute;inset:-4px -8px -4px -30px}
.mmo-shell .combat-grid [data-meter-rows] .meter-name:focus-visible{outline:none}
.mmo-shell .combat-grid [data-meter-rows] .meter-row:has(.meter-name:focus-visible){outline:2px solid #f2c86e;outline-offset:1px}
.mmo-shell .combat-grid [data-meter-rows] .meter-row:has(.meter-name:hover){box-shadow:inset 0 0 0 1px #ffffff33}
.mmo-shell .combat-grid [data-meter-rows] .meter-person b{font-size:.8125rem;color:#fff;text-shadow:0 1px 2px #000}
.mmo-shell .combat-grid [data-meter-rows] .meter-totals{color:#d0d8d8;text-shadow:0 1px 2px #000;margin-top:1px}
.mmo-shell .combat-grid .damage-meter .meter-note{margin-top:8px}


/* Dungeon floors and boss arenas narrower than the stage (Prison Cellar, Tautra, world bosses) leave empty space beside the painting.
   Fill that space with a dim, blurred copy of the same painting so the arena never sits in dark strips. */
.mmo-shell .battlefield.dungeon-battlefield::before{content:'';position:absolute;inset:-40px;z-index:-1;pointer-events:none;background:var(--arena-backdrop,none) center/cover no-repeat;filter:blur(14px) brightness(.8) saturate(.85)}
.mmo-shell .battlefield.dungeon-battlefield .arena-background{box-shadow:0 0 28px 10px #05080a99}
/* A fallen member's ability slots stay greyed; the card already shows the revive timer, so no placeholder dash. */
.path-portrait-skill[data-skill-state=defeated] small{visibility:hidden}
/* Landscape phones (about 390px tall): the top bar took three rows and pushed the battlefield below the fold.
   Put the page buttons and the account buttons on one row, and tighten the battle heading. */
@media (orientation:landscape) and (max-height:500px){
 /* The nav is a five-track grid everywhere else; with the More menu and the account block it has six children, so one row needs a flex row. */
 .shell.mmo-shell>.topbar>nav{display:flex!important;flex-wrap:nowrap;align-items:center;gap:4px;padding-top:4px;padding-bottom:4px}
 .shell.mmo-shell>.topbar>nav>.nav-button{flex:1 1 0;min-width:0;min-height:44px}
 .shell.mmo-shell>.topbar>nav>.nav-more{flex:0 0 auto}
 .shell.mmo-shell>.topbar>nav>.nav-account,.shell.mmo-shell.wayfarer-shell>.topbar>nav>.nav-account{flex:0 0 auto;width:auto;margin-left:auto;grid-column:auto}
 .shell.mmo-shell>.topbar>nav>.nav-account .account-block{flex:0 0 auto;width:max-content}
 /* The battle heading keeps the zone name, mode, rates and the hero bar; the boss modifier line and the points banner wait for portrait (the Hero badge still counts the points). */
 .mmo-shell .combat-grid .arena-heading{padding-top:4px;padding-bottom:4px}
 .mmo-shell .combat-grid .arena-heading .zone-badge .challenge-threat-summary{display:none}
 .mmo-shell .combat-grid .arena-heading>.battle-goals{display:none}
}
/* Phones: the round minimap sat over boss nameplates near the top of the field. Plates sit above heads, so dock it bottom right. */
@media(max-width:600px){.shell.mmo-shell .battlefield .battle-minimap{top:auto;bottom:8px}.mmo-shell .combat-grid .enemy-card .portrait-effects{max-height:72px}}
/* Unique Find callout (lib/unique-find.js decided): a Unique that only dropped because of the find bonus says so on its flight. */
.loot-flight.by-unique-find::after{content:'Unique Find';position:absolute;left:50%;top:-20px;transform:translateX(-50%);white-space:nowrap;padding:1px 6px;border-radius:3px;background:#2a1d08e6;border:1px solid #e0b25a;color:#ffd98a;font:600 11px/16px var(--ui,Arial,sans-serif);letter-spacing:.3px}

/* /raid-finder.css */
/* Raid Finder: floating eye and pop-up. Kit colours only. */
.rf{position:fixed;right:14px;bottom:20px;z-index:40;display:flex;flex-direction:column;align-items:flex-end;gap:10px;max-width:calc(100vw - 28px)}
.rf[hidden]{display:none}
@media (max-width:820px){.rf{bottom:calc(84px + env(safe-area-inset-bottom,0px))}}
.rf-eye{position:relative;width:52px;height:52px;min-width:44px;min-height:44px;border-radius:50%;border:2px solid var(--uk-gold-dim);background:var(--uk-navy-0);color:var(--uk-gold);display:grid;place-items:center;padding:0;cursor:pointer}
.rf-eye svg{width:28px;height:28px}
.rf-eye.is-lit,.rf-eye.is-in{border-color:var(--uk-gold);color:var(--uk-gold-hi)}
.rf-eye.is-lit{animation:rf-pulse 2.4s ease-in-out infinite}
@keyframes rf-pulse{0%,100%{opacity:1}50%{opacity:.72}}
@media (prefers-reduced-motion:reduce){.rf-eye.is-lit{animation:none}}
.rf-eye:focus-visible,.rf-btn:focus-visible,.rf-x:focus-visible,.rf-toast:focus-visible{outline:2px solid var(--uk-focus);outline-offset:2px}
.rf-badge{position:absolute;top:-4px;right:-4px;min-width:22px;height:22px;padding:0 5px;border-radius:11px;background:var(--uk-gold);color:var(--uk-navy-0);font:700 12px/22px var(--uk-sans);text-align:center}
.rf-toast{display:flex;flex-direction:column;gap:2px;text-align:left;max-width:280px;padding:10px 14px;border:1px solid var(--uk-gold-dim);border-radius:var(--uk-radius);background:var(--uk-navy-0);color:var(--uk-ivory);font:14px/1.3 var(--uk-sans);cursor:pointer;min-height:44px}
.rf-toast strong{color:var(--uk-gold-text);font-family:var(--uk-serif)}
.rf-toast span{color:var(--uk-ivory-dim);font-size:13px}
.rf-pop{width:min(340px,calc(100vw - 28px));max-height:min(70vh,520px);display:flex;flex-direction:column;border:1px solid var(--uk-gold-dim);border-radius:var(--uk-radius);background:var(--uk-navy-0);color:var(--uk-ivory);font:14px/1.35 var(--uk-sans)}
.rf-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 8px 8px 14px;border-bottom:1px solid var(--uk-gold-dim)}
.rf-bar h2{margin:0;font:600 17px var(--uk-serif);color:var(--uk-gold-text)}
.rf-x{width:44px;height:44px;border:0;background:none;color:var(--uk-ivory);font-size:24px;cursor:pointer}
.rf-body{overflow-y:auto;padding:10px 14px 14px;display:flex;flex-direction:column;gap:10px}
.rf-queues,.rf-members{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.rf-queue{padding:8px 0;border-bottom:1px solid var(--uk-locked);display:flex;flex-direction:column;gap:6px}
.rf-queue.is-invited .rf-qtop strong{color:var(--uk-gold-hi)}
.rf-qtop,.rf-head2,.rf-qmid{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.rf-count{color:var(--uk-gold-text);font-weight:700}
.rf-meta,.rf-note{color:var(--uk-ivory-dim);font-size:13px;margin:0}
.rf-warn{color:var(--uk-danger-text)}
.rf-pips{display:flex;gap:8px}
.rf-pip{display:inline-flex;align-items:center;gap:3px;font-size:13px}
.rf-pip svg{width:16px;height:16px}
.rf-pip.is-full{color:var(--uk-done)}.rf-pip.is-open{color:var(--uk-gold-text)}
.rf-pip i{font-style:normal;opacity:.85}
.rf-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.rf-row{display:flex;flex-wrap:wrap;gap:8px}
.rf-btn{min-height:44px;flex:1 1 auto}
.rf-btn.is-off{opacity:.5;cursor:not-allowed}
.rf-member{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rf-member .rf-kick{flex:0 0 auto;min-height:44px}
.rf-member em{font-style:normal;color:var(--uk-gold-text);font-size:12px}
.rf-name{font-weight:600}
.rf-dot{width:8px;height:8px;border-radius:50%;background:var(--uk-locked)}.rf-dot.is-on{background:var(--uk-done)}
.rf-invite{display:flex;gap:8px}.rf-invite input{flex:1 1 120px;min-height:44px;min-width:0}
.rf-open{display:flex;flex-direction:column;gap:6px}
.rf-queues{gap:0;border:1px solid var(--uk-locked);border-radius:var(--uk-radius)}
.rf-queues li+li{border-top:1px solid var(--uk-locked)}
.rf-row-q{width:100%;min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;background:none;border:0;color:inherit;text-align:left;cursor:pointer;font:inherit}
.rf-row-q.is-sel{background:var(--uk-locked-bg);outline:1px solid var(--uk-gold)}
.rf-row-q:focus-visible{outline:2px solid var(--uk-focus);outline-offset:-2px}
.rf-qtext{display:flex;flex-direction:column;min-width:0}
.rf-qtext strong{color:var(--uk-gold-text);font:600 15px var(--uk-serif);overflow-wrap:anywhere}
.rf-qtext small{color:var(--uk-ivory-dim);font-size:12px}
.rf-slots{display:flex;flex-wrap:wrap;gap:2px;justify-content:flex-end;max-width:116px}
.rf-slot{width:20px;height:20px;border-radius:50%;border:1px solid var(--uk-gold-dim);display:grid;place-items:center;color:var(--uk-gold-text)}
.rf-slot svg{width:12px;height:12px}
.rf-slot.is-empty{border-color:var(--uk-locked);background:none}
.rf-empty{margin:0;padding:18px 0;text-align:center;color:var(--uk-ivory-dim)}
.rf-foot{display:flex;flex-direction:column;gap:8px}
.rf-tools{display:flex}.rf-refresh{font-size:20px}

/* Polish: painted gold frame, glowing eye, framed buttons */
.rf-eye{width:56px;height:56px;border:2px solid var(--uk-gold);background:radial-gradient(circle at 50% 40%,#24344d,#0b111d 72%);box-shadow:0 0 0 3px #0b111d,0 0 0 4px var(--uk-gold-dim),0 6px 16px rgba(0,0,0,.6)}
.rf-eye.is-lit{box-shadow:0 0 0 3px #0b111d,0 0 0 4px var(--uk-gold),0 0 18px rgba(240,200,110,.55),0 6px 16px rgba(0,0,0,.6);animation:rf-glow 2.4s ease-in-out infinite}
@keyframes rf-glow{0%,100%{box-shadow:0 0 0 3px #0b111d,0 0 0 4px var(--uk-gold),0 0 10px rgba(240,200,110,.35),0 6px 16px rgba(0,0,0,.6)}50%{box-shadow:0 0 0 3px #0b111d,0 0 0 4px var(--uk-gold),0 0 24px rgba(240,200,110,.8),0 6px 16px rgba(0,0,0,.6)}}
@media (prefers-reduced-motion:reduce){.rf-eye.is-lit{animation:none}}
.rf-badge{border:2px solid #0b111d;box-shadow:0 0 0 1px var(--uk-gold-dim)}
.rf-pop,.rf-toast{background:linear-gradient(180deg,#16213a,#0b111d);border:2px solid var(--uk-gold-dim);box-shadow:inset 0 0 0 1px #0b111d,inset 0 0 0 2px rgba(200,160,80,.35),0 12px 28px rgba(0,0,0,.65)}
.rf-toast{border-color:var(--uk-gold);animation:rf-in .35s ease-out}
@keyframes rf-in{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.rf-toast{animation:none}}
.rf-bar{background:linear-gradient(180deg,rgba(200,160,80,.18),rgba(200,160,80,0));border-bottom:1px solid var(--uk-gold-dim)}
.rf-bar h2{letter-spacing:.04em;text-transform:uppercase;font-size:15px}
.rf-x{color:var(--uk-gold-text)}
.rf-queues{border:1px solid var(--uk-gold-dim);background:rgba(5,9,16,.55)}
.rf-queues li+li{border-top:1px solid rgba(200,160,80,.25)}
.rf-row-q.is-sel{background:linear-gradient(90deg,rgba(200,160,80,.28),rgba(200,160,80,.06));outline:1px solid var(--uk-gold)}
.rf-slots{max-width:104px;gap:3px}
.rf-slot{width:18px;height:18px;border:1px solid var(--uk-gold);background:rgba(200,160,80,.14)}
.rf-slot.is-Tank{color:#8fb7e8;border-color:#8fb7e8;background:rgba(110,160,220,.16)}
.rf-slot.is-Healer{color:#7fd29a;border-color:#7fd29a;background:rgba(90,190,130,.16)}
.rf-slot.is-DPS{color:#e58a7c;border-color:#e58a7c;background:rgba(220,110,95,.16)}
.rf-slot.is-empty{border:1px dashed rgba(154,163,176,.55);background:none}
.rf .rf-btn{border:1px solid var(--uk-gold-dim);background:linear-gradient(180deg,#22304a,#121b2d);color:var(--uk-ivory);font:600 14px var(--uk-sans);border-radius:var(--uk-radius)}
.rf .rf-btn.is-primary{border-color:var(--uk-gold);background:linear-gradient(180deg,#e2bb6a,#a97d32);color:#1a1206}
.rf .rf-btn.is-danger{border-color:var(--uk-danger-text);color:var(--uk-danger-text)}
.rf .rf-btn.is-on{border-color:var(--uk-done);color:var(--uk-done)}
.rf .rf-btn.is-off{opacity:.45;filter:grayscale(.6)}
.rf-invite input{background:#0b111d;border:1px solid var(--uk-gold-dim);color:var(--uk-ivory);padding:0 10px;border-radius:var(--uk-radius);font:14px var(--uk-sans)}
.rf-pip{padding:1px 6px;border:1px solid currentColor;border-radius:10px}
.rf-member .rf-kick{margin-left:auto;min-height:36px;padding:0 12px}.rf-badge{white-space:nowrap}

/* Painted pass: the game's own gold frame and raid banner art */
.rf-pop{position:relative;padding:16px;border:0;background:linear-gradient(180deg,#141d33,#0a1020);box-shadow:0 14px 34px rgba(0,0,0,.7)}
.rf-pop::after,.rf-toast::after{content:"";position:absolute;inset:0;pointer-events:none;border:16px solid transparent;border-image:url('/art/interface/panel-frame-v1.webp') 18% / 16px / 0 stretch}
.rf-bar{margin:-2px -2px 0;border:1px solid var(--uk-gold-dim);border-radius:2px;min-height:64px;padding:8px 4px 8px 14px;background:linear-gradient(90deg,rgba(8,12,22,.78),rgba(8,12,22,.12) 65%,rgba(8,12,22,.45)),url('/art/interface/banner-raids-v1.webp') center/cover}
.rf-bar h2{font-size:18px;letter-spacing:.08em;color:var(--uk-gold-hi);text-shadow:0 2px 6px #000}
.rf-body{padding:12px 0 2px}
.rf-queues{border:0;background:none;gap:8px}
.rf-queues li+li{border:0}
.rf-row-q{min-height:58px;padding:9px 12px;border:1px solid rgba(200,160,80,.35);border-radius:3px;background:linear-gradient(180deg,rgba(34,48,74,.75),rgba(14,22,38,.85));transition:border-color .15s,background .15s}
.rf-row-q.is-sel{outline:0;border-color:var(--uk-gold);background:linear-gradient(90deg,rgba(214,170,84,.34),rgba(34,48,74,.8));box-shadow:inset 3px 0 0 var(--uk-gold),0 0 12px rgba(240,200,110,.25)}
.rf-qtext strong{font-size:16px;text-shadow:0 1px 3px #000}
.rf-qtext small{font-size:12.5px}
.rf-slots{max-width:112px;gap:4px}
.rf-slot{width:19px;height:19px;box-shadow:inset 0 0 4px rgba(0,0,0,.6)}
.rf-slot.is-empty{background:rgba(0,0,0,.35)}
.rf-empty{padding:26px 8px;font:italic 15px var(--uk-serif);background:rgba(0,0,0,.25);border:1px dashed rgba(200,160,80,.35);border-radius:3px}
.rf-toast{position:relative;padding:14px 16px 14px 18px;min-height:64px;max-width:300px;border:0;background:linear-gradient(90deg,rgba(8,12,22,.8),rgba(8,12,22,.25)),url('/art/interface/event-raid-opening-v1.webp') center/cover;box-shadow:0 10px 26px rgba(0,0,0,.7),0 0 18px rgba(240,200,110,.3)}
.rf-toast strong{font-size:16px;color:var(--uk-gold-hi);text-shadow:0 2px 4px #000}
.rf-toast span{color:var(--uk-ivory);font-size:13px}
.rf-eye{width:60px;height:60px;background:radial-gradient(circle at 50% 35%,#34486b,#0b111d 70%)}
.rf-eye svg{width:30px;height:30px;filter:drop-shadow(0 0 4px rgba(240,200,110,.6))}
.rf .rf-btn.is-primary{box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 2px 8px rgba(0,0,0,.5);text-shadow:0 1px 0 rgba(255,255,255,.25)}
.rf-members .rf-member{padding:6px 8px;border-radius:3px;background:rgba(0,0,0,.25)}
.rf-head2 strong{font:600 17px var(--uk-serif);color:var(--uk-gold-text)}
.rf-pip{background:rgba(0,0,0,.3)}

/* /ui-kit.css */
/* Evermarch shared UI kit.
   One place that defines how framed panels, tab strips, buttons, icon buttons and section headings look,
   so every page reads as one painted-fantasy interface: midnight-blue surfaces, ivory text, thin gold frames with an inner rule.
   No animation is used anywhere in this file.

   How to use it on a new screen (add the class, or add your class to the lists below):
     .uk-card        framed panel (gold line + inner rule); .uk-card-light for small panels
     .uk-tabs        tab strip; put buttons directly inside, mark the current one with aria-selected, aria-pressed, aria-current or .active
     .uk-btn         secondary button (also every plain .secondary button)   .uk-btn-primary gold button   .uk-btn-danger red button
     .uk-icon-btn    44px rounded-square icon button with a gold ring; put IRPUiIcons.svg('name') inside and keep aria-label + title
     .uk-heading     section heading with a small ornament rule
     .uk-disclosure  <details> with a framed summary
   Existing class names are mapped in the lists below so old markup inherits the look without being rewritten. */

:root{
 --uk-gold:#d6b575;--uk-gold-hi:#f0ce83;--uk-gold-dim:#8f7645;--uk-gold-text:#ffe1aa;
 --uk-ivory:#eadbb9;--uk-ivory-dim:#c9c3b4;--uk-focus:#f4cd86;
 --uk-navy-0:#0c1723;--uk-navy-1:#101a2a;--uk-navy-2:#152131;--uk-navy-3:#29374a;
 --uk-radius:4px;--uk-radius-card:6px;--uk-radius-icon:8px;--uk-tap:44px;
 --uk-rule:inset 0 0 0 2px var(--uk-navy-0),inset 0 0 0 3px #b8955a3d;
 --uk-surface:linear-gradient(180deg,var(--uk-navy-3),var(--uk-navy-2));
 --uk-surface-hover:linear-gradient(180deg,#35455b,#1c2c40);
 --uk-surface-lit:linear-gradient(180deg,#77602f,#3a2f22);
 --uk-tab-surface:linear-gradient(180deg,#1e2c41,#111b2c);
}

/* ---- 1. Panels and cards -------------------------------------------------------------------- */
.uk-card,
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.squire-idle-reminder,.world-spawn-banner,.map-invitation,.raid-companion-builds,.raid-boss-guide,.attribute-panel,.gather-log,.gather-materials,.gather-coming,.crown-alpha-notice,.quest-records){
 position:relative;border:1px solid var(--uk-gold-dim);border-radius:var(--uk-radius-card);
 background:var(--uk-card-bg,linear-gradient(150deg,#1c2b40,#101a2b));
 box-shadow:var(--uk-rule),0 6px 16px #0004;color:var(--realm-ink,#e6e3d9);
}
.uk-card-light{border:1px solid #6f5d3c;border-radius:var(--uk-radius-card);background:linear-gradient(150deg,#182438,#0f1928);box-shadow:inset 0 0 0 2px var(--uk-navy-0),inset 0 0 0 3px #b8955a26}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .squire-idle-reminder{--uk-card-bg:linear-gradient(110deg,#253127,#111c2b);border-top:2px solid var(--uk-gold)}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .world-spawn-banner{--uk-card-bg:linear-gradient(105deg,#20364a,#15202e);border-color:#9a8556}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .crown-alpha-notice{border-width:1px;border-left:1px solid var(--uk-gold-dim)}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .quest-records{border-inline:1px solid var(--uk-gold-dim);padding-inline:12px}
.uk-panel{position:relative;background:linear-gradient(135deg,#25313880,transparent 65%),#121e24;border:18px solid transparent;border-image:url('/art/interface/panel-frame-v1.webp') 18% / 18px / 0 stretch}

/* ---- 2. Tab strips (sub-tabs, segmented buttons) ------------------------------------------------ */
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.section-tabs,.region-tabs,.market-tabs,.rank-tabs,.notice-board-tabs,.workshop-service-tabs,.inventory-tabs,.inventory-dialog-tabs,.dev-tabs,.crown-categories,.chat-channels,.tree-toolbar>nav,.uk-tabs):not(.market-category-group):not(.chat-channels){
 gap:6px;background:transparent;border:0;border-bottom:1px solid #b69a6044;box-shadow:none;
}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.section-tabs,.region-tabs,.market-tabs,.rank-tabs,.notice-board-tabs,.workshop-service-tabs,.inventory-tabs,.inventory-dialog-tabs,.dev-tabs,.crown-categories,.chat-channels,.tree-toolbar>nav,.uk-tabs)>:is(button,a),
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .market-category-group>button{
 position:relative;min-height:var(--uk-tap);padding:9px 14px;border:1px solid var(--uk-gold-dim);border-radius:var(--uk-radius);
 background:var(--uk-tab-surface);color:#d9d3c2;font:600 .8125rem/1.3 system-ui;text-decoration:none;
 box-shadow:var(--uk-rule);cursor:pointer;
}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.section-tabs,.region-tabs,.market-tabs,.rank-tabs,.notice-board-tabs,.workshop-service-tabs,.inventory-tabs,.inventory-dialog-tabs,.dev-tabs,.crown-categories,.chat-channels,.tree-toolbar>nav,.uk-tabs)>:is(button,a):hover:not(:disabled),
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .market-category-group>button:hover:not(:disabled){
 border-color:var(--uk-gold);background:linear-gradient(180deg,#2a3b55,#16233a);color:#fff0c8;
}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.section-tabs,.region-tabs,.market-tabs,.rank-tabs,.notice-board-tabs,.workshop-service-tabs,.inventory-tabs,.inventory-dialog-tabs,.dev-tabs,.crown-categories,.chat-channels,.tree-toolbar>nav,.uk-tabs)>:is(button,a):is(.active,.selected,.chosen,[aria-selected="true"],[aria-pressed="true"],[aria-current="page"],[aria-current="true"]),
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .market-category-group>button:is(.active,.selected,[aria-selected="true"],[aria-pressed="true"],[aria-current="page"]){
 border-color:#e0bd73;background:var(--uk-surface-lit);color:#fff1cc;
 box-shadow:inset 0 -3px 0 #e6c889,inset 0 0 0 2px var(--uk-navy-0),inset 0 0 0 3px #e6c88955;
}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.section-tabs,.region-tabs,.market-tabs,.rank-tabs,.notice-board-tabs,.workshop-service-tabs,.inventory-tabs,.inventory-dialog-tabs,.dev-tabs,.crown-categories,.chat-channels,.tree-toolbar>nav,.uk-tabs)>:is(button,a):is(:disabled,[aria-disabled="true"]){
 opacity:.5;cursor:not-allowed;border-color:#5b5040;color:#9c9788;background:var(--uk-tab-surface);filter:none;
}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.section-tabs,.region-tabs,.market-tabs,.rank-tabs,.notice-board-tabs,.workshop-service-tabs,.inventory-tabs,.inventory-dialog-tabs,.dev-tabs,.crown-categories,.chat-channels,.tree-toolbar>nav,.uk-tabs)>:is(button,a):focus-visible,
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .market-category-group>button:focus-visible{outline:3px solid var(--uk-focus);outline-offset:2px;z-index:2}
/* The old tab underline pseudo-elements would double the new gold underline. */
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.region-tabs,.market-tabs,.rank-tabs,.section-tabs)>button::after{content:none}
/* Bag and character-sheet tabs used to run edge to edge with important overrides; keep them as framed tabs. */
.inventory-panel .inventory-tabs,.mmo-shell .inventory-panel .inventory-tabs{margin:0 0 12px;gap:6px;border-bottom:1px solid #b69a6044}
.inventory-tabs>button,.inventory-tabs>button.selected{border:1px solid var(--uk-gold-dim)!important;border-radius:var(--uk-radius)!important;background:var(--uk-tab-surface)!important;color:#d9d3c2!important;box-shadow:var(--uk-rule)!important}
.inventory-tabs>button.selected,.inventory-tabs>button[aria-pressed="true"],.inventory-tabs>button[aria-selected="true"]{border-color:#e0bd73!important;background:var(--uk-surface-lit)!important;color:#fff1cc!important;box-shadow:inset 0 -3px 0 #e6c889,inset 0 0 0 2px var(--uk-navy-0),inset 0 0 0 3px #e6c88955!important}
/* Page-level tab strip lines up with the page padding instead of touching the sidebar frame. */
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .section-tabs{padding:10px clamp(14px,2.5vw,36px)}
/* Category lists (Auction House): left-aligned rows that keep their words whole. */
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .market-category-group>button{display:flex;align-items:center;gap:8px;text-align:left;padding:8px 10px;overflow-wrap:normal;word-break:normal;hyphens:none}
/* Chat channel tabs are a compact row inside the chat header band. */
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .community-chat .chat-channels>button{min-height:44px;padding:6px 10px;white-space:nowrap}
/* Skill-tree focus row keeps each branch colour on its label and sits inside the toolbar without its own rule. */
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .tree-toolbar>nav{border-bottom:0;padding:0}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .tree-toolbar>nav>button:not([aria-pressed="true"]){color:var(--branch-tone,#d9d3c2)}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .tree-zoom>button{min-width:var(--uk-tap);min-height:var(--uk-tap);padding:6px 12px;border:1px solid var(--uk-gold-dim);border-top:2px solid var(--uk-gold);border-radius:var(--uk-radius);background:var(--uk-surface);color:var(--uk-ivory);font:600 .875rem/1 system-ui;box-shadow:var(--uk-rule)}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .tree-zoom>button:hover:not(:disabled){border-color:var(--uk-gold-hi);background:var(--uk-surface-hover);color:#fff0c8}
.uk-tabs,.crown-categories{display:flex;flex-wrap:wrap}
.crown-categories>a,.uk-tabs>a{display:inline-flex;align-items:center;justify-content:center}
.crown-categories{margin:14px 0}
.uk-tabs>:is(button,a){flex:1 1 110px;min-width:0}

/* ---- 3. Buttons: secondary, primary, danger ----------------------------------------------------- */
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.secondary,.uk-btn,.handbook-button){
 min-height:var(--uk-tap);padding:9px 16px;border:1px solid var(--uk-gold-dim);border-top:2px solid var(--uk-gold);border-radius:var(--uk-radius);
 background:var(--uk-surface);color:var(--uk-ivory);font:600 .8125rem/1.3 system-ui;text-decoration:none;
 box-shadow:var(--uk-rule),0 2px 5px #0004;cursor:pointer;
}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.secondary,.uk-btn,.handbook-button):hover:not(:disabled){border-color:var(--uk-gold-hi);background:var(--uk-surface-hover);color:#fff0c8}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.secondary,.uk-btn,.handbook-button):where([aria-pressed="true"],.selected,.active){border-color:#e0bd73;background:var(--uk-surface-lit);color:#fff1cc}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.secondary,.uk-btn,.handbook-button):disabled,:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.secondary,.uk-btn,.handbook-button)[aria-disabled="true"]{border-color:#5b5040;border-top-color:#6d6047;color:#a5a191;cursor:not-allowed;filter:none}
.uk-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.red-button,.uk-btn-primary){
 min-height:var(--uk-tap);padding:9px 18px;border:1px solid #e6c98f;border-radius:var(--uk-radius);
 background:linear-gradient(180deg,#c9a468,#8f6f3c);color:#1b1509;font:700 .8125rem/1.3 system-ui;text-decoration:none;
 box-shadow:inset 0 1px 0 #fff2c95c,inset 0 0 0 2px #8a682f66,0 2px 5px #0005;cursor:pointer;
}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.red-button,.uk-btn-primary):hover:not(:disabled){border-color:#fbe3ac;background:linear-gradient(180deg,#d8b674,#9c7a44)}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.red-button,.uk-btn-primary):disabled{border-color:#7a6b4c;color:#3a3427;filter:none}
.uk-btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:8px}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(button.danger,a.danger,.uk-btn-danger){
 border:1px solid #b9705c;border-top:2px solid #d99a83;border-radius:var(--uk-radius);
 background:linear-gradient(180deg,#7d2e2a,#4a1a1c);color:#ffe6d6;
 box-shadow:inset 0 0 0 2px #240d0e,inset 0 0 0 3px #d99a8340,0 2px 5px #0005;
}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(button.danger,a.danger,.uk-btn-danger):hover:not(:disabled){border-color:#f0b7a2;background:linear-gradient(180deg,#943730,#5a2022);color:#fff}
.uk-btn-danger{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--uk-tap);padding:9px 16px;font:600 .8125rem/1.3 system-ui;cursor:pointer}

/* ---- 4. Icon buttons ---------------------------------------------------------------------------- */
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices,.topbar) :is(.icon-button,.uk-icon-btn,.notice-close){
 display:inline-grid;place-items:center;box-sizing:border-box;min-width:var(--uk-tap);min-height:var(--uk-tap);padding:0;
 border:1px solid #b8985b;border-radius:var(--uk-radius-icon);
 background:radial-gradient(circle at 50% 28%,#24364e,#111b2b 78%);color:var(--uk-gold);
 box-shadow:inset 0 0 0 2px var(--uk-navy-0),inset 0 0 0 3px #b8985b40,0 2px 5px #0005;cursor:pointer;line-height:1;
}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices,.topbar) :is(.icon-button,.uk-icon-btn,.notice-close):hover:not(:disabled){border-color:var(--uk-gold-hi);color:var(--uk-gold-text);background:radial-gradient(circle at 50% 28%,#2f4665,#16233a 78%)}
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices,.topbar) :is(.icon-button,.uk-icon-btn,.notice-close):focus-visible{outline:3px solid var(--uk-focus);outline-offset:2px}
:is(.icon-button,.uk-icon-btn) .uk-icon,.uk-icon{width:22px;height:22px;flex:0 0 22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.notice-close{font:600 1.125rem/1 system-ui}
.uk-icon-btn[aria-pressed="true"]{border-color:#e0bd73;color:#fff1cc;background:radial-gradient(circle at 50% 28%,#77602f,#2e2618 78%)}
/* Sidebar and top bar: the utility icons sit on one row and stay on the sidebar's gold-framed glass. */
.shell .nav-account .account-block>.icon-button{padding:0}
.shell .nav-account .sidebar-character-portrait,.shell .sidebar-character-portrait:has(img){border-radius:var(--uk-radius-icon);border-color:#b8985b}

/* ---- 5. Section headings ---------------------------------------------------------------------- */
.uk-heading,
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.exp-panel,.inventory-panel,.gather-log,.gather-materials,.attribute-panel)>h2:first-child{
 padding-bottom:12px;margin-bottom:14px;
 background:
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 9 9'%3E%3Cpath d='M4.5 .5 8.500 4.500 4.500 8.500.5 4.500Z' fill='%23d6b575'/%3E%3C/svg%3E") 0 100%/9px 9px no-repeat,
  linear-gradient(90deg,#b69a60,#b69a6055 55%,transparent) 15px calc(100% - 5px)/calc(100% - 15px) 1px no-repeat;
}

/* ---- 6. Disclosures ---------------------------------------------------------------------------- */
.uk-disclosure>summary,
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.settings-help,.settings-danger,.release-archive,.character-limit-details,.character-attribute-details,.tree-build-management,.storage-materials,.gather-rules,.skill-calculation,.path-rank-preview,.companion-abilities,.raid-company>details,.raid-card-copy>details,.stormgrave-card>details)>summary{
 min-height:var(--uk-tap);padding:10px 14px;border:1px solid #6f5d3c;border-radius:var(--uk-radius);
 background:linear-gradient(180deg,#182438,#0f1928);box-shadow:inset 0 0 0 2px var(--uk-navy-0),inset 0 0 0 3px #b8955a26;cursor:pointer;
}
.uk-disclosure>summary::marker,:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.settings-help,.settings-danger,.release-archive,.character-limit-details,.character-attribute-details,.tree-build-management,.storage-materials,.gather-rules,.skill-calculation,.path-rank-preview,.companion-abilities,.raid-company>details,.raid-card-copy>details,.stormgrave-card>details)>summary::marker{color:var(--uk-gold)}
.uk-disclosure>summary:hover,:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.settings-help,.settings-danger,.release-archive,.character-limit-details,.character-attribute-details,.tree-build-management,.storage-materials,.gather-rules,.skill-calculation,.path-rank-preview,.companion-abilities,.raid-company>details,.raid-card-copy>details,.stormgrave-card>details)>summary:hover{border-color:var(--uk-gold)}

/* ---- 7. Narrow screens --------------------------------------------------------------------------- */
@media(max-width:760px){:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .section-tabs{padding-inline:10px}}
@media(max-width:700px){
 /* Region tabs: two per row on phones, the last one spans the row. */
 :is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .region-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
 :is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .region-tabs>button{min-width:0;padding:8px 6px}
 :is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .region-tabs>button:last-child:nth-child(odd){grid-column:1/-1}
}
@media(max-width:480px){
 /* Tab words never break mid-word; tabs wrap onto extra rows instead. */
 :is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.market-tabs,.rank-tabs,.notice-board-tabs,.workshop-service-tabs,.dev-tabs,.crown-categories,.uk-tabs)>:is(button,a){flex:1 1 auto;min-width:min(100%,max-content);padding:8px 10px;white-space:normal;overflow-wrap:normal;word-break:normal;text-align:center}
 :is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .section-tabs>:is(button,a){padding:8px 10px;white-space:normal;overflow-wrap:normal;word-break:normal;text-align:center}
 :is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.secondary,.red-button,.uk-btn,.uk-btn-primary){white-space:normal;max-width:100%}
}

/* Item hover cards must appear above the side menu (500), top bar, action bar, chat and inventory toolbar; below help tips (5000). */
.item-hover,.item-hover.market-hover{z-index:3000}

/* =====================================================================================================
   UI KIT V1 (2026-10-03): header, stat strip, card grid, progress, chips, painted frame, icon art,
   gear slots, event card. Contract and markup examples: docs/UI_KIT_V1_2026-10-03.md.
   Everything below is NEW and prefixed .uk-: it does nothing until a screen uses the class.
   The older kit classes above (.uk-btn, .uk-tabs, .uk-card, .uk-heading) still need an ancestor
   .shell / .modal-backdrop / .handbook (as in the game); the classes below work anywhere.
   ===================================================================================================== */

/* ---- 8. Kit v1 tokens: state colours, painted frame, type ---------------------------------------- */
:root{
 /* State colours. Never use colour alone: every state also has a word (.uk-state). */
 --uk-done:#7fc58a;--uk-done-dim:#3d7a52;--uk-done-bg:linear-gradient(150deg,#173223,#0f1c22);
 --uk-current:var(--uk-gold);--uk-current-bg:linear-gradient(150deg,#2f2c27,#111b2b);
 --uk-locked:#6c7788;--uk-locked-text:#9aa3b0;--uk-locked-bg:linear-gradient(150deg,#141c28,#0e1520);
 --uk-danger:#c9604f;--uk-danger-text:#ffe6d6;
 /* Rarity colours (same as the game item rarities). */
 --uk-rarity-common:#c6ced2;--uk-rarity-superior:#9ae867;--uk-rarity-rare:#76bdff;--uk-rarity-epic:#f2c865;--uk-rarity-heroic:#ff808e;
 /* Art and type. */
 --uk-frame-img:url('/art/interface/panel-frame-v1.webp');
 --uk-art-sheet:url('/art/interface/navigation-v2.webp');
 --uk-serif:Georgia,'Times New Roman',serif;--uk-sans:system-ui,-apple-system,'Segoe UI',sans-serif;
 --uk-gap:10px;--uk-pad:12px;
}

/* ---- 9. Page shell (standalone pages only; the game already has .shell) ------------------------- */
.uk-page{margin:0;min-height:100vh;color:var(--uk-ivory);font:.9375rem/1.5 var(--uk-sans);
 background:radial-gradient(ellipse at 14% 0%,#26395a55,transparent 55%),radial-gradient(ellipse at 100% 60%,#5e3c1b25,transparent 65%),var(--uk-navy-0)}
.uk-page :where(h1,h2,h3,h4){margin:0;font-family:var(--uk-serif);font-weight:500;letter-spacing:.02em;color:var(--uk-gold-text);text-wrap:balance}
.uk-page :focus-visible{outline:3px solid var(--uk-focus);outline-offset:2px}
.uk-wrap{box-sizing:border-box;max-width:1120px;margin:0 auto;padding:14px clamp(10px,3vw,28px) 40px}
.uk-stack{display:grid;gap:14px;min-width:0}
.uk-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---- 10. Painted frame: does NOT depend on interface-art.js decorate() ---------------------------
   Same technique as .realm-frame-light: a 9-slice of panel-frame-v1.webp drawn on ::after.
   Add .uk-frame to any box; leave the inside padding to the frame. */
.uk-frame{--uk-frame-w:18px;position:relative;box-sizing:border-box;padding:calc(var(--uk-frame-w) + 4px);
 background:linear-gradient(150deg,#1c2b40,#101a2b);box-shadow:0 6px 16px #0004;color:var(--uk-ivory)}
.uk-frame::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
 border:var(--uk-frame-w) solid transparent;border-image:var(--uk-frame-img) 18% / var(--uk-frame-w) / 0 stretch}
.uk-frame-sm{--uk-frame-w:12px}
@media(max-width:540px){.uk-frame{--uk-frame-w:14px}.uk-frame-sm{--uk-frame-w:10px}}

/* ---- 11. Painted icons: 16 pictograms from navigation-v2.webp (4 x 4 sheet) -------------------- */
.uk-art{display:inline-block;flex:0 0 auto;width:40px;height:40px;vertical-align:middle;
 background:var(--uk-art-sheet) var(--uk-ax,0%) var(--uk-ay,0%)/400% 400% no-repeat;filter:drop-shadow(0 2px 2px #0009)}
.uk-art-sm{width:24px;height:24px}.uk-art-md{width:32px;height:32px}.uk-art-lg{width:64px;height:64px}
.uk-art-journey{--uk-ax:0%;--uk-ay:0%}.uk-art-raids{--uk-ax:33.3333%;--uk-ay:0%}.uk-art-overview{--uk-ax:66.6667%;--uk-ay:0%}.uk-art-town{--uk-ax:100%;--uk-ay:0%}
.uk-art-party{--uk-ax:0%;--uk-ay:33.3333%}.uk-art-guild{--uk-ax:33.3333%;--uk-ay:33.3333%}.uk-art-gathering{--uk-ax:66.6667%;--uk-ay:33.3333%}.uk-art-auction{--uk-ax:100%;--uk-ay:33.3333%}
.uk-art-shop{--uk-ax:0%;--uk-ay:66.6667%}.uk-art-journal{--uk-ax:33.3333%;--uk-ay:66.6667%}.uk-art-leaderboards{--uk-ax:66.6667%;--uk-ay:66.6667%}.uk-art-guide{--uk-ax:100%;--uk-ay:66.6667%}
.uk-art-combat{--uk-ax:0%;--uk-ay:100%}.uk-art-inventory{--uk-ax:33.3333%;--uk-ay:100%}.uk-art-settings{--uk-ax:66.6667%;--uk-ay:100%}.uk-art-account-chest{--uk-ax:100%;--uk-ay:100%}

/* ---- 12. Screen header: icon + title + one-line help + strip of 2-3 key numbers ------------------ */
.uk-head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 14px;align-items:center;min-width:0;isolation:isolate;overflow:hidden;background:var(--uk-navy-1)}
/* Optional painted banner: <img class="uk-head-art" src="/art/interface/banner-x-v1.webp" alt=""> as the first child. */
.uk-head>.uk-head-art{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:right center}
.uk-head::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#0c1723f2,#0c1723d6 52%,#0c172366)}
.uk-head-icon{display:grid;place-items:center;width:64px;height:64px}
.uk-head-text{min-width:0}
.uk-head-text h1{font-size:clamp(1.55rem,5.2vw,2.15rem);line-height:1.1}
.uk-head-help{margin:4px 0 0;color:var(--uk-ivory);font-size:.95rem;line-height:1.4;text-shadow:0 1px 3px #000}
.uk-head>.uk-stats{grid-column:1/-1;padding-top:10px;border-top:1px solid #b69a6055}
@media(min-width:900px){
 .uk-head{grid-template-columns:auto minmax(0,1fr) minmax(300px,36%);min-height:112px}
 .uk-head>.uk-stats{grid-column:auto;padding:0 0 0 16px;border-top:0;border-left:1px solid #b69a6055}
}
.uk-stats{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:0;margin:0;min-width:0}
.uk-stat{display:flex;flex-direction:column-reverse;align-items:center;justify-content:center;gap:2px;min-width:0;padding:0 6px;text-align:center}
.uk-stat+.uk-stat{border-left:1px solid #b69a6040}
.uk-stat dd{margin:0;max-width:100%;font:600 clamp(1.15rem,5.4vw,1.55rem)/1.1 var(--uk-serif);color:var(--uk-gold-text);overflow-wrap:anywhere}
.uk-stat dt{max-width:100%;font:600 .72rem/1.25 var(--uk-sans);letter-spacing:.08em;text-transform:uppercase;color:var(--uk-ivory-dim)}
.uk-stat.is-done dd{color:var(--uk-done)}

/* ---- 13. Tabs with icons (use inside .uk-tabs; the look comes from the tab rules above) -------------- */
.uk-tabs>.uk-tab{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.uk-tab .uk-tab-icon{flex:0 0 22px;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.uk-tab .uk-art{width:26px;height:26px;margin:-2px 0}
.uk-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--uk-gold);color:var(--uk-navy-0);font:700 .72rem/1 var(--uk-sans)}
@media(max-width:480px){
 .uk-tabs>.uk-tab{flex-direction:column;gap:2px;min-height:56px;padding:6px 4px}
 .uk-tabs>.uk-tab .uk-tab-label{font-size:.8rem}
}

/* ---- 14. Card grid: auto-fill, two columns at 320 px --------------------------------------------- */
.uk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--uk-card-min,136px)),1fr));gap:var(--uk-gap);min-width:0;margin:0;padding:0;list-style:none}
@media(max-width:480px){.uk-grid{gap:8px}}

/* ---- 15. Card parts (.uk-card is the framed card above; these sit inside it) --------------------- */
.uk-grid>.uk-card{display:flex;flex-direction:column;gap:8px;min-width:0;padding:12px 0;container-type:inline-size}
@media(min-width:600px){.uk-grid{--uk-card-min:200px}}
.uk-card>:is(.uk-card-head,.uk-card-value,.uk-progress,.uk-chips,.uk-card-foot,.uk-card-note){margin-inline:var(--uk-pad)}
.uk-card-head{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-width:0}
@container (min-width:200px){.uk-card-head{flex-direction:row;align-items:center;gap:10px}}
.uk-card-icon{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;border:1px solid #b8985b66;border-radius:var(--uk-radius-icon);background:radial-gradient(circle at 50% 30%,#24364e,#0f1826 80%)}
.uk-card-icon .uk-art{width:34px;height:34px}
.uk-card-title{margin:0;min-width:0;font:600 1rem/1.25 var(--uk-serif);letter-spacing:.01em;color:var(--uk-ivory);overflow-wrap:break-word;text-wrap:balance}
.uk-card-value{display:flex;align-items:baseline;justify-content:space-between;gap:6px;flex-wrap:wrap;margin-block:0}
.uk-card-number{font:600 1.35rem/1.1 var(--uk-serif);color:var(--uk-gold-text);overflow-wrap:anywhere}
.uk-card-number small{font:500 .85rem var(--uk-sans);color:var(--uk-ivory-dim)}
.uk-card-note{margin-block:0;font-size:.82rem;line-height:1.35;color:var(--uk-ivory-dim)}
.uk-card-foot{margin-top:auto;display:grid;gap:6px}
.uk-state{display:inline-flex;align-items:center;gap:4px;padding:1px 7px;border:1px solid currentColor;border-radius:10px;font:700 .72rem/1.5 var(--uk-sans);letter-spacing:.07em;text-transform:uppercase;color:var(--uk-gold-text);white-space:nowrap}

/* State by colour: green = done, gold = current, dim = locked. */
.uk-card.is-current{border-color:var(--uk-gold-hi);background:var(--uk-current-bg);box-shadow:var(--uk-rule),0 0 0 1px #f0ce8340,0 0 18px #d6b57530,0 6px 16px #0004}
.uk-card.is-done{border-color:var(--uk-done-dim);background:var(--uk-done-bg);box-shadow:var(--uk-rule),0 0 0 1px #7fc58a33,0 6px 16px #0004}
.uk-card.is-done .uk-card-number{color:var(--uk-done)}
.uk-card.is-done .uk-card-icon{border-color:var(--uk-done-dim)}
.uk-card.is-done .uk-state{color:var(--uk-done)}
.uk-card.is-locked{border-color:var(--uk-locked);background:var(--uk-locked-bg);box-shadow:var(--uk-rule)}
.uk-card.is-locked .uk-card-title,.uk-card.is-locked .uk-card-number,.uk-card.is-locked .uk-card-number small{color:var(--uk-locked-text)}
.uk-card.is-locked .uk-card-icon{border-color:var(--uk-locked)}
.uk-card.is-locked .uk-card-icon .uk-art{filter:grayscale(1) brightness(.6)}
.uk-card.is-locked .uk-state{color:var(--uk-locked-text)}
.uk-card.is-locked .uk-chip{border-color:var(--uk-locked);color:var(--uk-locked-text)}

/* ---- 16. Progress bar ------------------------------------------------------------------------------ */
.uk-progress{position:relative;height:12px;box-sizing:border-box;border:1px solid var(--uk-gold-dim);border-radius:var(--uk-radius);background:var(--uk-navy-0);box-shadow:inset 0 1px 3px #000a;overflow:hidden}
.uk-progress>span{display:block;height:100%;min-width:0;border-radius:2px;background:linear-gradient(180deg,var(--uk-gold-hi),var(--uk-gold-dim));box-shadow:inset 0 1px 0 #fff4}
.uk-progress.is-done>span,.uk-card.is-done .uk-progress>span{background:linear-gradient(180deg,var(--uk-done),var(--uk-done-dim))}
.uk-card.is-done .uk-progress{border-color:var(--uk-done-dim)}
.uk-progress.is-locked,.uk-card.is-locked .uk-progress{border-color:var(--uk-locked)}
.uk-progress.is-locked>span,.uk-card.is-locked .uk-progress>span{background:var(--uk-locked)}
.uk-progress-lg{height:16px}

/* ---- 17. Reward chips ------------------------------------------------------------------------------ */
.uk-chips{display:flex;flex-wrap:wrap;gap:6px;margin-block:0;padding:0;list-style:none}
.uk-chip{display:inline-flex;align-items:center;gap:5px;min-height:26px;box-sizing:border-box;max-width:100%;padding:2px 9px 2px 4px;border:1px solid #b69a6066;border-radius:13px;background:var(--uk-navy-0);color:var(--uk-gold-text);font:600 .75rem/1.2 var(--uk-sans)}
.uk-chip .uk-art{width:18px;height:18px}
.uk-chip-plain{padding-left:10px}
.uk-chip-done{border-color:var(--uk-done-dim);color:var(--uk-done)}

/* ---- 18. Button layout helpers (the look comes from .uk-btn / .uk-btn-primary / .uk-btn-danger) ------- */
.uk-btn-block{display:flex;width:100%;box-sizing:border-box}
.uk-actions{display:flex;flex-wrap:wrap;gap:10px;margin:0}
.uk-actions>*{flex:1 1 140px}

/* ---- 19. Event card: strong colour, art, a short bullet list, two clear buttons ------------------------ */
.uk-event{--uk-accent:#c8732f;display:grid;grid-template-columns:minmax(0,1fr);gap:12px;min-width:0;overflow:hidden;
 background:linear-gradient(115deg,color-mix(in srgb,var(--uk-accent) 46%,#0c1723),#0c1723 72%)}
.uk-event-art{display:none;width:100%;height:100%;min-height:150px;object-fit:cover;object-position:right center;-webkit-mask-image:linear-gradient(90deg,transparent,#000 35%);mask-image:linear-gradient(90deg,transparent,#000 35%)}
.uk-event-body{display:grid;gap:10px;min-width:0}
.uk-event-eyebrow{margin:0;font:700 .72rem/1.3 var(--uk-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--uk-gold-text)}
.uk-event :is(h2,h3){font-size:1.4rem;line-height:1.15}
.uk-bullets{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.uk-bullets>li{position:relative;padding-left:20px;line-height:1.4}
.uk-bullets>li::before{content:"";position:absolute;left:3px;top:.5em;width:8px;height:8px;background:var(--uk-gold);transform:rotate(45deg)}
@media(min-width:700px){
 .uk-event{grid-template-columns:minmax(0,1fr) minmax(160px,30%);align-items:center}
 .uk-event-art{display:block;align-self:stretch}
}

/* ---- 20. Character doll: big art in the middle, gear slots around it ---------------------------------- */
.uk-doll{--uk-slot:68px;display:grid;grid-template-columns:var(--uk-slot) minmax(0,1fr) var(--uk-slot);gap:10px;align-items:stretch;min-width:0}
.uk-doll-col{display:flex;flex-direction:column;justify-content:space-between;gap:8px}
.uk-doll-art{position:relative;display:grid;align-items:end;justify-items:center;min-width:0;min-height:340px;overflow:hidden;border-radius:var(--uk-radius-card);
 isolation:isolate;background:var(--uk-navy-0)}
/* Optional backdrop: <img class="uk-doll-bg" src="/art/interface/guildhall-v1.webp" alt=""> as the first child. */
.uk-doll-art>.uk-doll-bg{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:60% center;opacity:.55}
.uk-doll-art::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse at 50% 92%,#d6b57555,transparent 58%),linear-gradient(180deg,#0c172380,#0c1723e0)}
.uk-doll-art>.uk-doll-hero{display:block;width:auto;max-width:100%;height:100%;max-height:420px;object-fit:contain;transform:scale(1.16);transform-origin:50% 100%;filter:drop-shadow(0 8px 10px #000a)}
.uk-doll-foot{grid-column:1/-1;display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.uk-doll-name{grid-column:1/-1;display:grid;gap:6px;text-align:center}
.uk-doll-name h2{font-size:1.5rem}
.uk-doll-name p{margin:0;color:var(--uk-ivory-dim);font-size:.9rem}
.uk-slot{--uk-rarity:var(--uk-rarity-common);position:relative;display:grid;place-items:center;box-sizing:border-box;width:var(--uk-slot);height:var(--uk-slot);min-width:var(--uk-tap);min-height:var(--uk-tap);padding:0;
 border:1px solid var(--uk-rarity);border-radius:var(--uk-radius-icon);background:var(--uk-navy-0);box-shadow:0 0 0 1px var(--uk-navy-0),0 2px 6px #0007;color:var(--uk-ivory);cursor:pointer;overflow:hidden}
.uk-slot:hover{box-shadow:0 0 0 1px var(--uk-navy-0),0 0 10px var(--uk-rarity)}
/* Item icon: a cell of a painted atlas. Pick the atlas class; set --uk-sw/--uk-sh (atlas size in %) and --uk-sx/--uk-sy (cell position in %). */
.uk-slot-icon{display:block;width:100%;height:100%;background-repeat:no-repeat;background-size:var(--uk-sw,100%) var(--uk-sh,100%);background-position:var(--uk-sx,0%) var(--uk-sy,0%)}
.uk-atlas-armor{background-image:url('/assets/items-v2/armor.webp')}.uk-atlas-accessories{background-image:url('/assets/items-v2/accessories.webp')}
.uk-atlas-weapons{background-image:url('/assets/items-v2/weapons.webp')}.uk-atlas-class-weapons{background-image:url('/assets/items-v2/class-weapons.webp')}.uk-atlas-light-armor{background-image:url('/assets/items-v2/light-armor.webp')}
.uk-slot.is-empty{border:1px dashed var(--uk-locked);background:var(--uk-locked-bg);box-shadow:none;color:var(--uk-locked-text)}
.uk-slot.is-empty svg{width:70%;height:70%}
.uk-slot-label{position:absolute;inset:auto 0 0;padding:1px 2px;background:#0c1723d9;font:600 .7rem/1.2 var(--uk-sans);text-align:center;color:var(--uk-ivory);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uk-r-common{--uk-rarity:var(--uk-rarity-common)}.uk-r-superior{--uk-rarity:var(--uk-rarity-superior)}.uk-r-rare{--uk-rarity:var(--uk-rarity-rare)}.uk-r-epic{--uk-rarity:var(--uk-rarity-epic)}.uk-r-heroic{--uk-rarity:var(--uk-rarity-heroic)}
@media(max-width:480px){.uk-doll{--uk-slot:52px;gap:6px}.uk-doll-art{min-height:300px}.uk-slot-label{display:none}}

/* ---- 21. One stats panel: label left, number right, grouped under small headings ----------------------- */
.uk-rows{display:grid;gap:0;margin:0}
.uk-rows>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-height:32px;padding:4px 2px;border-bottom:1px solid #b69a6030}
.uk-rows>div:last-child{border-bottom:0}
.uk-rows dt{margin:0;color:var(--uk-ivory)}
.uk-rows dd{margin:0;font:600 1.05rem/1.2 var(--uk-serif);color:var(--uk-gold-text);text-align:right}
.uk-rows-group{margin:14px 0 4px;font:700 .72rem/1.3 var(--uk-sans);letter-spacing:.12em;text-transform:uppercase;color:var(--uk-ivory-dim)}
.uk-rows-group:first-child{margin-top:0}
.uk-attrs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:0}
.uk-attrs>div{display:flex;flex-direction:column-reverse;align-items:center;gap:1px;padding:6px 2px;border:1px solid #b69a6055;border-radius:var(--uk-radius);background:var(--uk-navy-0)}
.uk-attrs dd{margin:0;font:600 1.15rem/1.1 var(--uk-serif);color:var(--uk-gold-text)}
.uk-attrs dt{font:700 .72rem/1.2 var(--uk-sans);letter-spacing:.08em;color:var(--uk-ivory-dim)}
.uk-attrs>.is-primary{border-color:var(--uk-gold)}

/* ---- 22. Layout helpers: two-column screen body, labelled meter ------------------------------------------- */
.uk-split{display:grid;gap:14px;grid-template-columns:minmax(0,1fr);align-items:start;min-width:0}
@media(min-width:900px){.uk-split{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}}
.uk-meter{display:grid;gap:5px}
.uk-meter-line{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:.85rem;color:var(--uk-ivory-dim)}
.uk-meter-line b{font:600 .95rem var(--uk-serif);color:var(--uk-gold-text)}

/* ---- 23. Painted icon sheets v1 (UI icons pass): quests, rewards, stats, empty slots, actions ----------
   Five 4 x 4 sheets in /art/ui/ (256 px cells, transparent). Use them with ANY of:
     <span class="uk-art uk-ico-day">      same sizes and the same tab/chip/card sizing as the navigation icons (.uk-art-sm|md|lg)
     <span class="uk-ico uk-ico-day">      standalone: 40 px, .uk-ico-sm 24, .uk-ico-md 32, .uk-ico-lg 64
   An icon class only sets three custom properties (sheet, column, row); it never sets a size. Decorative: aria-hidden="true". */
:root{
 --uk-sheet-quests:url('/art/ui/icons-quests-v1.webp');--uk-sheet-rewards:url('/art/ui/icons-rewards-v1.webp');--uk-sheet-stats:url('/art/ui/icons-stats-v1.webp');
 --uk-sheet-slots:url('/art/ui/icons-slots-v1.webp');--uk-sheet-actions:url('/art/ui/icons-actions-v1.webp');
}
.uk-ico{display:inline-block;flex:0 0 auto;width:40px;height:40px;vertical-align:middle;
 background:var(--uk-art-sheet) var(--uk-ax,0%) var(--uk-ay,0%)/400% 400% no-repeat;filter:drop-shadow(0 2px 2px #0009)}
.uk-ico-sm{width:24px;height:24px}.uk-ico-md{width:32px;height:32px}.uk-ico-lg{width:64px;height:64px}
.uk-tab .uk-ico{width:26px;height:26px;margin:-2px 0}
.uk-card-icon .uk-ico{width:34px;height:34px}
.uk-chip .uk-ico{width:18px;height:18px}
.uk-card.is-locked .uk-card-icon .uk-ico{filter:grayscale(1) brightness(.6)}
.uk-head-icon .uk-ico{width:64px;height:64px}
/* quests sheet, row by row */
.uk-ico-day{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:0%;--uk-ay:0%}.uk-ico-week{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:33.3333%;--uk-ay:0%}.uk-ico-month{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:66.6667%;--uk-ay:0%}.uk-ico-monsters{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:100%;--uk-ay:0%}
.uk-ico-boss{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:0%;--uk-ay:33.3333%}.uk-ico-boss-hunt{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:33.3333%;--uk-ay:33.3333%}.uk-ico-raid-boss{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:66.6667%;--uk-ay:33.3333%}.uk-ico-gather-trip{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:100%;--uk-ay:33.3333%}
.uk-ico-craft-order{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:0%;--uk-ay:66.6667%}.uk-ico-workshop{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:33.3333%;--uk-ay:66.6667%}.uk-ico-salvage{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:66.6667%;--uk-ay:66.6667%}.uk-ico-market-sale{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:100%;--uk-ay:66.6667%}
.uk-ico-quest-tree{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:0%;--uk-ay:100%}.uk-ico-enchant{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:33.3333%;--uk-ay:100%}.uk-ico-alchemy{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:66.6667%;--uk-ay:100%}.uk-ico-tavern{--uk-art-sheet:var(--uk-sheet-quests);--uk-ax:100%;--uk-ay:100%}
/* rewards sheet, row by row */
.uk-ico-gold{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:0%;--uk-ay:0%}.uk-ico-xp{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:33.3333%;--uk-ay:0%}.uk-ico-guild-coin{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:66.6667%;--uk-ay:0%}.uk-ico-material{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:100%;--uk-ay:0%}
.uk-ico-quest-point{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:0%;--uk-ay:33.3333%}.uk-ico-key{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:33.3333%;--uk-ay:33.3333%}.uk-ico-rune{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:66.6667%;--uk-ay:33.3333%}.uk-ico-charm{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:100%;--uk-ay:33.3333%}
.uk-ico-check{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:0%;--uk-ay:66.6667%}.uk-ico-lock{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:33.3333%;--uk-ay:66.6667%}.uk-ico-gem{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:66.6667%;--uk-ay:66.6667%}.uk-ico-chest{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:100%;--uk-ay:66.6667%}
.uk-ico-hourglass{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:0%;--uk-ay:100%}.uk-ico-star{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:33.3333%;--uk-ay:100%}.uk-ico-heart{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:66.6667%;--uk-ay:100%}.uk-ico-shield{--uk-art-sheet:var(--uk-sheet-rewards);--uk-ax:100%;--uk-ay:100%}
/* stats sheet, row by row */
.uk-ico-attack{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:0%;--uk-ay:0%}.uk-ico-health{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:33.3333%;--uk-ay:0%}.uk-ico-defense{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:66.6667%;--uk-ay:0%}.uk-ico-critical{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:100%;--uk-ay:0%}
.uk-ico-speed{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:0%;--uk-ay:33.3333%}.uk-ico-dodge{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:33.3333%;--uk-ay:33.3333%}.uk-ico-recovery{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:66.6667%;--uk-ay:33.3333%}.uk-ico-resource{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:100%;--uk-ay:33.3333%}
.uk-ico-strength{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:0%;--uk-ay:66.6667%}.uk-ico-intelligence{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:33.3333%;--uk-ay:66.6667%}.uk-ico-dexterity{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:66.6667%;--uk-ay:66.6667%}.uk-ico-vitality{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:100%;--uk-ay:66.6667%}
.uk-ico-endurance{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:0%;--uk-ay:100%}.uk-ico-luck{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:33.3333%;--uk-ay:100%}.uk-ico-magic-power{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:66.6667%;--uk-ay:100%}.uk-ico-danger{--uk-art-sheet:var(--uk-sheet-stats);--uk-ax:100%;--uk-ay:100%}
/* slots sheet, row by row */
.uk-ico-slot-helmet{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:0%;--uk-ay:0%}.uk-ico-slot-body{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:33.3333%;--uk-ay:0%}.uk-ico-slot-gloves{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:66.6667%;--uk-ay:0%}.uk-ico-slot-pants{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:100%;--uk-ay:0%}
.uk-ico-slot-boots{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:0%;--uk-ay:33.3333%}.uk-ico-slot-amulet{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:33.3333%;--uk-ay:33.3333%}.uk-ico-slot-ring{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:66.6667%;--uk-ay:33.3333%}.uk-ico-slot-weapon{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:100%;--uk-ay:33.3333%}
.uk-ico-slot-shield{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:0%;--uk-ay:66.6667%}.uk-ico-slot-charm{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:33.3333%;--uk-ay:66.6667%}.uk-ico-slot-rune{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:66.6667%;--uk-ay:66.6667%}.uk-ico-slot-shoulders{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:100%;--uk-ay:66.6667%}
.uk-ico-slot-belt{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:0%;--uk-ay:100%}.uk-ico-slot-cloak{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:33.3333%;--uk-ay:100%}.uk-ico-slot-bag{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:66.6667%;--uk-ay:100%}.uk-ico-slot-bracers{--uk-art-sheet:var(--uk-sheet-slots);--uk-ax:100%;--uk-ay:100%}
/* actions sheet, row by row */
.uk-ico-help{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:0%;--uk-ay:0%}.uk-ico-guide-book{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:33.3333%;--uk-ay:0%}.uk-ico-back{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:66.6667%;--uk-ay:0%}.uk-ico-close{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:100%;--uk-ay:0%}
.uk-ico-info{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:0%;--uk-ay:33.3333%}.uk-ico-claim{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:33.3333%;--uk-ay:33.3333%}.uk-ico-act-lock{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:66.6667%;--uk-ay:33.3333%}.uk-ico-upgrade{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:100%;--uk-ay:33.3333%}
.uk-ico-trade{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:0%;--uk-ay:66.6667%}.uk-ico-filter{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:33.3333%;--uk-ay:66.6667%}.uk-ico-search{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:66.6667%;--uk-ay:66.6667%}.uk-ico-refresh{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:100%;--uk-ay:66.6667%}
.uk-ico-add{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:0%;--uk-ay:100%}.uk-ico-edit{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:33.3333%;--uk-ay:100%}.uk-ico-notify{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:66.6667%;--uk-ay:100%}.uk-ico-favourite{--uk-art-sheet:var(--uk-sheet-actions);--uk-ax:100%;--uk-ay:100%}

/* Empty gear slot: a dim silhouette of what goes there (replaces the inline dashed SVG). Put it inside .uk-slot.is-empty. */
.uk-slot-ghost{display:block;width:78%;height:78%;opacity:.5;pointer-events:none;
 background:var(--uk-art-sheet) var(--uk-ax,0%) var(--uk-ay,0%)/400% 400% no-repeat}
.uk-slot.is-empty:hover .uk-slot-ghost,.uk-slot.is-empty:focus-visible .uk-slot-ghost{opacity:.8}

/* Stat rows and attribute tiles with an icon. Row: <dt class="has-ico"><span class="uk-art uk-art-sm uk-ico-attack"></span>Attack power</dt>.
   Tile: add the icon as the LAST child of the tile div (the tile is column-reverse, so it shows on top). */
.uk-rows dt.has-ico{display:inline-flex;align-items:center;gap:8px}
.uk-rows>div:has(>dt.has-ico){align-items:center}
.uk-rows dt.has-ico>.uk-art,.uk-rows dt.has-ico>.uk-ico{width:30px;height:30px}
.uk-rows-group.has-ico{display:flex;align-items:center;gap:8px}
.uk-attrs>div>.uk-art,.uk-attrs>div>.uk-ico{width:34px;height:34px;margin-bottom:2px}

/* ---- 24. Guide link .uk-help: a small gold "?" medallion that opens the Guide at one topic ------------------
   <a class="uk-help" href="/guide.html#daily-quests" data-guide-topic="daily-quests" aria-label="Open the Guide: Daily, weekly and monthly quests"></a>
   The medallion is 26 px; the link box is 44 x 44 (negative margin keeps the layout footprint at 26 px), so keep 8 px of gap around it.
   Always visible, never hover-only. In the game, app.js binds [data-guide-topic] and opens the topic inside the game; without that script
   the href opens /guide.html on that topic. Use it next to a screen header or a card title when a mechanic needs explaining, NOT on every card. */
.uk-help{position:relative;display:inline-block;flex:0 0 auto;box-sizing:border-box;width:var(--uk-tap);height:var(--uk-tap);margin:-9px;vertical-align:middle;
 border-radius:50%;text-decoration:none;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.uk-help::before{content:"";position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;
 background:var(--uk-sheet-actions) 0% 0%/400% 400% no-repeat;filter:drop-shadow(0 1px 2px #000a)}
.uk-help:hover::before{filter:drop-shadow(0 1px 2px #000a) brightness(1.25) saturate(1.1)}
.uk-help:focus-visible{outline:0}
.uk-help:focus-visible::before{outline:3px solid var(--uk-focus);outline-offset:2px}
.uk-help-lg::before{width:32px;height:32px;margin:-16px 0 0 -16px}

/* Small helpers for the icon pass: a state mark inside .uk-state, and a title row that carries a .uk-help link. */
.uk-state .uk-art,.uk-state .uk-ico{width:16px;height:16px;margin:-2px 0;filter:none}
.uk-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;min-width:0}
.uk-title-row>:is(h1,h2,h3){min-width:0}
.uk-stat>.uk-art,.uk-stat>.uk-ico{width:26px;height:26px;margin-bottom:2px}

/* Phone: the "Ranking rules" and "Storage guide" help links were 15 and 25 px tall; give them the 44 px touch size. */
@media(max-width:760px){
 .rankings-page footer a[data-guide-topic],.account-storage>header a[data-guide-topic]{display:inline-flex;align-items:center;min-height:44px}
}

/* ---- 25. Kit additions 2 (2026-10-04): list row, rank badge, price block, form controls, pinned row, slot badges, wrapping state ----
   Written for the Leaderboards and Auction House samples. Additions only: nothing above this line was edited, so every older component computes the same styles.
   Same gating as sections 8 to 24: these are NEW .uk- classes that do nothing until a screen puts them in its markup (a screen only does that behind its IRP_UI_<SCREEN>_VERSION switch).
   Every selector piece below starts with a .uk- class (an element name may come first), no :is() / :where() lists. No animation, no transition. Contract and markup: docs/UI_KIT_V1_2026-10-03.md section 10.

   .uk-rank                    round rank number; .is-top (or an .is-top row) gives ranks 1 to 3 the gold look
   .uk-row-list > .uk-row      one list row: .uk-row-main (flex line) holds .uk-rank, .uk-row-media, .uk-row-body (.uk-row-title, .uk-row-sub, .uk-row-extra), .uk-row-end (.uk-row-num + .uk-row-unit), .uk-row-caret
                               .uk-row-main may be a <summary> (tap-open row with .uk-row-drawer) or a plain <div>; .uk-row-foot is a price + button line under it
                               modifiers: .is-top  .is-you  .is-pinned  .is-current  .is-done  .is-locked  .has-edge (rarity colour on the left edge, with .uk-r-<rarity>)
   .uk-row-gap                 dotted break between the top of a list and your own pinned row
   .uk-price                   coin + serif number + small note; .is-big  .is-short
   .uk-field .uk-label .uk-hint   label above a control, helper line below it (.is-error)
   .uk-select  .uk-input       44 px controls, 16 px text (phones do not zoom in); .uk-input.is-big for a price; .uk-input-wrap puts a coin icon inside the field
   .uk-stepper                 minus, number, plus (44 px each)
   .uk-seg                     equal-width joined buttons with aria-pressed or aria-checked, optional small second line
   .uk-slot-badge              corner badge on a .uk-slot: count (bottom right), .is-tl lock or hourglass icon, .is-bl, .is-tr
   .uk-slot.is-selected        gold ring plus a tick in the top right corner (shape, not colour alone)
   .uk-state.is-wrap           state tag that may wrap and never spills out of a narrow card */

/* 25.1 Rank badge */
.uk-rank{display:inline-grid;place-items:center;flex:0 0 auto;box-sizing:border-box;min-width:34px;height:34px;padding:0 4px;border:1px solid var(--uk-gold-dim);border-radius:17px;background:var(--uk-navy-0);font:600 .95rem/1 var(--uk-serif);color:var(--uk-ivory);font-variant-numeric:tabular-nums}
.uk-rank.is-top,.uk-row.is-top .uk-rank{border-color:var(--uk-gold-hi);background:var(--uk-surface-lit);color:var(--uk-gold-text);font-size:1.05rem}
@media(max-width:480px){.uk-rank{min-width:30px;height:30px;border-radius:15px;font-size:.85rem}.uk-rank.is-top,.uk-row.is-top .uk-rank{font-size:.95rem}}

/* 25.2 List row. Container, states, the line inside it, the parts, the tap-open drawer, the price line. */
.uk-row-list{display:grid;gap:8px;min-width:0;margin:0;padding:0;list-style:none}
.uk-row{--uk-rarity:var(--uk-rarity-common);position:relative;box-sizing:border-box;min-width:0;margin:0;padding:0;border:1px solid var(--uk-gold-dim);border-radius:var(--uk-radius-card);
 background:var(--uk-card-bg,linear-gradient(150deg,#1c2b40,#101a2b));box-shadow:var(--uk-rule),0 4px 10px #0003;color:var(--uk-ivory);list-style:none}
.uk-row.is-current,.uk-row.is-you{border-color:var(--uk-gold-hi);background:var(--uk-current-bg);box-shadow:var(--uk-rule),0 0 0 1px #f0ce8340,0 0 18px #d6b57530,0 4px 10px #0003}
.uk-row.is-done{border-color:var(--uk-done-dim);background:var(--uk-done-bg);box-shadow:var(--uk-rule),0 0 0 1px #7fc58a33,0 4px 10px #0003}
.uk-row.is-done .uk-row-num{color:var(--uk-done)}
.uk-row.is-locked{border-color:var(--uk-locked);background:var(--uk-locked-bg);box-shadow:var(--uk-rule)}
.uk-row.is-locked .uk-row-title,.uk-row.is-locked .uk-row-num,.uk-row.is-locked .uk-price-num{color:var(--uk-locked-text)}
.uk-row.is-locked .uk-row-media{border-color:var(--uk-locked);filter:grayscale(1) brightness(.7)}
.uk-row.has-edge{border-left:4px solid var(--uk-rarity)}
/* Your own row when you are below the first page: the list ends with .uk-row-gap and this row. It stays at the bottom of the screen while the list is in view. */
.uk-row.is-pinned{position:sticky;bottom:calc(8px + max(var(--mobile-nav-height,0px),env(safe-area-inset-bottom,0px)));z-index:3;box-shadow:var(--uk-rule),0 0 0 1px #f0ce8340,0 -6px 16px #000b}
.uk-row-gap{margin:0;padding:0;line-height:1;text-align:center;list-style:none;color:var(--uk-gold-dim)}
.uk-row-gap::before{content:"\00b7\00a0\00b7\00a0\00b7";font-size:1.5rem;letter-spacing:.4em}

.uk-row-main{display:flex;align-items:center;gap:10px;box-sizing:border-box;min-width:0;min-height:64px;margin:0;padding:9px 12px;list-style:none;color:inherit;text-decoration:none}
.uk-row.is-top .uk-row-main{min-height:76px}
summary.uk-row-main{cursor:pointer}
summary.uk-row-main::-webkit-details-marker{display:none}
summary.uk-row-main:focus-visible{outline:3px solid var(--uk-focus);outline-offset:-3px}
.uk-row-body{display:grid;flex:1 1 0;gap:3px;min-width:0}
.uk-row .uk-row-title{margin:0;font:600 1rem/1.2 var(--uk-serif);letter-spacing:0;color:var(--uk-ivory);overflow-wrap:anywhere}
.uk-row-sub{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin:0;font:600 .8rem/1.3 var(--uk-sans);color:var(--uk-ivory-dim)}
.uk-row-extra{display:flex;align-items:center;gap:8px;min-width:0;margin:0;font:600 .78rem/1.3 var(--uk-sans);color:var(--uk-ivory-dim)}
.uk-row-extra .uk-progress{flex:1 1 auto;height:8px;min-width:40px}
.uk-row-end{display:grid;flex:0 0 auto;justify-items:end;max-width:45%;margin:0;text-align:right}
.uk-row-num{font:600 1.5rem/1.05 var(--uk-serif);color:var(--uk-gold-text);overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.uk-row-unit{font:700 .72rem/1.2 var(--uk-sans);letter-spacing:.08em;text-transform:uppercase;color:var(--uk-ivory-dim)}
.uk-row-media{display:grid;place-items:center;flex:0 0 auto;box-sizing:border-box;width:44px;height:44px;border:1px solid #b8985b66;border-radius:var(--uk-radius-icon);
 background:radial-gradient(circle at 50% 30%,#24364e,#0f1826 80%);overflow:hidden;color:var(--uk-gold-text);font:600 1.2rem/1 var(--uk-serif)}
.uk-row-media>img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 18%}
.uk-row-media.is-lg{width:64px;height:64px}
.uk-row-media.is-round{border-radius:50%}
.uk-row-media.is-rarity{border:2px solid var(--uk-rarity)}
.uk-row-caret{flex:0 0 auto;width:0;height:0;border:5px solid transparent;border-top:6px solid var(--uk-gold);border-bottom:0}
.uk-row details[open]>.uk-row-main .uk-row-caret{border-top:0;border-bottom:6px solid var(--uk-gold);border-width:0 5px 6px}
.uk-row-drawer{display:grid;gap:10px;min-width:0;padding:2px 12px 12px;border-top:1px solid #b69a6030}
.uk-row-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;min-width:0;padding:0 12px 10px}
.uk-row-foot>.uk-btn,.uk-row-foot>.uk-btn-primary{flex:1 1 140px;max-width:100%}
@media(min-width:560px){.uk-row-foot>.uk-btn,.uk-row-foot>.uk-btn-primary{flex:0 0 auto;min-width:140px}}
@media(max-width:480px){
 .uk-row-main{gap:8px;padding:9px 10px}
 .uk-row-media{width:40px;height:40px}.uk-row-media.is-lg{width:56px;height:56px}
 .uk-row-num{font-size:1.35rem}
 .uk-row-foot{padding:0 10px 10px}
}

/* 25.3 Price block: coin icon and serif number on one line, a small note under it (each price, "Need 120 more gold", time left). */
.uk-price{display:grid;gap:0;min-width:0;margin:0}
.uk-price-num{display:inline-flex;align-items:center;gap:6px;font:600 1.3rem/1.1 var(--uk-serif);color:var(--uk-gold-text);overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.uk-price-num .uk-ico,.uk-price-num .uk-art{width:24px;height:24px}
.uk-price-note{font:500 .8rem/1.3 var(--uk-sans);color:var(--uk-ivory-dim)}
.uk-price.is-big .uk-price-num{font-size:1.7rem}
.uk-price.is-big .uk-price-num .uk-ico,.uk-price.is-big .uk-price-num .uk-art{width:32px;height:32px}
.uk-price.is-short .uk-price-num{color:var(--uk-locked-text)}
.uk-price.is-short .uk-price-note{color:var(--uk-danger-text)}

/* 25.4 Form controls. The doubled class and the element name lift these over the older ".shell input" and ".wayfarer-shell input" rules (the kit is the last stylesheet). 16 px text: phones do not zoom in on focus. */
.uk-field{display:grid;align-content:start;gap:4px;min-width:0;margin:0}
.uk-label{display:block;margin:0;font:700 .72rem/1.3 var(--uk-sans);letter-spacing:.12em;text-transform:uppercase;color:var(--uk-ivory-dim)}
.uk-hint{margin:0;font:500 .82rem/1.35 var(--uk-sans);color:var(--uk-ivory-dim)}
.uk-hint.is-error{color:var(--uk-danger-text)}
input.uk-input.uk-input,textarea.uk-input.uk-input,select.uk-select.uk-select{box-sizing:border-box;width:100%;min-width:0;max-width:100%;min-height:var(--uk-tap);margin:0;padding:0 12px;
 border:1px solid var(--uk-gold-dim);border-radius:var(--uk-radius);background:var(--uk-navy-0);color:var(--uk-ivory);font:600 1rem/1.3 var(--uk-sans);box-shadow:inset 0 1px 3px #000a;color-scheme:dark}
textarea.uk-input.uk-input{min-height:88px;padding:10px 12px;line-height:1.4;resize:vertical}
select.uk-select.uk-select{padding-right:40px;-webkit-appearance:none;appearance:none;cursor:pointer;
 background-image:linear-gradient(45deg,transparent 50%,var(--uk-gold) 50%),linear-gradient(135deg,var(--uk-gold) 50%,transparent 50%),var(--uk-tab-surface);
 background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%,0 0;background-size:6px 6px,6px 6px,100% 100%;background-repeat:no-repeat}
select.uk-select option{background:var(--uk-navy-1);color:var(--uk-ivory)}
input.uk-input.uk-input::placeholder,textarea.uk-input.uk-input::placeholder{color:var(--uk-locked-text);opacity:1}
input.uk-input.uk-input:hover:not(:disabled),textarea.uk-input.uk-input:hover:not(:disabled),select.uk-select.uk-select:hover:not(:disabled){border-color:var(--uk-gold)}
input.uk-input.uk-input:focus-visible,textarea.uk-input.uk-input:focus-visible,select.uk-select.uk-select:focus-visible{outline:3px solid var(--uk-focus);outline-offset:2px;border-color:var(--uk-gold-hi)}
input.uk-input.uk-input:disabled,textarea.uk-input.uk-input:disabled,select.uk-select.uk-select:disabled{border-color:#5b5040;opacity:.55;cursor:not-allowed}
input.uk-input.uk-input[aria-invalid="true"],textarea.uk-input.uk-input[aria-invalid="true"],select.uk-select.uk-select[aria-invalid="true"],input.uk-input.uk-input.is-invalid,select.uk-select.uk-select.is-invalid{border-color:var(--uk-danger)}
input.uk-input.uk-input.is-big{min-height:56px;font:600 1.5rem/1.2 var(--uk-serif);color:var(--uk-gold-text);font-variant-numeric:tabular-nums}
.uk-input-wrap{position:relative;min-width:0}
.uk-input-wrap>.uk-ico,.uk-input-wrap>.uk-art{position:absolute;left:10px;top:50%;width:30px;height:30px;margin-top:-15px;pointer-events:none}
.uk-input-wrap>input.uk-input.uk-input{padding-left:46px}

/* Stepper: minus, number, plus. Buttons are 44 px; the number is a real input (inputmode numeric) so it can be typed. */
.uk-stepper{display:grid;grid-template-columns:var(--uk-tap) minmax(0,1fr) var(--uk-tap);gap:6px;align-items:stretch;min-width:0}
.uk-stepper>.uk-stepper-btn{display:grid;place-items:center;box-sizing:border-box;min-width:var(--uk-tap);min-height:var(--uk-tap);margin:0;padding:0;border:1px solid var(--uk-gold-dim);border-top:2px solid var(--uk-gold);border-radius:var(--uk-radius);
 background:var(--uk-surface);color:var(--uk-ivory);font:600 1.4rem/1 var(--uk-serif);box-shadow:var(--uk-rule),0 2px 5px #0004;cursor:pointer;-webkit-tap-highlight-color:transparent}
.uk-stepper>.uk-stepper-btn:hover:not(:disabled){border-color:var(--uk-gold-hi);background:var(--uk-surface-hover);color:var(--uk-gold-text)}
.uk-stepper>.uk-stepper-btn:focus-visible{outline:3px solid var(--uk-focus);outline-offset:2px;z-index:2}
.uk-stepper>.uk-stepper-btn:disabled{border-color:#5b5040;border-top-color:#6d6047;opacity:.5;cursor:not-allowed}
input.uk-input.uk-input.uk-stepper-input{padding:0 4px;text-align:center;-moz-appearance:textfield;appearance:textfield}
input.uk-stepper-input::-webkit-inner-spin-button,input.uk-stepper-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}

/* Segmented choice: two to four equal buttons joined into one control. Mark the chosen one with aria-pressed="true" (or aria-checked="true" on role="radio"). */
.uk-seg{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);min-width:0;margin:0}
.uk-seg>.uk-seg-btn{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;box-sizing:border-box;min-width:0;min-height:var(--uk-tap);margin:0 0 0 -1px;padding:6px 8px;
 border:1px solid var(--uk-gold-dim);border-radius:0;background:var(--uk-tab-surface);color:var(--uk-ivory);font:600 .8125rem/1.25 var(--uk-sans);text-align:center;overflow-wrap:break-word;box-shadow:var(--uk-rule);cursor:pointer;-webkit-tap-highlight-color:transparent}
.uk-seg>.uk-seg-btn:first-child{margin-left:0;border-radius:var(--uk-radius) 0 0 var(--uk-radius)}
.uk-seg>.uk-seg-btn:last-child{border-radius:0 var(--uk-radius) var(--uk-radius) 0}
.uk-seg>.uk-seg-btn:only-child{border-radius:var(--uk-radius)}
.uk-seg>.uk-seg-btn>small{display:block;font:500 .71875rem/1.2 var(--uk-sans);color:var(--uk-ivory-dim)}
.uk-seg>.uk-seg-btn:hover:not(:disabled){border-color:var(--uk-gold);background:linear-gradient(180deg,#2a3b55,#16233a);color:var(--uk-gold-text);z-index:1}
.uk-seg>.uk-seg-btn[aria-pressed="true"],.uk-seg>.uk-seg-btn[aria-checked="true"],.uk-seg>.uk-seg-btn.is-selected{z-index:1;border-color:var(--uk-gold-hi);background:var(--uk-surface-lit);color:var(--uk-gold-text);
 box-shadow:inset 0 -3px 0 var(--uk-gold-hi),inset 0 0 0 2px var(--uk-navy-0),inset 0 0 0 3px #e6c88955}
.uk-seg>.uk-seg-btn[aria-pressed="true"]>small,.uk-seg>.uk-seg-btn[aria-checked="true"]>small,.uk-seg>.uk-seg-btn.is-selected>small{color:var(--uk-ivory)}
.uk-seg>.uk-seg-btn:focus-visible{outline:3px solid var(--uk-focus);outline-offset:2px;z-index:2}
.uk-seg>.uk-seg-btn:disabled{border-color:#5b5040;opacity:.5;cursor:not-allowed}

/* 25.5 Slot corner badges and the selected state. A badge sits inside a .uk-slot: count at the bottom right, or a small icon (lock, hourglass, E for equipped) at a top corner. Badges are not tappable. */
.uk-slot-badge{position:absolute;right:2px;bottom:2px;z-index:1;box-sizing:border-box;min-width:18px;padding:0 4px;border:1px solid var(--uk-gold-dim);border-radius:9px;background:var(--uk-navy-0);color:var(--uk-gold-text);font:700 .72rem/1.5 var(--uk-sans);text-align:center;pointer-events:none}
.uk-slot-badge.is-tl,.uk-slot-badge.is-tr,.uk-slot-badge.is-bl{display:grid;place-items:center;width:22px;height:22px;min-width:0;padding:0;border-radius:11px;line-height:1}
.uk-slot-badge.is-tl{top:2px;left:2px;right:auto;bottom:auto}
.uk-slot-badge.is-tr{top:2px;right:2px;bottom:auto}
.uk-slot-badge.is-bl{left:2px;right:auto}
.uk-slot-badge .uk-ico,.uk-slot-badge .uk-art{width:16px;height:16px;margin:0}
/* Selected: a gold ring and a tick (shape and colour; the tick sits at the top right, so use the other three corners for badges). Also set aria-pressed="true" on the button. */
.uk-slot.is-selected{border-color:var(--uk-gold-hi);box-shadow:0 0 0 1px var(--uk-navy-0),0 0 0 3px var(--uk-gold-hi),0 0 12px #f0ce8366}
.uk-slot.is-selected::after{content:"\2713";position:absolute;top:2px;right:2px;z-index:1;display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--uk-gold-hi);color:var(--uk-navy-0);font:700 .75rem/1 var(--uk-sans);pointer-events:none}

/* 25.6 State tag that may wrap: "Limit reached" or "Awaiting refund" in a two-column card at 320 px (the plain tag is nowrap). */
.uk-state.is-wrap{box-sizing:border-box;max-width:100%;padding:2px 8px;justify-content:center;border-radius:12px;line-height:1.35;white-space:normal;overflow-wrap:break-word;text-align:center}
/* ---- Tier 0 line on the item card: the gold highlight frame, one level above a normal card. Drawn only while IRP_T0_AFFIXES_VERSION is on
   (public/equipment-view.js tierZeroLine). Name, sentence and note are always visible; nothing is hover-only. Wraps at 320px. ---- */
.tier0-line{position:relative;margin:10px 0;padding:10px 12px;border:1px solid var(--uk-gold-hi);border-radius:var(--uk-radius-card);background:var(--uk-surface-lit);box-shadow:var(--uk-rule),0 0 10px #f0ce8333;color:var(--uk-ivory);overflow-wrap:anywhere}
.tier0-line .tier0-kicker{display:inline-block;margin-right:8px;padding:1px 6px;border:1px solid var(--uk-gold);border-radius:var(--uk-radius);color:var(--uk-gold-text);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase}
.tier0-line strong{color:var(--uk-gold-text);font-size:1rem}
/* Round five (QA R3): the class is written twice so that this rule wins on WEIGHT (0,2,1), not on the order of the stylesheets, against any `.some-card p` rule (0,1,1). */
.tier0-line.tier0-line p{margin:6px 0 4px;font-size:.9375rem;line-height:1.5;color:#fff0c8}
/* Round six (fifth QA read R2): the Need / Greed / Pass window. The line's NAME sits in each card's existing detail line (the .tier0-tag below, beside class and rarity), and nothing else of the line is inside a card, so a Tier 0 card is exactly as high as any other card and its three buttons are where they are on every card. What the line does is written AFTER the last card (public/loot-roll-window.js notes()): one closed row per line, the name and ONE SHORT LINE, 44px high to tap; a tap opens the whole sentence (never hover-only). Closed, the row is one line (nowrap, ellipsis); open, it wraps. Every selector carries .tier0-roll-text, which is drawn only while IRP_T0_AFFIXES_VERSION is on. */
.loot-roll-window details.tier0-roll-text{margin:0;border-top:1px solid #ffffff20;color:#fff0c8;font-size:.8125rem}
.loot-roll-window details.tier0-roll-text summary{box-sizing:border-box;min-height:44px;padding:12px 0;line-height:1.25rem;cursor:pointer;white-space:normal;overflow-wrap:anywhere}
.loot-roll-window details.tier0-roll-text[open] summary{white-space:normal;overflow-wrap:anywhere}
.loot-roll-window details.tier0-roll-text summary strong{color:var(--uk-gold-text)}
.loot-roll-window details.tier0-roll-text p{margin:0 0 10px;color:#fff0c8;font-size:.875rem;line-height:1.45;overflow-wrap:anywhere}
.tier0-line small{display:block;color:var(--uk-ivory-dim);font-size:.8125rem;line-height:1.45}
/* Tier 0 in the Enchanter (round three): the line is a FIXED row, gold-framed like the card block, with a small closed lock where other rows have the lock button. Nothing is hover-only. */
/* Round five (QA R3): `.tier0-fixed` is written twice in the three rules below (frame, name, sentence) and in the note rule, so that they win on WEIGHT against `.workshop-page .enchanter-affix`, `.enchanter-sheet .enchanter-affix` (0,2,0) and `.workshop-page .enchanter-affix small` / `strong` (0,2,1) whatever the order of the stylesheets. */
.enchanter-affix.tier0-fixed.tier0-fixed{border:1px solid var(--uk-gold-hi);border-radius:var(--uk-radius-card);background:var(--uk-surface-lit);box-shadow:var(--uk-rule),0 0 10px #f0ce8333;color:var(--uk-ivory);padding:8px 10px;overflow-wrap:anywhere}
.enchanter-affix.tier0-fixed.tier0-fixed strong{color:var(--uk-gold-text)}
.enchanter-affix.tier0-fixed .tier0-kicker{display:inline-block;margin-right:6px;padding:1px 6px;border:1px solid var(--uk-gold);border-radius:var(--uk-radius);color:var(--uk-gold-text);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase}
/* Round four (QA N1): the row holds a sentence, so it must wrap. workshops-combat.css:141 makes .enchanter-affix-main a flex row and :143 sets white-space:nowrap on its small; both are undone here for the Tier 0 fixed row ONLY (every selector carries .tier0-fixed, so no other Enchanter row changes). The row is not a control: default cursor, text from the top. */
.enchanter-affix.tier0-fixed .enchanter-affix-main{display:block}
.enchanter-sheet .enchanter-affix.tier0-fixed,.enchanter-affix.tier0-fixed{cursor:default;align-items:flex-start}
.enchanter-affix.tier0-fixed .enchanter-affix-main strong{display:block;white-space:normal}
.enchanter-affix.tier0-fixed.tier0-fixed small{display:block;margin-top:4px;color:#fff0c8;font-size:.875rem;line-height:1.45;white-space:normal;overflow-wrap:anywhere}
.enchanter-affix.tier0-fixed .enchanter-affix-main small{white-space:normal}
.enchanter-affix.tier0-fixed.tier0-fixed small.tier0-fixed-note{color:var(--uk-ivory-dim);font-size:.8125rem}
.tier0-lock{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:48px;color:var(--uk-gold-text);font-size:.75rem}
.tier0-lock svg{width:18px;height:20px}
/* Tier 0 marks outside the card (round three): the loot line, the bag tile and the comparison say "Tier 0" in gold, in words. */
.tier0-tag{display:inline-block;margin-left:6px;padding:0 6px;border:1px solid var(--uk-gold);border-radius:var(--uk-radius);color:var(--uk-gold-text);font-size:.75rem;letter-spacing:.04em;white-space:nowrap}
/* The gold Tier 0 frame on every tile, card and list row that uses the rarity class (bag, chests, market, inspection, salvage list, loot flight) and on
   the Enchanter's and Blacksmith's equipment list (public/workshop-view.js t0Tile). Nothing moves: an outline and shadows only.
   Tidy-up round: the frame wins on WEIGHT. The class is written four times (0,4,0), so it beats `.item-tile:has(.oath-gear)` (0,2,0, public/oath.css:
   box-shadow:none, which had left only a thin inner line on a bag tile), `.workshop-page .workshop-item[aria-pressed=true]` (0,3,0) and every other
   rarity, list or theme rule of a tile, whatever the order of the stylesheets.
   Seen at a glance, also on an Epic tile whose own border is gold: a pale ring 3 px wide just inside the tile's edge (an outline is painted over the item
   picture), and outside the edge a dark line, a gold ring and a gold glow. */
.tier0-item.tier0-item.tier0-item.tier0-item{outline:3px solid #fff1b8;outline-offset:-5px;box-shadow:0 0 0 1px #1a1206,0 0 0 3px #ffd86b,0 0 14px 4px #f0ce83b3}
/* The states the outline would otherwise hide, one level heavier (0,5,0): keyboard focus keeps the focus ring, a selected tile (market bag, account
   chest) keeps its selection ring outside the tile, and the chosen row of the equipment list keeps its gold bar on the left. */
.tier0-item.tier0-item.tier0-item.tier0-item:focus-visible{outline:3px solid var(--uk-focus);outline-offset:1px}
.tier0-item.tier0-item.tier0-item.tier0-item.selected{outline:2px solid #f0d38b;outline-offset:1px}
.workshop-item.tier0-item.tier0-item.tier0-item.tier0-item[aria-pressed=true]{box-shadow:inset 3px 0 #cfad6c,0 0 0 1px #1a1206,0 0 0 3px #ffd86b,0 0 14px 4px #f0ce83b3}
.tier0-compare-note{margin:6px 0;padding:6px 8px;border:1px solid var(--uk-gold);border-radius:var(--uk-radius);color:#fff0c8;font-size:.875rem;line-height:1.45;overflow-wrap:anywhere}
/* Closeable banners (public/banner-close.js): every [data-banner] gets a × that hides it until what it says changes. */
[data-banner][hidden],[data-banner-host][hidden]{display:none!important}
.banner-has-corner-close{position:relative;padding-right:58px!important}
.banner-has-corner-close>.banner-close{position:absolute;top:6px;right:6px;margin:0;width:44px;min-width:44px;min-height:44px;font:600 1.125rem/1 system-ui}
.next-step.banner-has-corner-close>.banner-close{top:50%;transform:translateY(-50%)}
/* Earned titles (IRP_EARNED_TITLES_VERSION): the title under the name, and the Titles list on the character screen. */
.uk-doll-name .uk-doll-title{color:var(--uk-gold,#e2b85c);font-style:italic}
.uc-titles .uc-title-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:8px;margin-top:8px}
.uc-title{display:grid;gap:2px;min-height:44px;padding:8px 10px;text-align:left;border:1px solid rgba(226,184,92,.35);border-radius:6px;background:rgba(0,0,0,.25);color:inherit}
.uc-title small{color:var(--uk-ivory-dim);font-size:.8rem}
.uc-title.is-selected{border-color:var(--uk-gold,#e2b85c);box-shadow:0 0 0 1px var(--uk-gold,#e2b85c) inset}
.uc-title.is-locked{opacity:.55}
/* Zone boss streak (IRP_ZONE_BOSS_STREAK_VERSION, default off; lib/zone-boss-streak.js): one small full-width line in the zone controls, only while a streak is live. */
.shell .field-controls>.field-streak,.field-controls>.field-streak{display:block;grid-column:1/-1;flex-basis:100%;min-width:0;margin:0;padding:2px 4px;color:#f0d38b;font-size:.75rem;line-height:1.35;text-align:center;overflow-wrap:anywhere}
.shell .field-controls>.field-streak[hidden],.field-controls>.field-streak[hidden]{display:none}
/* The level-up prompt and the first-fight card sit outside the page shell, so section 9 never reached them and they kept the old red button.
   They use the same gold main button (13 Oct pass). */
:is(.next-prompt-host,.combat-intro-card) :is(.red-button,.uk-btn-primary){min-height:var(--uk-tap);padding:9px 18px;border:1px solid #e6c98f;border-radius:var(--uk-radius);background:linear-gradient(180deg,#c9a468,#8f6f3c);color:#1b1509;font:700 .8125rem/1.3 system-ui;text-decoration:none;box-shadow:inset 0 1px 0 #fff2c95c,inset 0 0 0 2px #8a682f66,0 2px 5px #0005;cursor:pointer}
:is(.next-prompt-host,.combat-intro-card) :is(.red-button,.uk-btn-primary):hover:not(:disabled){border-color:#fbe3ac;background:linear-gradient(180deg,#d8b674,#9c7a44)}
:is(.next-prompt-host,.combat-intro-card) :is(.red-button,.uk-btn-primary):disabled{border-color:#7a6b4c;color:#3a3427;filter:none}
/* Release polish QA (14 Oct): the party invitation pop-up also sits outside the shell, so its Accept kept the old red; the same gold main button. */
#partyInvitations :is(.red-button,.uk-btn-primary){min-height:var(--uk-tap);padding:9px 18px;border:1px solid #e6c98f;border-radius:var(--uk-radius);background:linear-gradient(180deg,#c9a468,#8f6f3c);color:#1b1509;font:700 .8125rem/1.3 system-ui;text-decoration:none;text-shadow:none;box-shadow:inset 0 1px 0 #fff2c95c,inset 0 0 0 2px #8a682f66,0 2px 5px #0005;cursor:pointer}
#partyInvitations :is(.red-button,.uk-btn-primary):hover:not(:disabled){border-color:#fbe3ac;background:linear-gradient(180deg,#d8b674,#9c7a44)}
#partyInvitations :is(.red-button,.uk-btn-primary):disabled{border-color:#7a6b4c;color:#3a3427;filter:none}
/* The prompt keeps its narrow side padding, so Level N!, Spend points and the close button still share one line in its 360 px box. */
.next-prompt-host .next-prompt :is(.red-button,.uk-btn-primary){padding:0 12px}
/* Touch screens keep :hover on the last tapped tab, and the hover look (gold edge) then read as a second selected tab next to the real one
   (13 Oct pass, phone Town tabs). Where there is no real hover, an unselected tab keeps its resting look. */
@media(hover:none){:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) :is(.section-tabs,.region-tabs,.market-tabs,.rank-tabs,.notice-board-tabs,.workshop-service-tabs,.inventory-tabs,.inventory-dialog-tabs,.dev-tabs,.crown-categories,.chat-channels,.tree-toolbar>nav,.uk-tabs)>:is(button,a):hover:not(:disabled):not(.active,.selected,.chosen,[aria-selected="true"],[aria-pressed="true"],[aria-current="page"],[aria-current="true"]),
:is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices):is(.shell,.modal-backdrop,.handbook,.loot-roll-window,.adventure-notices) .market-category-group>button:hover:not(:disabled):not(.active,.selected,.chosen,[aria-selected="true"],[aria-pressed="true"],[aria-current="page"],[aria-current="true"]){border-color:var(--uk-gold-dim);background:var(--uk-tab-surface);color:#d9d3c2}}
/* Tier III Ultimates (IRP_SKILL_TIER3_VERSION=1; only Ultimate nodes and the Ultimate slot carry these classes, so with the switch off nothing matches).
   The tree node wears a gold double ring in every state, dimmer before it is learned (as other skills show available/learned), and the ability-bar slot header gets a native star glyph. */
.class-tree-skill.ultimate .class-tree-node:not(.selected){border-color:#8f7643!important;box-shadow:0 3px 9px #000b,0 0 0 4px #0d1420,0 0 0 5.5px #a3854a99!important}
.class-tree-skill.ultimate.available .class-tree-node:not(.selected){border-color:#c9a254!important;box-shadow:0 3px 9px #000b,0 0 0 4px #0d1420,0 0 0 5.5px #c9a254cc,0 0 16px #c9a25444!important}
.class-tree-skill.ultimate.learned .class-tree-node:not(.selected){border-color:#f2d27e!important;box-shadow:0 0 0 4px #171b20,0 0 0 6.5px #e6bf62,0 0 26px #e6bf6270!important}
.class-tree-skill.ultimate.locked .class-tree-node:not(.selected){border-color:#6d6450!important;box-shadow:0 3px 9px #000b,0 0 0 4px #0d1420,0 0 0 5.5px #6d645099!important}
.ultimate-glyph{display:inline-block;flex:none;width:1.25em;height:1.25em;margin-right:.4em;vertical-align:-.3em;line-height:0}
.ultimate-glyph svg{width:100%;height:100%;fill:#f1cf78;stroke:#5a3f12;stroke-width:.8;stroke-linejoin:round;filter:drop-shadow(0 0 3px #e6bf6288)}
/* Sound settings (IRP_SOUND_VERSION; public/sound-fx.js panel()): the toggle sits in the dialog's .checkbox-row, the volume slider takes the gold accent and shows its value as a %. */
.sound-settings{display:grid;gap:6px;margin:4px 0 8px}
.sound-settings h3{margin:0}
.sound-settings .checkbox-row input{accent-color:#b99956}
.sound-settings .checkbox-row{margin:0}
.sound-settings .sound-volume{display:grid;gap:4px;min-height:44px;font-size:.8125rem;color:#e6dbc4}
.sound-settings .sound-volume-line{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.sound-settings .sound-volume output{min-width:3.5ch;text-align:right;font-variant-numeric:tabular-nums;color:#e2c27f;font-weight:600}
.sound-settings input[type=range]{width:100%;min-height:32px;margin:0;accent-color:#b99956;cursor:pointer}
/* Earned titles on the default Hero screen (IRP_EARNED_TITLES_VERSION, IRP_UI_CHARACTER_VERSION off; public/expansion-ui.js earnedTitles): the chosen title under the name and the Titles list. */
.exp-heading .exp-heading-title{margin:2px 0 0;color:#e2b85c;font:italic 1.125rem/1.3 Georgia,'Times New Roman',serif;letter-spacing:.02em;text-shadow:0 1px 3px #000}
.legacy-titles{margin:0 0 18px;min-width:0}
.legacy-titles .uc-titles{border:1px solid var(--exp-border,#625337);border-radius:6px;background:linear-gradient(180deg,#14212acc,#0b1217e6);padding:0 14px}
.legacy-titles .uc-titles>summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font:1.0625rem/1.3 Georgia,'Times New Roman',serif;color:var(--exp-gold,#d2b576)}
.legacy-titles .uc-titles[open]{padding-bottom:14px}
.legacy-titles .uc-titles .small-note{margin:4px 0 0;color:#aaa28f;font-size:.8125rem}
.legacy-titles .uc-title{cursor:pointer;font:inherit;color:#e7ddc6}
.legacy-titles .uc-title b{font-family:Georgia,'Times New Roman',serif;font-weight:normal;color:#ead6a4}
.legacy-titles .uc-title small{color:#b8ae98}
.legacy-titles .uc-title.is-locked{cursor:default}
.legacy-titles .uc-title-list>.secondary{min-height:44px;grid-column:1/-1;justify-self:start}
/* QA 2026-10-16: on a phone the header text runs across the whole banner, so the painted right side (lamps, coins) sat under the words. Keep the veil strong across the full width there. */
@media(max-width:899px){.uk-head::before{background:linear-gradient(90deg,#0c1723f2,#0c1723e6 60%,#0c1723c4)}.uk-head-text h1{text-shadow:0 1px 4px #000}}
/* QA 2026-10-16: header stat numbers share one baseline when a label wraps to two lines (kept after section 25 because the kit above is frozen). */
.uk-stat{justify-content:flex-end}
/* Auction House buy-order picker: the chosen category and material (IRP_UI_BUY_CATEGORIES_VERSION). */
.shell .ah-page .ah-bcat.is-on,.shell .ah-page .ah-bmat.is-on{border-color:var(--uk-gold,#e0b85a);box-shadow:inset 0 0 0 2px var(--uk-gold,#e0b85a)}

