.companion-panel{color:#21464d;background:linear-gradient(120deg,#fff7d9,#ebfaf5);border:1px solid #b9dfd8;border-radius:20px;padding:20px;box-shadow:0 12px 28px -24px #216a70;margin:14px 0}
.stage:not(.is-light-mode) .companion-panel{color:#e7f5f1;background:linear-gradient(135deg,rgba(38,70,70,.96),rgba(24,33,42,.97));border-color:rgba(108,197,184,.38);box-shadow:0 12px 32px rgba(0,0,0,.25)}
.stage:not(.is-light-mode) .companion-heading strong{color:#ffdf81}
.stage:not(.is-light-mode) .companion-next{color:#deeeeb}
.stage:not(.is-light-mode) .companion-pending{color:#a8d1ca}
.stage:not(.is-light-mode) .companion-progress{background:rgba(173,218,210,.23)}
.companion-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:15px;font-weight:800}.companion-heading strong{font-size:24px;color:#008a82;white-space:nowrap}.companion-next{margin:10px 0;font-weight:700;line-height:1.6}.companion-progress{height:10px;overflow:hidden;background:#dcebe5;border-radius:20px}.companion-progress i{display:block;height:100%;background:linear-gradient(90deg,#f4d76b,#4dd0bb);border-radius:inherit;transition:width .4s}.companion-pending{display:block;margin-top:8px;color:#587478}
.companion-equipment{display:flex;flex-wrap:wrap;gap:7px;margin:16px 0;font-size:13px}.companion-equipment>span{padding:6px 10px;background:#ffffffae;border:1px solid #e3d6aa;border-radius:20px}.companion-panel summary{cursor:pointer;font-weight:800;padding:10px 0}.companion-panel details>p{font-size:13px;line-height:1.8;color:#527074;margin:4px 0 12px}.companion-enemies{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:0;gap:10px;list-style:none}.companion-enemies li{display:grid;justify-items:center;text-align:center;padding:8px 4px;border:1px solid #d4e6dd;border-radius:16px;background:#ffffffb0;position:relative}.companion-enemies strong{font-size:14px}.companion-enemies small{font-size:12px;color:#5e777a;margin:5px 0}.companion-enemies .is-active{border:2px solid #31bca4;background:#e6fff3;box-shadow:0 0 0 4px #60d4b621}.companion-enemies .is-defeated{background:#fff8d8;border-color:#dcc466}.companion-enemies .is-locked .companion-enemy-art{filter:grayscale(.65);opacity:.6}
.companion-enemy-art{display:block;width:84px;height:112px;background-image:url('./assets/game/companion-v1/enemies.webp');background-size:400% 200%;background-position:var(--enemy-x) var(--enemy-y);background-repeat:no-repeat;flex-shrink:0}.companion-mini-battle{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:12px}.companion-mini-battle .companion-enemy-art{width:42px;height:56px}.companion-mini-battle strong{display:block;color:#008a82}.companion-panel.is-compact{padding:10px 12px;border-radius:12px;margin:12px 0 0}.is-compact .companion-heading{font-size:11px}.is-compact .companion-heading strong{font-size:16px}.is-compact .companion-next{font-size:12px;margin:6px 0}.is-compact .companion-pending{font-size:10px}.companion-hall{background:#fff4c7;border:1px solid #e0c16a;padding:14px;border-radius:14px}.companion-hall p{font-size:13px;line-height:1.7;margin:8px 0 0}
.companion-reward-battle{position:absolute;right:12px;bottom:12px;width:210px;padding:10px;border-radius:16px;background:#f4fffaed;border:1px solid #8bcdb9;color:#28545a;box-shadow:0 10px 30px #183c4320;pointer-events:none}.companion-reward-battle .companion-enemy-art{width:60px;height:80px;margin:0 auto;animation:companion-rival-hit .8s ease-out}.companion-reward-battle strong,.companion-reward-battle small{display:block;text-align:center;font-size:12px}.companion-reward-battle small{font-size:10px;margin-top:6px}.companion-energy-shot{position:absolute;left:15px;top:38px;color:#ebb935;font-size:26px;animation:companion-energy .6s ease-out both}
/* A compact, numbered keepsake, with an inset art frame and warm foil edges. */
dialog.companion-milestone {
  box-sizing:border-box;width:min(320px,calc(100vw - 32px));max-width:none;
  max-height:calc(100dvh - 28px);padding:17px;border:1px solid #d9bd79;
  border-radius:22px;overflow:auto;color:#29443c;
  background:radial-gradient(ellipse at 0 0,#fffefa 0,transparent 58%),repeating-linear-gradient(110deg,#b4a27005 0 1px,transparent 1px 4px),linear-gradient(150deg,#fbf4df,#eee7d6 68%,#e0e9df);
  box-shadow:inset 0 1px 0 #fffdf2, inset 0 0 0 5px #fff9e64d,0 2px 0 #8e805f,0 22px 70px #0007;
  text-align:center;
}
.companion-milestone::backdrop{background:#071611a8;backdrop-filter:blur(7px)}
.companion-collectible{margin:0;padding:0}
.companion-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.companion-card-brand{font-size:10px;letter-spacing:2px;font-weight:800;color:#72613f}
.companion-card-seal{display:grid;place-items:center;width:23px;height:23px;border:1px solid #c4a760;border-radius:50%;color:#aa7d32;font-size:15px;box-shadow:inset 0 0 0 2px #fff8de}
.companion-card-art{position:relative;isolation:isolate;display:grid;place-items:center;height:196px;border:1px solid #a78f5b;border-radius:13px;overflow:hidden;background:radial-gradient(ellipse at 50% 45%,#c5bc7459,transparent 62%),linear-gradient(145deg,#314f43,#152f29);box-shadow:inset 0 0 0 4px #cfb77316,inset 0 0 35px #071d2259}
.companion-card-art::before{content:"";position:absolute;width:154px;height:154px;border:1px solid #d4bd7052;border-radius:50%;box-shadow:0 0 0 14px #d4bd7009,0 0 0 15px #d4bd7020;z-index:-1}
.companion-card-art::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(125deg,transparent 30%,#fffbe50a 42%,#fffbe51a 43%,transparent 59%)}
.companion-card-art img{display:block;height:186px;max-width:85%;object-fit:contain;filter:drop-shadow(0 10px 8px #071b2670)}
.companion-card-series{position:absolute;top:10px;left:10px;font-size:9px;letter-spacing:1px;color:#e8d799;border:1px solid #d1bc715c;padding:3px 7px;border-radius:5px;background:#102b255e;z-index:1}
.companion-card-star{position:absolute;color:#e6d298;pointer-events:none}.companion-card-star-one{left:21px;bottom:35px;font-size:22px;opacity:.7}.companion-card-star-two{right:19px;top:49px;font-size:13px;opacity:.85}
.companion-card-caption{padding:13px 3px 12px}
.companion-card-kicker{font-size:10px;letter-spacing:1px;color:#8a7954}
.companion-milestone .companion-card-caption h2{font-size:24px;line-height:1.3;letter-spacing:2px;font-weight:850;color:#25463b;margin:5px 0 6px;text-shadow:0 1px #fffaf0}
.companion-card-caption p{font-size:12px;line-height:1.65;color:#526454;margin:0;text-wrap:pretty}
.companion-card-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid #b6a06c4d;padding:10px 0 12px}
.companion-card-number{font-family:ui-monospace,Consolas,monospace;font-size:9px;letter-spacing:1px;color:#8b754b}
.companion-card-points{font-size:10px;color:#647163}.companion-card-points b{color:#345344;font-size:12px}
.companion-milestone .companion-card-continue{display:flex;align-items:center;justify-content:center;gap:13px;width:100%;margin:0;padding:10px 12px;border:1px solid #38644f;border-radius:11px;font:inherit;font-size:13px;font-weight:750;line-height:1.4;color:#f6edcf;background:linear-gradient(180deg,#3e6956,#2d5143);box-shadow:inset 0 1px 0 #b8d5b833,0 2px 0 #1c3c31;cursor:pointer;transition:background .15s,transform .15s,box-shadow .15s}
.companion-card-continue span{font-size:17px;color:#d9ca91}
.companion-milestone .companion-card-continue:hover{background:linear-gradient(180deg,#4a7862,#365e4d)}
.companion-milestone .companion-card-continue:active{transform:translateY(1px);box-shadow:inset 0 1px 3px #102d313d,0 1px 0 #1c3c31}
.companion-card-continue:focus-visible{outline:2px solid #b89145;outline-offset:3px}
@media(max-height:540px){dialog.companion-milestone{padding:13px}.companion-card-art{height:150px}.companion-card-art img{height:144px}.companion-card-caption{padding:9px 3px}.companion-card-footer{padding:8px 0}}
@keyframes companion-rival-hit{0%,70%,100%{transform:translateX(0)}75%{transform:translateX(6px) rotate(4deg)}85%{transform:translateX(-5px) rotate(-3deg)}}@keyframes companion-energy{from{opacity:1;transform:translateX(0) scale(.5)}to{opacity:0;transform:translateX(90px) scale(1.5)}}
@media(max-width:600px){.companion-panel{padding:14px}.companion-heading{font-size:13px}.companion-heading strong{font-size:21px}.companion-enemies{grid-template-columns:repeat(2,minmax(0,1fr))}.companion-reward-battle{right:4px;bottom:0;width:146px;padding:7px}.companion-reward-battle .companion-enemy-art{width:42px;height:56px}.companion-reward-battle strong{font-size:10px}}
@media(prefers-reduced-motion:reduce){.companion-progress i{transition:none}.companion-reward-battle *{animation:none!important}}
#myCompanionProgress,#detailCompanionProgress{grid-column:1/-1;flex-basis:100%;width:100%;box-sizing:border-box}#detailGrowthPanel:has(#detailCompanionProgress){flex-wrap:wrap}#reportCompanionProgress{margin-bottom:0}.companion-reward-battle~.companion-reward-battle{display:none}
.companion-collection{border-top:1px solid #b9dfd8;padding-top:3px;margin-bottom:6px}
.companion-collection summary{color:#176f63}
.companion-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;padding:8px 0 15px}
.companion-collection-card{display:flex;min-height:136px;flex-direction:column;align-items:center;justify-content:center;gap:5px;text-align:center;padding:13px;border-radius:16px;background:linear-gradient(145deg,#fffaf0,#eaf8f3);border:1px solid #d8c894;box-shadow:0 7px 18px #21464d12}
.companion-card-icon{font-size:35px;line-height:1.15}.companion-collection-card strong{font-size:14px}.companion-collection-card small{font-size:11px;line-height:1.45;color:#557078}.companion-collection-empty{grid-column:1/-1;color:#557078;font-size:13px}

/* Shared live content over four reusable, text-free illustrated card skins. */
[data-card-theme]{--card-ink:#66346c;--card-title:#79501d;--card-paper:#fff5f5;--card-edge:#e5c387;--card-button:linear-gradient(120deg,#fff0db,#edddff,#dff3ff);--card-skin:url('./assets/game/card-skins-v1/dream.webp')}
[data-card-theme="adventure"]{--card-ink:#fff3c9;--card-title:#ffe2a1;--card-paper:#123e78;--card-edge:#edc16d;--card-button:linear-gradient(#287dc2,#164a8d);--card-skin:url('./assets/game/card-skins-v1/adventure.webp')}
[data-card-theme="elegant"]{--card-ink:#53634b;--card-title:#6d501e;--card-paper:#faf4e6;--card-edge:#c9ab73;--card-button:linear-gradient(#fff9e9,#e9dcc0);--card-skin:url('./assets/game/card-skins-v1/elegant.webp')}
[data-card-theme="heritage"]{--card-ink:#efd9aa;--card-title:#f3cb7d;--card-paper:#102336;--card-edge:#b68b4d;--card-button:linear-gradient(#23394d,#102235);--card-skin:url('./assets/game/card-skins-v1/heritage.webp')}
dialog.companion-milestone[data-card-theme]{width:min(340px,calc(100vw - 32px));padding:44px 8px 12px;border:0;border-radius:20px;background:transparent;box-shadow:none;overflow:auto;color:var(--card-ink)}
.companion-card-close{position:absolute;top:2px;right:8px;width:32px;height:32px;display:grid;place-items:center;padding:0;border:1px solid #ffffff70;border-radius:50%;background:#17212bba;color:#fff;font:24px/1 Arial,sans-serif;cursor:pointer}
.companion-card-close:hover{background:#354454}
.companion-card-obtained{margin:14px 0 2px;padding:0 3px;font-family:"Microsoft YaHei","PingFang SC",sans-serif;font-size:11px;font-weight:400;line-height:1.7;text-align:center;color:#e8e1d3;text-shadow:0 1px 4px #000}
.companion-card-close:focus-visible{outline:2px solid #efd49b;outline-offset:3px}
.companion-card-face{position:relative;aspect-ratio:2/3;border-radius:18px;background:var(--card-paper) var(--card-skin) center/100% 100% no-repeat;box-shadow:0 14px 35px #0006,inset 0 0 0 1px var(--card-edge);isolation:isolate;overflow:hidden}
.companion-card-face .companion-card-header{position:absolute;inset:6% 12% auto;justify-content:center;margin:0}
.companion-card-face .companion-card-brand{display:flex;align-items:center;justify-content:center;gap:4px;max-width:100%;white-space:nowrap;font-size:12px;letter-spacing:.2px;color:var(--card-title);text-shadow:0 1px 2px var(--card-paper)}
.companion-card-owner{min-width:0;max-width:105px;overflow:hidden;text-overflow:ellipsis}
[data-card-theme="adventure"] .companion-card-brand{background:#123e78;border:1px solid #edc16d;border-radius:12px;padding:3px 10px}
.companion-card-face .companion-card-seal,.companion-card-face .companion-card-kicker,.companion-card-face .companion-card-star{display:none}
.companion-card-face .companion-card-art{position:absolute;inset:15% 10% 29%;height:auto;border:0;border-radius:0;background:none;box-shadow:none;overflow:visible}
.companion-card-face .companion-card-art::before,.companion-card-face .companion-card-art::after{display:none}
.companion-card-face .companion-card-art img{position:absolute;inset:0;height:100%;width:100%;max-width:100%;min-height:0;object-fit:contain;filter:drop-shadow(0 9px 8px #35241438)}
.companion-card-face .companion-card-series{top:-5%;left:50%;transform:translateX(-50%);font-size:9px;white-space:nowrap;color:var(--card-ink);background:var(--card-paper);border-color:var(--card-edge);padding:2px 8px;border-radius:20px}
.companion-card-face .companion-card-caption{position:absolute;inset:auto 9% 13%;padding:0 4px;border-radius:0;background:none}
.companion-milestone .companion-card-face .companion-card-caption h2{margin:0 0 9px;font-family:"Microsoft YaHei","PingFang SC","Noto Sans SC",sans-serif;font-weight:700;font-size:27px;line-height:1.3;letter-spacing:1px;color:var(--card-title);text-shadow:none}
.companion-card-face .companion-card-caption p{font-family:"Microsoft YaHei","PingFang SC","Noto Sans SC",sans-serif;font-weight:400;font-size:13px;letter-spacing:.2px;color:var(--card-ink);line-height:1.75}
.companion-card-face .companion-card-footer{position:absolute;inset:auto 13% 4%;padding:0;border:0;gap:6px;justify-content:center}
.companion-card-face .companion-card-number,.companion-card-face .companion-card-points,.companion-card-face .companion-card-points b{color:var(--card-ink);font-size:10px}
.companion-milestone[data-card-theme] .companion-card-continue{width:88%;margin:14px auto 0;border-radius:22px;border:1px solid var(--card-edge);color:var(--card-title);background:var(--card-button);box-shadow:inset 0 1px 0 #ffffff60,0 3px 0 color-mix(in srgb,var(--card-edge) 65%,#30251a),0 7px 15px #0004}
.companion-milestone[data-card-theme] .companion-card-continue span{color:inherit}
.companion-milestone[data-card-theme] .companion-card-continue:hover{filter:brightness(1.08)}
.companion-milestone[data-card-theme] .companion-card-continue:active{transform:translateY(2px)}
.companion-theme-picker{display:flex;align-items:center;justify-content:center;gap:10px;font-size:12px;margin:14px 0 0}
.companion-milestone .companion-theme-picker{color:#fff1d3;text-shadow:0 1px 3px #000}
.companion-theme-picker select{font:inherit;color:#f6ebd5;background:#23313d;border:1px solid #a99569;border-radius:8px;padding:6px 8px;max-width:170px;cursor:pointer}
.companion-theme-picker select:focus-visible{outline:2px solid #f0ce83;outline-offset:3px}
[data-card-theme] .companion-collection-card{background:var(--card-paper) var(--card-skin) center/100% 100%;border-color:var(--card-edge);color:var(--card-title);min-height:210px;padding:24px 14px}
[data-card-theme] .companion-collection-card small{color:var(--card-ink);background:var(--card-paper);border-radius:5px;padding:3px}
[data-card-theme] .companion-collection-card{cursor:pointer}
[data-card-theme] .companion-collection-card:focus-visible{outline:3px solid #d5a74c;outline-offset:3px}
[data-card-theme] .companion-collection-card .companion-card-icon{height:126px;width:100%}
[data-card-theme] .companion-collection-card img{height:100%;width:100%;object-fit:contain}
[data-card-theme] .companion-collection-card strong{background:var(--card-paper);padding:2px 6px;border-radius:5px}
@media(max-height:650px){dialog.companion-milestone[data-card-theme]{width:min(290px,calc(100vw - 32px))}.companion-card-face .companion-card-caption h2{font-size:23px!important}}
/* Full illustrated heritage cards; account data stays live and outside the raster. */
.companion-card-face.is-illustrated-face{background:transparent;border-radius:0;box-shadow:none}
.companion-card-face.is-illustrated-face,[data-card-theme] .companion-collection-card.is-illustrated-card{-webkit-mask-image:var(--heritage-mask);mask-image:var(--heritage-mask);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.companion-full-art{display:block;width:100%;height:100%;object-fit:contain}
.companion-illustrated-owner{position:absolute;top:7.1%;left:25%;width:50%;height:5.2%;display:flex;align-items:center;justify-content:center;gap:3px;border-radius:8px;background:#081725;color:#f3cb7d;font:700 10px/1.2 "Microsoft YaHei",sans-serif;white-space:nowrap}
.companion-illustrated-owner span{max-width:45%;overflow:hidden;text-overflow:ellipsis}
.companion-illustrated-number{position:absolute;left:32%;bottom:4.6%;width:36%;height:5%;display:flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:10px;background:#081725;color:#f3cb7d;font:9px/1 ui-monospace,Consolas,monospace;letter-spacing:.2px}
.companion-visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
[data-card-theme] .companion-collection-card.is-illustrated-card{position:relative;display:block;aspect-ratio:2/3;min-height:0;padding:0;border:0;border-radius:9px;overflow:hidden;background:#081725;box-shadow:0 5px 14px #0003}
[data-card-theme] .companion-collection-card.is-illustrated-card>img{display:block;width:100%;height:100%;object-fit:contain}
.is-illustrated-card .companion-illustrated-number{font-size:5px}
.companion-catalog-item{min-width:0}
.companion-catalog-item .companion-collection-card{width:100%;font:inherit;position:relative}
[data-card-theme] .companion-collection-card.is-locked{filter:grayscale(1);cursor:default;opacity:.65}
.companion-card-lock{position:absolute;left:50%;top:47%;transform:translate(-50%,-50%);padding:5px 10px;border:1px solid #ffffff80;border-radius:12px;background:#101820d9;color:white;font-size:11px;white-space:nowrap}
.companion-catalog-status{margin:7px 0 12px;text-align:center;color:inherit;font-size:11px;line-height:1.6}
.companion-finale-heading{font-size:14px;margin:14px 0 4px}
.companion-finale-heading+.companion-card-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
