*{box-sizing:border-box}:root{color:#1d2f32;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f6ead0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}html,body,#root{width:100%;min-width:100%;min-height:100%;margin:0}body{background:linear-gradient(140deg,#35686829,#0000 36%),linear-gradient(40deg,#a5743d29,#0000 42%),#f6ead0;min-height:100vh;overflow:hidden}button,input,select,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent}.app-shell{width:100vw;min-height:100vh;padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));place-items:center;display:grid}.screen-frame{background:linear-gradient(#fffceeeb,#f3e2bee6),repeating-linear-gradient(90deg,#3a5b540f 0 1px,#0000 1px 48px);border:3px solid #24484c;border-radius:8px;width:min(100%,1180px);height:min(100vh - 32px,820px);min-height:680px;position:relative;overflow:hidden;box-shadow:0 24px 70px #1c2a263d}.role-shell{background:linear-gradient(135deg,#2642462e,#f4d0781f),#eef1e8}.role-screen-frame{background:#fffceff5;border:2px solid #24484c38;border-radius:8px;grid-template-rows:auto 1fr;width:min(100%,1180px);height:min(100vh - 32px,820px);min-height:680px;display:grid;overflow:hidden;box-shadow:0 22px 56px #1c2a262e}.role-top-bar{color:#fff7d9;background:#24484c;grid-template-columns:minmax(190px,auto) 1fr;align-items:center;gap:18px;padding:18px 24px;display:grid}.role-top-bar h1,.role-top-bar p{margin:0}.role-top-bar h1{color:#fff8dd;font-size:clamp(1.35rem,2.1vw,2rem);line-height:1.15}.role-top-bar .eyebrow{color:#f4d078}.role-nav{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.role-nav span,.role-nav button{color:#21383b;background:#f4d078;border:1px solid #fff7d938;border-radius:8px;align-items:center;min-height:38px;padding:0 12px;font-size:.9rem;font-weight:900;display:inline-flex}.role-nav button{cursor:pointer}.role-nav button.active{color:#24484c;background:#fff8dd;box-shadow:inset 0 0 0 2px #f4d078bf}.role-admin .role-top-bar{background:#2c3942}.role-admin .role-nav span,.role-admin .role-nav button{color:#fff7d9;background:#5f6f7a}.role-admin .role-nav button.active{color:#24313a;background:#f3ead0}.role-content{min-height:0;padding:28px 36px 40px;overflow:auto}.content{height:100%;padding:82px 40px 98px;overflow:auto}.top-bar{z-index:5;color:#fff7d9;background:#224b51f0;justify-content:space-between;align-items:center;gap:16px;height:66px;padding:12px 24px;display:flex;position:absolute;inset:0 0 auto}.brand-mark,.growth-pill,.bottom-nav button,.primary-action,.secondary-action,.danger-action,.task-row button,.adventure-card button,.job-card button,.decision-grid button,.combat-actions button,.map-node,.file-import{cursor:pointer;touch-action:manipulation;border:0;border-radius:8px;min-height:48px}.brand-mark{color:#fff7d9;background:0 0;padding:0 12px;font-weight:900}.growth-pill{color:#23373b;background:#f4d078;padding:0 18px;font-weight:800;box-shadow:inset 0 -3px #0000001f}.bottom-nav{z-index:5;background:#fff9e6f0;border-top:2px solid #24484c2e;grid-template-columns:repeat(3,1fr);gap:10px;height:78px;padding:10px 22px 14px;display:grid;position:absolute;inset:auto 0 0}.bottom-nav button{color:#263f42;background:#e4d3a6;flex-direction:column;justify-content:center;align-items:center;gap:4px;font-size:.98rem;font-weight:800;display:flex}.bottom-nav button.active{color:#fff7d9;background:#24484c}.nav-icon{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;width:26px;height:26px}.nav-icon path:first-child,.nav-icon circle{fill:currentColor;opacity:.18}.install-hint{z-index:9;color:#fff7d9;background:#24484cf0;border:2px solid #f4d078b8;border-radius:8px;grid-template-columns:1fr auto;gap:4px 10px;max-width:330px;padding:12px 14px;display:grid;position:absolute;top:76px;right:22px;box-shadow:0 12px 28px #1626213d}.legacy-entry,.dungeon-limit-banner,.pairing-code-card{background:#fff9e6d6;border:2px solid #24484c2e;border-radius:8px;margin-top:16px;padding:14px}.legacy-entry{max-width:420px}.legacy-entry p,.pairing-code-card small{margin:6px 0 10px}.dungeon-limit-banner{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:10px;display:flex}.dungeon-limit-banner span{background:#24484c1a;border-radius:8px;padding:8px 10px;font-weight:800}.pairing-code-card{text-align:center;gap:6px;display:grid}.pairing-code-card strong{letter-spacing:0;color:#24484c;font-size:2.6rem}.install-hint strong,.install-hint span{grid-column:1}.install-hint button{color:#23373b;background:#f4d078;border:0;border-radius:50%;grid-area:1/2/span 2;width:34px;height:34px;font-weight:950}.inline-error,.loading-panel,.form-message{color:#8b2f25;font-weight:700}.level-up-overlay{z-index:20;pointer-events:none;background:radial-gradient(circle,#f4d0783d,#0000 58%);place-items:center;display:grid;position:absolute;inset:0}.level-up-overlay div{text-align:center;background:#24484cf0;border:3px solid #f4d078cc;border-radius:8px;min-width:320px;padding:28px;animation:5s forwards levelUpPop;box-shadow:0 0 34px #f4d078b3}.level-up-overlay span,.level-up-overlay strong{color:#f4d078;font-weight:950;display:block}.level-up-overlay span{font-size:2.4rem}.level-up-overlay strong{overflow-wrap:anywhere;font-size:3rem}.level-up-overlay p{color:#fff7d9;margin:0}.profile-name-overlay{z-index:22;background:#172f346b;place-items:center;padding:24px;display:grid;position:absolute;inset:0}.profile-name-card{background:#fff8df;border:3px solid #f4d078c7;border-radius:8px;gap:16px;width:min(520px,100%);padding:28px;display:grid;box-shadow:0 24px 64px #16262152}.growth-flash{z-index:19;color:#23373b;text-align:center;pointer-events:none;background:#f4d078;border-radius:8px;gap:4px;min-width:230px;padding:14px 18px;animation:2.8s forwards growthFlash;display:grid;position:absolute;top:78px;left:50%;box-shadow:0 16px 32px #24484c3d}.growth-flash strong,.growth-flash span{font-weight:950}.growth-flash small{color:#405a5b;font-weight:800}.reward-adjustment{color:#8a5a16;font-weight:900}.loading-panel{place-items:center;min-height:400px;display:grid}.page{flex-direction:column;gap:24px;min-height:100%;display:flex}.narrow-page{max-width:760px;margin:0 auto}.eyebrow{color:#6f4d24;margin:0 0 8px;font-size:.86rem;font-weight:900}h1,h2,p{margin-top:0}h1{color:#172f34;max-width:880px;margin-bottom:12px;font-size:clamp(2rem,4.8vh,4rem);font-weight:950;line-height:1.08}h2{color:#1d3438;margin-bottom:8px;font-size:1.35rem}p{color:#405a5b;font-size:1.06rem;line-height:1.58}.lead{color:#2f5558;max-width:620px;font-size:1.35rem}.welcome-profile-page{justify-content:center}.hero-input{max-width:460px}.hero-input input{min-height:58px;font-size:1.2rem;font-weight:850}.start-page{grid-template-columns:1.05fr .95fr;align-items:center;gap:36px;min-height:100%;padding:34px;display:grid}.start-copy{z-index:2;position:relative}.start-copy h1{letter-spacing:0;font-size:clamp(3rem,7vh,6rem)}.start-art{background:linear-gradient(#8fc7bd 0 46%,#dfc17a 46% 100%);border:3px solid #224b514d;border-radius:8px;min-height:500px;position:relative;overflow:hidden}.sun-disc{background:#f4d078;border-radius:50%;width:150px;height:150px;position:absolute;top:48px;left:72px;box-shadow:0 0 0 16px #f4d0783d}.mountain{clip-path:polygon(0 100%,20% 32%,35% 72%,50% 18%,70% 80%,86% 36%,100% 100%);height:260px;position:absolute;bottom:130px;left:-10%;right:-10%}.ridge-back{background:#5c8176}.ridge-front{transform-origin:bottom;background:#315f5c;bottom:76px;transform:scaleY(.72)}.road{clip-path:polygon(42% 0,58% 0,100% 100%,0 100%);background:#a5743d;width:42%;height:260px;position:absolute;bottom:-80px;left:34%}.action-row{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.primary-action,.secondary-action,.danger-action,.file-import{color:#fff7d9;background:#2f6d61;justify-content:center;align-items:center;min-width:180px;padding:0 22px;font-weight:900;text-decoration:none;display:inline-flex;box-shadow:inset 0 -4px #00000029}.secondary-action{color:#20383b;background:#e6c46b}.danger-action{background:#934237}.wide-button{width:100%}.form-grid{grid-template-columns:repeat(2,minmax(220px,1fr));gap:16px;display:grid}label{color:#2a4548;flex-direction:column;gap:8px;font-weight:850;display:flex}input,select,textarea{color:#1c3033;background:#fffcefe6;border:2px solid #24484c38;border-radius:8px;width:100%;min-height:50px;padding:0 14px}textarea{resize:vertical;min-height:96px;padding:12px 14px}.story-page{text-align:center;justify-content:center;align-items:center}.story-card{background:#fffae8c2;border:3px solid #2f6d6142;border-radius:8px;width:min(820px,100%);padding:44px}.section-heading,.home-hero{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.points-card,.stat-card{color:#fff7d9;background:#24484c;border-radius:8px;min-width:150px;padding:16px 18px;font-weight:900}.job-grid,.entry-grid,.skill-grid,.stat-grid,.decision-grid,.adventure-list{gap:16px;display:grid}.job-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.entry-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.reality-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.ongoing-card,.challenge-panel,.long-card,.dungeon-catalog-card{background:#fffae8c2;border:2px solid #24484c29;border-radius:8px}.dungeon-catalog-card{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;padding:16px;display:flex}.dungeon-catalog-card-art{color:#fff8e6;background-position:50% 58%;background-size:cover;min-height:184px;box-shadow:inset 0 0 0 1px #e6d3a43d,0 16px 30px #1c2a2629}.dungeon-catalog-card-art>div{z-index:1;position:relative}.dungeon-catalog-card-art .eyebrow,.dungeon-catalog-card-art p,.dungeon-catalog-card-art h2{color:inherit}.dungeon-catalog-card-art .dungeon-catalog-meta{color:#fff8e6}.dungeon-catalog-card h2,.dungeon-catalog-card p{margin:0}.dungeon-catalog-meta{text-align:right;color:#315b5e;gap:6px;display:grid}.ongoing-card{grid-column:1/-1;min-height:150px;padding:20px}.mini-list{flex-wrap:wrap;gap:10px;display:flex}.mini-list span,.task-badge,.reason-text,.milestone-list span{color:#24484c;background:#24484c1a;border-radius:999px;align-items:center;min-height:30px;padding:4px 10px;font-size:.9rem;font-weight:850;display:inline-flex}.reason-text{background:#f4d07842;border-radius:8px}.skill-grid,.adventure-list,.stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.job-card,.entry-card,.skill-card,.adventure-card,.task-row,.record-row,.character-panel{background:#fffae8c2;border:2px solid #24484c29;border-radius:8px}.job-card,.skill-card,.adventure-card{flex-direction:column;gap:10px;min-height:220px;padding:18px;display:flex}.job-card strong,.adventure-card strong{color:#7a4f18;margin-top:auto}.job-card button,.adventure-card button,.task-row button,.decision-grid button,.combat-actions button{color:#fff7d9;background:#2f6d61;padding:0 16px;font-weight:900}button:disabled{cursor:not-allowed;color:#f8efd2;box-shadow:none;background:#a8a28b}.entry-card{text-align:left;background:linear-gradient(135deg,#fffcefd1,#fffcef6b),#7fb7a7;flex-direction:column;justify-content:flex-end;min-height:230px;padding:26px;display:flex}.entry-card span{color:#173034;font-size:2rem;font-weight:950}.entry-card small{color:#284749;margin-top:8px;font-size:1.05rem;font-weight:760}.adventure-entry{background:linear-gradient(135deg,#fffcefcc,#fffcef5c),#b28448}.task-list,.record-list,.settings-stack{gap:14px;display:grid}.parent-page h1{margin-bottom:0}.parent-tabs{flex-wrap:wrap}.school-plan-page{gap:18px;display:grid}.school-plan-notice,.school-plan-toolbar,.school-plan-understanding,.school-plan-warnings,.school-plan-draft{background:#fffcefeb;border:1px solid #2f6d6140;border-radius:12px;padding:18px;box-shadow:0 8px 22px #3d432d14}.school-plan-notice{color:#204a43;background:linear-gradient(135deg,#e4f2df,#fff8df)}.school-plan-notice p,.school-plan-notice small,.school-plan-source p,.school-plan-draft>p{margin:6px 0 0}.school-plan-toolbar{justify-content:space-between;align-items:center;gap:14px;display:flex}.school-plan-toolbar>div:first-child{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.school-plan-toolbar strong{color:#7a4f18;font-size:1.2rem}.school-plan-source{gap:12px;display:grid}.school-plan-source textarea{resize:vertical;width:100%}.compact-heading{align-items:center;margin-bottom:12px}.plan-status{color:#204a43;background:#dcebd8;border-radius:999px;padding:7px 11px;font-weight:900}.plan-status.archived{color:#665b4a;background:#e7e0d4}.plan-status.active{color:#145345;background:#ccebd9}.plan-status.paused{color:#76531e;background:#f4dfae}.intent-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;margin-top:12px;display:grid}.intent-grid article{background:#2f6d6117;border-radius:9px;gap:5px;padding:12px;display:grid}.school-plan-warnings p{background:#fff1c4;border-radius:8px;margin:8px 0 0;padding:9px 11px}.school-plan-warnings p.conflict{color:#7d2f1e;background:#fde1d7}.school-plan-days{gap:12px;margin-top:14px;display:grid}.school-plan-day{background:#fffdf3;border:1px solid #2f6d6133;border-radius:10px;padding:14px}.school-plan-day.conflict{background:#fff5ef;border-color:#bc6650}.school-plan-day>header{justify-content:space-between;gap:12px;margin-bottom:5px;display:flex}.school-plan-day>header div{display:grid}.school-plan-day>header span{color:#2f6d61;font-weight:900}.school-plan-items{gap:9px;margin-top:10px;display:grid}.school-plan-item{background:#e6c46b2e;border-radius:8px;grid-template-columns:minmax(180px,1fr) auto;align-items:end;gap:10px;padding:10px;display:grid}.school-plan-item-controls{align-items:end;gap:8px;display:flex}.school-plan-item-controls label{gap:3px;font-size:.78rem;font-weight:800;display:grid}.school-plan-item-controls input{width:86px}.archived-note{color:#665b4a;margin-top:16px;font-weight:800}.task-management-heading{padding:8px 4px}.task-management-heading p{margin-bottom:0}.parent-grid{grid-template-columns:minmax(320px,.9fr) minmax(420px,1.1fr);align-items:start;gap:16px;display:grid}.card-actions{flex-wrap:wrap;gap:8px;display:flex}.card-actions button,.secondary-mini{color:#fff7d9;background:#2f6d61;border:0;border-radius:8px;min-height:42px;padding:0 12px;font-weight:900}.task-detail-panel{background:#2f6d611a;border-radius:8px;padding:12px}.task-detail-panel h3,.task-detail-panel p:last-child{margin-bottom:0}.secondary-mini,.card-actions button:nth-child(n+2){color:#20383b;background:#e6c46b}.challenge-panel,.long-card{padding:16px}.milestone-list{gap:8px;margin:12px 0;display:grid}.milestone-list .completed{color:#2f6d61;background:#e1f0dc}.milestone-list .awaitingParent{color:#563918;background:#f4d078}.task-row,.record-row{grid-template-columns:1fr auto auto;align-items:center;gap:16px;min-height:88px;padding:16px 18px;display:grid}.task-row h2,.task-row p{margin-bottom:4px}.task-row strong,.record-row strong{color:#7a4f18;font-size:1.2rem}.stars{color:#b27726;font-size:1.1rem;font-weight:900}.stat-card{flex-direction:column;gap:8px;display:flex}.stat-card strong{font-size:2rem}.compact-exp,.experience-card{gap:8px;max-width:420px;display:grid}.compact-exp{color:#24484c;grid-template-columns:auto 1fr auto;align-items:center;font-weight:900}.exp-track{background:#dcc9a1;border:2px solid #24484c2e;border-radius:999px;height:14px;overflow:hidden}.exp-track.large{height:22px}.exp-fill{border-radius:inherit;background:linear-gradient(90deg,#2f6d61,#f4d078);height:100%;transition:width .9s}.experience-card{background:#e8d8aac7;border-radius:8px;margin:10px 0 16px;padding:14px}.experience-label{color:#23373b;justify-content:space-between;gap:12px;font-weight:900;display:flex}.experience-card p{margin-bottom:0;font-size:.96rem}.record-row{grid-template-columns:1fr auto}.character-panel{grid-template-columns:180px 1fr;align-items:center;gap:28px;min-height:300px;padding:30px;display:grid}.profile-card{background:#fffae8c2;border:2px solid #24484c29;border-radius:8px;gap:14px;padding:20px;display:grid}.character-identity-heading{align-items:flex-start}.identity-facts{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.identity-facts span,.state-chip{color:#24484c;background:#24484c1a;border-radius:999px;padding:6px 10px;font-size:.82rem;font-weight:850}.character-section{background:#fffae8c2;border:2px solid #24484c29;border-radius:8px;gap:14px;padding:20px;display:grid}.compact-heading{margin:0}.compact-heading h2{font-size:1.35rem}.progression-stage{color:#6f4d24;font-weight:850}.training-summary{background:#e8d8aa85;border-radius:8px;gap:4px;padding:12px;display:grid}.training-summary span{font-weight:900}.growth-balance-grid,.combat-stat-grid,.equipment-grid,.skill-identity-grid{gap:12px;display:grid}.growth-balance-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.growth-balance-grid>div,.combat-stat-grid>div{background:#e8d8aa85;border-radius:8px;gap:5px;padding:14px;display:grid}.growth-balance-grid span,.combat-stat-grid span{color:#6f4d24;font-weight:850}.growth-balance-grid strong,.combat-stat-grid strong{color:#24484c;font-size:1.55rem}.growth-balance-grid small,.combat-stat-grid small,.equipment-card small{color:#405a5b;line-height:1.4}.combat-stat-grid,.compact-attribute-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.compact-attribute-grid .attribute-control{min-height:100px}.equipment-authority-note{color:#405a5b;margin:0}.equipment-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.equipment-card{background:#fffae8d1;border:2px solid #24484c24;border-radius:8px;grid-template-columns:76px 1fr;align-items:center;gap:14px;padding:14px;display:grid}.equipment-card.active{border-color:#2f6d61a6;box-shadow:inset 0 0 0 2px #2f6d611a}.equipment-card .item-icon{width:72px;height:72px}.equipment-card-heading{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.equipment-card-heading h3{margin:0;font-size:1.05rem}.equipment-card-heading span{color:#7a4f18;font-size:.86rem;font-weight:900}.equipment-card p{color:#405a5b;margin:5px 0;font-size:.9rem}.equipment-state-active,.equipment-state-owned{margin:5px 0;font-size:.88rem;display:block}.equipment-state-active{color:#2f6d61}.equipment-state-owned{color:#6f4d24}.skill-identity-section{background:radial-gradient(circle at 92% 8%,#8bd0ff2e,#0000 26%),#fffae8c2}.skill-identity-section h2{margin:0}.skill-identity-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.skill-identity-grid span{color:#2c484b;background:#24484c14;border-radius:8px;padding:10px;font-size:.92rem;font-weight:800}.motto-line{color:#6f4d24;margin:0;font-weight:850}.character-panel-rich{grid-template-columns:220px 1fr}.avatar-column{justify-items:center;gap:12px;display:grid}.avatar-sigil{aspect-ratio:1;color:#f4d078;background:#24484c;border-radius:50%;place-items:center;width:160px;font-size:5rem;font-weight:950;display:grid}.job-avatar,.custom-avatar{aspect-ratio:1;background:radial-gradient(circle at 50% 28%,#fff7d96b,#0000 22%),#24484c;border:3px solid #24484c3d;border-radius:8px;width:180px}.custom-avatar{object-fit:cover}.job-avatar{position:relative;overflow:hidden;box-shadow:0 16px 28px #16262138}.job-avatar span{display:block;position:absolute}.avatar-head{background:#e9c39a;border:3px solid #1c303357;border-radius:50%;width:46px;height:46px;top:26px;left:67px}.avatar-body{background:#8a9689;border-radius:26px 26px 14px 14px;width:68px;height:86px;top:72px;left:56px}.avatar-cape{background:#7c3832bd;border-radius:50% 50% 10px 10px;width:90px;height:88px;top:76px;left:46px}.avatar-tool{background:#d7c49b;border-radius:999px;width:18px;height:88px;top:70px;right:24px;transform:rotate(-16deg)}.avatar-magic{opacity:0;border-radius:50%;width:42px;height:42px;top:34px;right:22px}.job-avatar-knight .avatar-body{background:linear-gradient(90deg,#8e9ca0,#d2d7d2,#6d7779)}.job-avatar-knight .avatar-tool{background:#56656a;border:4px solid #d2d7d2;border-radius:45%;width:48px;height:62px;top:86px;right:14px}.job-avatar-mage{background:radial-gradient(circle at 78% 25%,#8bd0ff7a,#0000 22%),#2c4f5b}.job-avatar-mage .avatar-body,.job-avatar-mage .avatar-cape{background:#59649b}.job-avatar-mage .avatar-tool{background:#6b4b2c}.job-avatar-mage .avatar-magic{opacity:1;background:#b9e8ff;box-shadow:0 0 22px #8bd0ff,0 0 46px #8bd0ff9e}.job-avatar-ranger{background:radial-gradient(circle at 72% 26%,#d6c47a6b,#0000 22%),#315f5c}.job-avatar-ranger .avatar-body{background:#517d55}.job-avatar-ranger .avatar-tool{background:0 0;border:6px solid #8a6332;border-radius:50%;width:86px;height:100px;top:52px;right:8px}.avatar-import{min-width:150px}.attribute-grid{grid-template-columns:repeat(2,minmax(140px,1fr));gap:14px;display:grid}.attribute-grid>span,.attribute-control{color:#23373b;background:#e8d8aa;border-radius:8px;padding:14px;font-weight:900}.attribute-control{grid-template-columns:1fr auto;align-items:center;gap:6px 10px;min-height:122px;display:grid}.attribute-control small{color:#6f4d24;grid-column:span 2}.attribute-control button{color:#fff7d9;background:#2f6d61;border:0;border-radius:50%;width:46px;height:46px;font-size:1.4rem;font-weight:950}.bag-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.bag-grid article{background:#fffae8b8;border:1px solid #24484c24;border-radius:8px;padding:14px}.gate-panel{text-align:left;max-width:700px;margin:0 auto}.legacy-loot{margin-top:12px}.skill-card.active{background:#e1f0dc;border-color:#2f6d61}.skill-card .progress-track,.cloud-status-card .progress-track{margin-block:8px}.cloud-status-card{background:radial-gradient(circle at 8% 0,#70b7a33d,#0000 34%),#fffae8d6;border:2px solid #24484c29;border-radius:8px;grid-template-columns:1fr auto;align-items:center;gap:14px;padding:18px;display:grid}.cloud-status-card h2{margin:0 0 6px;font-size:1.25rem}.cloud-status-card p{margin:0}.cloud-status-card small{color:#405a5b;font-weight:800}.world-page{background:linear-gradient(#628e7838,#53483a14),0 0}.map-path{gap:10px;width:min(560px,100%);margin:0 auto;display:grid}.map-node{color:#fff7d9;text-align:left;background:#315f5c;grid-template-columns:48px 1fr;align-items:center;gap:6px 14px;min-height:104px;padding:14px 18px;font-size:1.05rem;font-weight:900;display:grid;position:relative}.map-node:disabled{cursor:default}.node-status-mark{background:#fff7d92e;border:2px solid #fff7d980;border-radius:50%;grid-row:span 4;place-items:center;width:40px;height:40px;display:grid}.node-stage{color:#f4d078;font-size:.92rem}.map-node strong{font-size:1.35rem}.map-node small,.map-node em{color:inherit}.map-node em{opacity:.88;font-style:normal}.map-node b{color:#f4d078;z-index:1;font-size:1.4rem;position:absolute;bottom:-24px;left:36px}.node-locked{opacity:.52;color:#e7e0c8;background:#5f655f}.node-available{box-shadow:0 0 0 3px #f4d0784d,0 14px 32px #1e3f3933}.node-cleared{background:#476d5b}.node-cleared .node-status-mark{color:#2f6d61;background:#e1f0dc}.boss-node{background:radial-gradient(circle at 78% 20%,#f4d07852,#0000 26%),#4d4a3e;border:2px solid #f4d0789e;min-height:120px}.character-stack{gap:18px;display:grid}.battle-field{grid-template-columns:1fr 1fr;gap:20px;display:grid}.enemy-panel,.player-panel,.battle-log,.pin-panel{background:#fffae8c7;border:2px solid #24484c29;border-radius:8px;padding:22px}meter{width:100%;height:22px}.combat-actions{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.combat-page{gap:16px}.combat-title{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.combat-title h1{margin-bottom:0}.turn-badge{text-align:center;color:#fff7d9;background:#24484c;border-radius:8px;min-width:132px;padding:14px 18px;font-weight:950}.phase-enemy{background:#8a4c30}.phase-victory{background:#2f6d61}.phase-defeat{background:#75534b}.combat-stage{background-position:50%;background-size:cover;border:2px solid #24484c2e;border-radius:8px;grid-template-columns:minmax(320px,.95fr) minmax(260px,1fr);align-items:center;gap:22px;min-height:300px;padding:20px;transition:background-position .9s,filter .3s;display:grid;position:relative;overflow:hidden}.combat-stage:after{content:"";pointer-events:none;opacity:.8;background:radial-gradient(circle at 50% 84%,#d2b4721f,#0000 34%);animation:7s ease-in-out infinite caveAtmosphere;position:absolute;inset:0}.combat-stage>*{z-index:1;position:relative}.monster-zone{place-items:center;min-height:260px;display:grid;position:relative}.monster{filter:drop-shadow(0 24px 18px #1626213d);width:220px;height:190px;position:relative}.monster.slime{width:190px;height:170px}.monster.beetle{width:230px}.monster-production-art{object-fit:contain;object-position:center bottom;width:100%;height:100%;animation:4.8s ease-in-out infinite monsterIdle;display:block;transform:scaleX(-1)}.boss{width:300px;height:235px}.boss-art{object-fit:contain;object-position:center;filter:drop-shadow(0 24px 18px #1626214d);width:100%;height:100%;display:block}.boss-intro-banner{color:#f4e4c0;background:#262d28f0;border:1px solid #d39a52bd;border-radius:6px;justify-items:center;gap:4px;width:min(420px,100%);margin:-4px auto 0;padding:10px 22px;animation:1.25s both bossIntroBanner;display:grid;box-shadow:0 8px 20px #16262133}.boss-intro-banner span{color:#c9d5bf;font-size:.82rem}.boss-intro-banner strong{color:#f0c47d;letter-spacing:.12em;font-size:1.45rem}.boss-intro-active .combat-stage{animation:1.25s both bossIntroStage}.boss-intro-active .boss-art{animation:.9s cubic-bezier(.2,.8,.2,1) both bossIntroBoss}.enemy-status,.player-status,.combat-result,.combat-log{background:#fffae8cc;border:2px solid #24484c29;border-radius:8px}.enemy-status,.player-status,.combat-result{padding:18px}.health-wrap{background:#dfc9a4;border:2px solid #24484c2e;border-radius:999px;width:100%;height:20px;overflow:hidden}.health-fill{border-radius:inherit;background:linear-gradient(90deg,#3f9a68,#7fc66e);height:100%;transition:width .22s}.charge-warning{color:#563918;background:#f4d078;border-radius:8px;margin-top:12px;padding:10px 12px;font-weight:900}.player-combat-panel{grid-template-columns:minmax(260px,.8fr) minmax(320px,1fr);align-items:stretch;gap:16px;display:grid}.player-status{min-height:132px;position:relative}.player-status small{color:#405a5b;margin-top:8px;font-weight:800;display:block}.battle-avatar-row{grid-template-columns:72px 1fr;align-items:center;gap:10px;margin-top:10px;display:grid}.battle-avatar-row .job-avatar,.battle-avatar-row .custom-avatar{width:72px}.battle-avatar-row .avatar-head{width:18px;height:18px;top:12px;left:27px}.battle-avatar-row .avatar-body{width:24px;height:34px;top:30px;left:24px}.battle-avatar-row .avatar-cape{width:32px;height:34px;top:32px;left:20px}.battle-avatar-row .avatar-tool{width:8px;height:34px;top:28px;right:8px}.battle-avatar-row .job-avatar-knight .avatar-tool{width:20px;height:24px;top:36px;right:4px}.battle-avatar-row .job-avatar-ranger .avatar-tool{border-width:3px;width:32px;height:42px;top:22px;right:2px}.battle-avatar-row .avatar-magic{width:16px;height:16px;top:14px;right:8px}.combat-actions button{flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:82px;display:flex}.combat-actions small{color:inherit;font-size:.82rem;font-weight:800}.item-drawer{background:#24484c1a;border:2px solid #24484c29;border-radius:8px;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:14px;display:grid}.item-drawer button{color:#23373b;background:#fffae8e6;border:0;border-radius:8px;justify-items:center;gap:8px;min-height:120px;padding:12px;font-weight:900;display:grid}.item-drawer small{color:#405a5b;margin-top:6px;display:block}.combat-log{max-height:170px;padding:14px 18px;overflow:auto}.combat-log p{color:#2c484b;margin-bottom:6px;font-size:.98rem}.combat-result h2{font-size:2rem}.loot-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0;display:grid}.boss-loot-grid{background:radial-gradient(circle at 50% 0,#f4d0784d,#0000 42%),#3a342b14;border-radius:8px;grid-template-columns:repeat(3,minmax(0,1fr));padding:12px}.loot-card{color:#23373b;background:#fffae8eb;border:2px solid #99b8ceb3;border-radius:8px;place-items:center;gap:6px;min-height:178px;padding:14px;display:grid;position:relative;overflow:hidden;box-shadow:0 0 22px #9bcde961}.loot-card:before,.loot-card:after{content:"";pointer-events:none;position:absolute}.loot-card:before{background:#705b4175;border-radius:2px 5px 3px;width:6px;height:6px;animation:1.8s ease-in-out infinite lootParticles;top:24%;left:18%;box-shadow:42px 12px #705b4147,96px 36px #5e7d5d4d,68px 78px #705b413d}.loot-card.revealed{place-items:start center}.loot-card.revealed .loot-settle{opacity:.58;height:22px;transform:translateY(6px)scale(.86)}.boss-loot-grid .loot-settle{animation-duration:.92s}.boss-loot-grid .loot-vein{filter:drop-shadow(0 0 7px #f4d07857);border-color:#998b5bd1}.boss-loot-grid .loot-dust{background:#594b364d}.loot-card.owned{opacity:.78}.loot-settle{opacity:.92;width:78px;height:48px;animation:.72s ease-out both lootSettle;display:block;position:relative;transform:translateY(0)}.loot-dust,.loot-moss,.loot-vein{display:block;position:absolute}.loot-dust{filter:blur(2px);background:#705b4138;border-radius:50%;height:12px;animation:.72s ease-out both lootDustSettle;bottom:5px;left:8px;right:8px}.loot-moss{background:#789a75;border-radius:2px 5px 3px;width:7px;height:7px;animation:.72s ease-out both lootMossSettle;top:18px;left:18px;transform:rotate(-18deg);box-shadow:30px 8px #9bb28b,46px -3px #5f856c,16px 18px #a6b889}.loot-vein{filter:drop-shadow(0 0 5px #8bbf9961);border-bottom:2px solid #62938485;border-left:2px solid #629384b3;width:25px;height:28px;animation:.72s ease-out both lootVeinSettle;top:9px;left:28px;transform:rotate(-24deg)scaleY(.8)}.item-icon{z-index:1;filter:drop-shadow(0 5px 8px #1c30333d);width:58px;height:58px;position:relative}.loot-card .item-icon{width:72px;height:72px}.loot-card.revealed .item-icon{animation:.36s ease-out both lootItemResolve}.item-drawer .item-icon{width:48px;height:48px}.rarity-bronze,.rarity-common{background:linear-gradient(135deg,#fffae8f0,#d2894838);border-color:#a5622ecc;box-shadow:0 0 22px #a5622e7a,inset 0 0 0 2px #8f522629}.rarity-silver,.rarity-uncommon{background:linear-gradient(135deg,#fffffff5,#bcd5db52);border-color:#d6e0e2e6;box-shadow:0 0 30px #d6e0e2c7,inset 0 0 0 2px #ffffff75}.rarity-gold,.rarity-rare{background:radial-gradient(circle at 50% -8%,#ffed96bf,#0000 42%),linear-gradient(135deg,#fffae8f5,#e8ae3052);border-color:#e4b136e0;box-shadow:0 0 42px #e4b136db,0 0 0 4px #f4d0782e}.rarity-gold:after,.rarity-rare:after{opacity:.65;border:1px solid #f4d07866;border-radius:6px;inset:8px}.rarity-diamond{background:radial-gradient(circle at 50% 12%,#d7f3ffd1,#0000 35%),linear-gradient(135deg,#fffffff0,#8bd0ff42);border-color:#8bd0fff2;box-shadow:0 0 38px #8bd0ffdb,inset 0 0 20px #ffffff80}.rarity-black-gold{color:#fff7d9;background:radial-gradient(circle at 50% 0,#f4d07857,#0000 38%),#1d1c19;border-color:#f4d078e6;box-shadow:0 0 44px #f4d078cc,inset 0 0 0 2px #f4d07857}.loot-card .loot-name{font-size:1.08rem;font-weight:950}.loot-card small,.loot-card em{color:#405a5b;text-align:center}.loot-card em{font-size:.9rem;font-style:normal}.completion-banner,.loot-collection,.settlement-grid article{background:#fffae8d1;border:2px solid #24484c29;border-radius:8px;padding:18px}.completion-banner{background:radial-gradient(circle at 22% 0,#f4d0784d,#0000 36%),#fffae8db;gap:8px;display:grid}.completion-banner strong{color:#2f6d61;font-size:1.35rem}.settlement-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.loot-list{gap:8px;display:grid}.loot-row{background:#e9f7ffb8;border:1px solid #99b8ceb3;border-radius:8px;grid-template-columns:42px 1fr auto auto;align-items:center;gap:10px;min-height:48px;padding:10px 12px;display:grid}.loot-row .item-icon{width:38px;height:38px}.loot-row small{color:#405a5b;font-weight:800}.loot-row strong{color:#24484c}.inventory-categories{justify-content:flex-start}.inventory-grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:10px;display:grid}.inventory-cell{aspect-ratio:1;color:#24484c;text-align:center;background:#e9f7ffc7;border:2px solid #99b8ceb3;border-radius:10px;align-content:center;place-items:center;gap:5px;min-width:0;padding:10px 8px;display:grid;position:relative}.inventory-cell .item-icon{width:48px;height:48px}.inventory-cell span{text-overflow:ellipsis;white-space:nowrap;width:100%;font-weight:900;overflow:hidden}.inventory-cell small{color:#405a5b;font-weight:800}.inventory-cell strong{position:absolute;bottom:5px;right:7px}.inventory-detail{background:#fffae8e6;border:2px solid #99b8ceb3;border-radius:10px;grid-template-columns:64px 1fr auto;align-items:center;gap:14px;padding:14px;display:grid}.inventory-detail .item-icon{width:60px;height:60px}.pagination-controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.pagination-controls span{color:#24484c;font-weight:900}.float-layer{pointer-events:none;position:absolute;inset:0}.float-text{color:#b52920;text-shadow:0 2px #fff7d9;font-size:2rem;font-weight:950;animation:.9s ease-out forwards floatUp;position:absolute;top:30%;left:50%}.player-floats .float-text{top:42%}.float-text.heal{color:#2f8a58}.float-text.miss,.float-text.block{color:#24484c}.effect-player-attack .monster,.effect-shield-bash .monster,.effect-rapid-shot .monster,.effect-fireball .monster{animation:.36s monsterHit}.effect-enemy-attack .player-status,.effect-boss-smash .player-status{animation:.36s playerHit}.effect-boss-charge .boss{animation:.9s ease-in-out infinite bossCharge}.effect-defend .player-status,.effect-dodge .player-status{animation:.52s guardPulse}.effect-fireball .monster-zone:before{content:"";background:radial-gradient(circle,#fff0a2 0 24%,#f06c2f 48%,#0000 70%);border-radius:50%;width:34px;height:34px;animation:.52s ease-out forwards fireballFly;position:absolute;top:42%;left:16%}.effect-shield-bash .monster-zone:before{content:"盾";color:#fff7d9;background:#24484c;border-radius:50%;place-items:center;width:52px;height:52px;font-weight:950;animation:.42s ease-out forwards shieldRush;display:grid;position:absolute;top:42%;left:22%}.effect-rapid-shot .monster-zone:before,.effect-rapid-shot .monster-zone:after{content:"";background:#7a4f18;border-radius:999px;width:70px;height:6px;animation:.34s ease-out forwards arrowFly;position:absolute;left:18%}.effect-rapid-shot .monster-zone:before{top:38%}.effect-rapid-shot .monster-zone:after{animation-delay:.22s;top:52%}@keyframes monsterHit{0%,to{transform:translate(0)}30%{transform:translate(10px)scale(.98)}60%{transform:translate(-8px)}}@keyframes monsterIdle{0%,to{transform:scaleX(-1)translateY(0)}50%{transform:scaleX(-1)translateY(-3px)}}@keyframes playerHit{0%,to{transform:translate(0)}35%{transform:translate(-9px)}65%{transform:translate(7px)}}@keyframes guardPulse{0%,to{box-shadow:none}45%{box-shadow:0 0 0 12px #f4d07866}}@keyframes bossCharge{0%,to{filter:drop-shadow(0 24px 18px #1626213d);transform:translateY(0)}50%{filter:drop-shadow(0 30px 22px #68372461);transform:translateY(-4px)scale(1.02)}}@keyframes caveAtmosphere{0%,to{opacity:.62;transform:translate(-.5%)}50%{opacity:.82;transform:translate(.5%)}}@keyframes bossIntroStage{0%,to{filter:brightness(.78);transform:translate(0)}36%{filter:brightness(.68);transform:translate(0)}46%{transform:translate(-5px)}55%{transform:translate(4px)}66%{transform:translate(-2px)}}@keyframes bossIntroBoss{0%{opacity:.2;transform:translateY(18px)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes bossIntroBanner{0%{opacity:0;transform:translateY(-8px)}58%{opacity:1;transform:translateY(0)}to{opacity:1;transform:translateY(0)}}@keyframes fireballFly{0%{opacity:1;transform:translate(0)scale(.8)}to{opacity:0;transform:translate(230px)scale(1.8)}}@keyframes shieldRush{0%{opacity:1;transform:translate(0)rotate(-10deg)}to{opacity:0;transform:translate(220px)rotate(18deg)}}@keyframes arrowFly{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(260px)}}@keyframes floatUp{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-58px)}}@keyframes lootSettle{0%{opacity:0;transform:translateY(-10px)scale(.78)}55%{opacity:1;transform:translateY(3px)scale(1.04)}to{opacity:.92;transform:translateY(0)scale(1)}}@keyframes lootDustSettle{0%{opacity:0;transform:scaleX(.48)}55%{opacity:.95;transform:scaleX(1.08)}to{opacity:.72;transform:scaleX(1)}}@keyframes lootMossSettle{0%{opacity:0;transform:translateY(-10px)rotate(-28deg)}to{opacity:.9;transform:translateY(0)rotate(-18deg)}}@keyframes lootVeinSettle{0%{opacity:0;transform:rotate(-24deg)scaleY(.2)}60%{opacity:.85;transform:rotate(-24deg)scaleY(1.08)}to{opacity:.68;transform:rotate(-24deg)scaleY(.8)}}@keyframes lootItemResolve{0%{opacity:0;transform:translateY(8px)scale(.82)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes lootParticles{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(-8px)}}@keyframes levelUpPop{0%{opacity:0;transform:scale(.78)}18%,76%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.08)}}@keyframes growthFlash{0%{opacity:0;transform:translate(-50%,-10px)scale(.96)}15%,78%{opacity:1;transform:translate(-50%)scale(1)}to{opacity:0;transform:translate(-50%,-14px)scale(1.02)}}.decision-grid{grid-template-columns:1fr}.decision-grid button{min-height:58px;font-size:1.05rem}.file-import{position:relative}.file-import input{opacity:0;position:absolute;inset:0}.toggle-row{flex-direction:row;align-items:center}.toggle-row input{width:24px;min-height:24px}.segmented{gap:8px;display:flex}.segmented button{color:#23373b;background:#e4d3a6;border:0;border-radius:8px;min-width:64px;min-height:44px;font-weight:900}.segmented button.active{color:#fff7d9;background:#24484c}@media (width<=900px){.screen-frame,.role-screen-frame{min-height:640px}.content{padding:78px 22px 96px}.role-content{padding:22px}.role-top-bar{grid-template-columns:1fr;align-items:start}.role-nav{justify-content:flex-start}.start-page,.battle-field,.combat-stage,.player-combat-panel,.settlement-grid,.bag-grid,.item-drawer,.entry-grid,.reality-grid,.parent-grid,.school-plan-item,.form-grid,.stat-grid{grid-template-columns:1fr}.start-art{min-height:260px}.combat-stage{min-height:auto}.monster-zone{min-height:230px}.boss{width:250px;transform:scale(.9)}.job-grid,.skill-grid,.adventure-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){body{overflow:auto}.app-shell{min-height:100vh;padding:0}.screen-frame,.role-screen-frame{border:0;border-radius:0;width:100%;height:auto;min-height:100vh}.role-top-bar{padding:14px}.role-content{padding:18px 14px 28px}.job-grid,.skill-grid,.adventure-list,.reality-grid,.parent-grid,.school-plan-item,.task-row,.character-panel,.combat-actions,.item-drawer,.bag-grid,.loot-grid,.boss-loot-grid{grid-template-columns:1fr}.school-plan-toolbar,.school-plan-day>header,.school-plan-item-controls{flex-direction:column;align-items:stretch}.inventory-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.inventory-detail{grid-template-columns:52px 1fr}.inventory-detail>button{grid-column:1/-1}.start-page{padding:18px 0}.top-bar{padding:10px 14px}.bottom-nav{padding-inline:12px}.combat-title{flex-direction:column}.turn-badge{width:100%}.monster{width:190px;transform:scale(.88)}.boss{width:230px;transform:scale(.78)}.character-section{padding:16px}.growth-balance-grid,.combat-stat-grid,.compact-attribute-grid,.equipment-grid,.skill-identity-grid{grid-template-columns:1fr}.equipment-card{grid-template-columns:64px 1fr}.equipment-card .item-icon{width:60px;height:60px}.character-identity-heading .identity-facts{grid-template-columns:1fr;display:grid}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}.combat-stage:after{opacity:.65;animation:none}.boss-intro-active .combat-stage,.boss-intro-active .boss-art,.boss-intro-banner{filter:none;animation:none;transform:none}.monster-production-art{animation:none;transform:scaleX(-1)}}
