/* A small closed book in the park; a complete, readable plan when opened. */
#campaign .park-footer{left:auto;right:22px;bottom:max(22px,env(safe-area-inset-bottom));transform:none;width:auto;max-width:calc(100% - 32px)}
#campaign .park-footer nav{width:auto;max-width:none;margin:0;gap:8px;align-items:stretch}
#campaign .park-footer nav button{flex:none;font-size:12px;padding:13px 16px}
#campaign #park-book-button{display:flex;gap:10px;align-items:center;border:2px solid #bca773;border-left:6px solid #af9862;background:#294d40;color:#f3e3bc;border-radius:4px 9px 9px 4px;box-shadow:3px 3px 0 #e5d9b8,5px 5px 0 #203c32;text-align:left;font:italic 18px Georgia,serif}
#campaign #park-book-button svg{width:29px;height:33px;flex:none}#campaign #park-book-button small{font:7px Arial,sans-serif;letter-spacing:.12em;margin-top:5px;opacity:.8}
#campaign #nearby-hint{position:absolute;bottom:112px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);width:max-content;background:#203e34dc;color:#efe5ce;padding:9px 14px;border:1px solid #ead9ad40;border-radius:18px;font-size:11px;text-align:center;box-shadow:0 3px 15px #18392a20;pointer-events:none}
#campaign .park-utilities{align-items:flex-start}#campaign .park-utilities>button:last-child{padding:11px 10px}
#campaign .book-shade{position:absolute;inset:0;padding:30px 5vw 34px;background:#18352bbb;backdrop-filter:blur(3px);pointer-events:auto;display:flex;align-items:center;justify-content:center}
#campaign .park-book{width:980px;max-width:100%;height:min(840px,calc(100dvh - 64px));color:#3c4b37;border:9px solid #46654d;border-left-width:15px;border-radius:7px 13px 13px 7px;box-shadow:4px 4px 0 #d1c8a9,8px 8px 0 #344a3b,0 25px 90px #10241980;background:#f3edd9;display:flex;flex-direction:column;overflow:hidden}
#campaign .book-heading{padding:20px 29px 17px;border-bottom:1px solid #998f6d40;display:flex;justify-content:space-between;align-items:center;gap:12px;flex:none;background:#ebe3c9}
#campaign .book-heading .eyebrow{color:#937b47;font-size:8px}#campaign .book-heading h2{font-size:32px}#campaign .book-heading>button{background:transparent;color:#425641;border:1px solid #8f94774d;padding:5px 13px;font-size:25px}
#campaign .book-body{display:grid;grid-template-columns:240px minmax(0,1fr);flex:1;min-height:0}
#campaign .book-contents{padding:26px 24px;background:linear-gradient(90deg,#eae3ca,#f5efd9 92%,#b4ab8638);border-right:1px solid #a699744d;overflow-y:auto;touch-action:pan-y}
#campaign .book-contents .eyebrow{color:#8e805b}#campaign .book-contents a{display:block;text-decoration:none;color:#506147;font:15px Georgia,serif;line-height:1.5;padding:13px 0;border-bottom:1px solid #ad9c701f;pointer-events:auto}
#campaign .book-contents a b{font:10px Arial;color:#a18a55;margin-right:7px}#campaign .book-contents a:hover{color:#ad663f}
#campaign .book-contents>p{font:italic 20px/1.5 Georgia,serif;margin:30px 0 20px;color:#82744f}
#campaign .book-contents>small{font-size:10px;line-height:1.9;color:#85816a}
#campaign .book-tally{margin-top:28px;font:34px Georgia,serif;color:#5b704d}#campaign .book-tally span{display:block;font:10px Arial;letter-spacing:.04em;margin-top:6px}
#campaign .book-pages{overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:25px 35px 45px;scroll-padding-top:16px;background:linear-gradient(90deg,#c8b99424,transparent 18px),repeating-linear-gradient(transparent,transparent 31px,#87764c08 31px,#87764c08 32px)}
#campaign .book-preface{font:italic 15px/1.7 Georgia,serif;color:#817653;margin-bottom:30px;padding-bottom:22px;border-bottom:1px solid #9f906e40}
#campaign .book-chapter{scroll-margin-top:16px;margin-bottom:40px}
#campaign .chapter-heading{display:flex;gap:16px;align-items:center;margin:10px 0 20px}#campaign .chapter-heading>span{font:italic 40px Georgia,serif;color:#a39465}
#campaign .chapter-heading small{font-size:8px;letter-spacing:.14em;color:#9e8c58}#campaign .chapter-heading h3{font:25px/1.3 Georgia,serif;margin-top:4px}#campaign .chapter-current .chapter-heading small{color:#547b46}
#campaign .book-checklist{list-style:none;padding:0;margin:0}#campaign .book-row{display:flex;gap:13px;padding:15px 0;border-bottom:1px solid #a18e631f}
#campaign .paper-check{flex:none;width:18px;height:18px;line-height:17px;text-align:center;border:1.5px solid #9b9c7e;transform:rotate(-3deg);margin-top:6px;color:#5f7b4c;font-size:20px}
#campaign .book-row>div{min-width:0;flex:1}#campaign .book-row small{font-size:8px;letter-spacing:.08em;color:#927d4f}#campaign .book-row h4{font:18px/1.4 Georgia,serif;margin:3px 0 6px}#campaign .book-row p{font-size:12px;line-height:1.6;color:#6f755b}
#campaign .book-row.checked h4{text-decoration:line-through;text-decoration-color:#87936b70;color:#81906f}#campaign .book-row.checked p{color:#8d927c}
#campaign .book-row button{margin-top:10px;background:#657d52;color:#fff4d3;border:1px solid #657d52;font-size:11px;padding:8px 12px}
#campaign .chapter-unlock{margin-top:19px;border:1px dashed #8a936c77;padding:14px 16px;border-radius:3px;background:#e5e6cc80}#campaign .chapter-unlock b{font:italic 17px Georgia,serif;color:#607848}#campaign .chapter-unlock p{font-size:11px;margin-top:7px;line-height:1.7;color:#7b8066}
#campaign .book-neighbors{padding-top:8px}#campaign .book-neighbors .eyebrow{color:#8e805b}#campaign .book-neighbors h3{font:25px Georgia,serif;margin:6px 0 18px}#campaign .book-neighbors>div{display:grid;grid-template-columns:1fr 1fr;gap:17px}#campaign .book-neighbors p{font-size:12px;color:#71765e}#campaign .book-neighbors small{display:block;font-size:10px;margin-top:4px;color:#969079}
#campaign .work-receipt{top:155px;width:320px;padding:14px 18px;background:#f2ead5f2;text-align:left;border:1px solid #fcf1d0;border-radius:7px}
#campaign .work-receipt>span{font-size:7px;font-weight:700;letter-spacing:.13em;color:#8c814f}#campaign .work-receipt>b{display:block;font:18px Georgia,serif;margin:6px 0;color:#415d3e}#campaign .work-receipt em{float:right;font:700 13px Arial;margin-left:10px;color:#6b8550}#campaign .work-receipt p{font-size:11px;color:#818166}
#campaign .receipt-progress{height:4px;background:#d7d9bd;border-radius:3px;margin-top:10px;overflow:hidden}#campaign .receipt-progress i{display:block;height:100%;background:#7f9d61}
#campaign .map-label{position:absolute;transform:translate(-50%,-100%);font:10px Georgia,serif;color:#f3e6c5;background:#2b4c3ded;border:1px solid #dccc9b60;padding:7px 9px;border-radius:4px;max-width:105px;text-align:center;box-shadow:0 3px 10px #183e2c20}
#campaign .map-you{background:#f0d39b;color:#32513e;font:700 9px Arial;padding:6px 10px;border-radius:12px;z-index:1}
#campaign .map-you:after{content:'';position:absolute;left:calc(50% - 3px);top:100%;width:6px;height:6px;border:1px solid #fff2c9;background:#dabd7e;border-radius:50%}
@media(max-width:650px){#campaign .book-contents{touch-action:pan-x}}
@media(max-width:650px){#campaign .park-header h2{font-size:25px}#campaign .park-header{left:14px;right:14px;gap:6px}#campaign .wallet{min-width:60px;padding:9px}#campaign .wallet b{font-size:19px}#campaign .park-utilities{gap:4px}#campaign .park-utilities>button{padding:10px 7px;font-size:9px}#campaign .park-utilities>button:last-child{padding:9px 7px}#campaign .park-controls{font-size:8px;left:14px;top:105px}#campaign .park-footer{right:18px;bottom:23px;left:auto;width:auto;transform:none}#campaign .park-footer nav{width:auto}#campaign .park-footer nav button{padding:11px 13px;font-size:11px}#campaign #park-book-button{font-size:17px}#campaign #nearby-hint{font-size:10px;bottom:106px}#campaign .book-shade{padding:12px 10px 18px}#campaign .park-book{height:calc(100dvh - 30px);border-width:6px;border-left-width:9px}#campaign .book-heading{padding:15px 16px 12px}#campaign .book-heading h2{font-size:24px}#campaign .book-heading .eyebrow{font-size:6px}#campaign .book-body{display:flex;flex-direction:column}#campaign .book-contents{flex:none;display:flex;padding:0 12px;gap:15px;overflow-x:auto;overflow-y:hidden;border-right:0;border-bottom:1px solid #a699744d;background:#e9e3ca}#campaign .book-contents a{flex:none;padding:11px 0;font:11px Arial;white-space:nowrap}#campaign .book-contents>a b{font-size:9px;margin-right:4px}#campaign .book-contents>.eyebrow,#campaign .book-contents>p,#campaign .book-contents>small,#campaign .book-tally{display:none}#campaign .book-pages{padding:18px 19px 30px;flex:1;min-height:0}#campaign .chapter-heading{gap:12px}#campaign .chapter-heading h3{font-size:23px}#campaign .chapter-heading>span{font-size:34px}#campaign .book-row{gap:10px;padding:13px 0}#campaign .book-row h4{font-size:17px}#campaign .book-row p{font-size:11px}#campaign .book-neighbors>div{grid-template-columns:1fr}#campaign .work-receipt{top:144px;width:300px}#campaign .work-receipt>b{font-size:17px}}
@media(max-height:500px) and (min-width:651px){#campaign .park-footer{left:auto;right:18px;bottom:16px;width:auto;transform:none}#campaign .park-footer nav{width:auto}#campaign #nearby-hint{bottom:28px;left:24px;transform:none;max-width:48%;font-size:10px}#campaign .book-shade{padding:12px 25px 18px}#campaign .park-book{height:calc(100dvh - 30px)}#campaign .book-heading{padding:9px 20px}#campaign .book-heading h2{font-size:24px}#campaign .book-body{grid-template-columns:190px minmax(0,1fr)}#campaign .book-contents{padding:14px 18px}#campaign .book-contents a{font-size:12px;padding:8px 0}#campaign .book-pages{padding:16px 25px 30px}#campaign .work-receipt{top:86px;width:310px;padding:10px 14px}#campaign .work-receipt>b{font-size:16px}}
/* Seasons: one current page, a compact wardrobe and readable shot outcomes. */
#campaign .current-book{width:660px}#campaign .current-book>.book-pages{min-height:0;flex:1}#campaign .current-book .book-chapter{margin-bottom:0}
#campaign .season-card{background:#e4e7cd;border:1px solid #8b9c7166;border-radius:9px;padding:18px;color:#3d583e;margin-bottom:24px}
#campaign .season-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}#campaign .season-heading .eyebrow{color:#64815b}#campaign .season-heading>b{font:700 13px Arial}#campaign .season-card h3{font:24px Georgia;margin:9px 0 16px}#campaign .season-card>p{font:12px/1.65 Arial;margin:13px 0}#campaign .season-card>button{background:#41694e;color:#fff1d0;width:100%;padding:13px;font-size:12px}
#campaign .season-schedule{display:flex;gap:6px}#campaign .season-schedule>span{flex:1;text-align:center;background:#f0eddb;border:1px solid #b1b69b;border-radius:5px;font:bold 18px Arial;padding:8px 0}#campaign .season-schedule small{display:block;font:8px Arial;opacity:.65;margin-bottom:5px}#campaign .season-schedule .game-win{background:#5c8159;color:#fff4ce}#campaign .season-schedule .game-loss{background:#c2a493;color:#6c4033}#campaign .season-schedule .game-next{border:2px solid #5c8159;padding:7px 0}
#campaign .playoff-rounds{display:flex;gap:5px;margin:14px 0}#campaign .playoff-rounds>span{flex:1;font:10px Arial;border:1px solid #a2ad8766;padding:10px 4px;text-align:center;border-radius:4px}#campaign .playoff-rounds b{display:block;font-size:8px;margin-top:6px;opacity:.7}#campaign .playoff-rounds .won{background:#66845e;color:#ffedc2}
#campaign .player-panel{width:410px;max-width:calc(100% - 24px)}#campaign .player-tabs{display:flex;padding:8px 14px;gap:6px;flex:none}#campaign .player-tabs button{flex:1;padding:9px 4px;font-size:10px}#campaign .style-options{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0 24px}#campaign .style-options button{font-size:11px;padding:11px}#campaign .stat-pips{display:flex;gap:5px;margin:14px 0}#campaign .stat-pips i{height:5px;flex:1;background:#d0d2bd;border-radius:4px}#campaign .stat-pips .filled{background:#5e8052}#campaign .career-note{font-size:10px;text-align:center;padding:25px 0;color:#777d67}#campaign .player-panel .shop-note{font-size:12px;line-height:1.6}
#campaign #shot-outcome{position:absolute;top:29%;left:50%;transform:translateX(-50%);min-width:180px;padding:17px 24px;text-align:center;border-radius:8px;border:1px solid #f1dea080;background:#234a3beb;box-shadow:0 12px 40px #143d2933;color:#fff0c0;pointer-events:none}#campaign #shot-outcome.missed{background:#74554beb}#campaign #shot-outcome small{font-size:9px;letter-spacing:.16em;display:block}#campaign #shot-outcome b{font:700 30px Georgia;display:block;margin:7px 0}#campaign #shot-outcome span{font-size:14px;letter-spacing:.2em}#campaign .shot-watching{opacity:.22;pointer-events:none}
#campaign .sleep-scene{text-align:center;padding:70px 0;animation:sleep-in 1.4s ease-in-out}#campaign .sleep-scene>span{font-size:65px;color:#b9aa7f}@keyframes sleep-in{0%,100%{opacity:.2}50%{opacity:1}}
@media(max-width:650px){#campaign .current-book .book-heading h2{font-size:26px}#campaign .current-book .book-pages{padding:16px}#campaign .season-card{padding:14px}#campaign .season-card h3{font-size:22px}#campaign .season-schedule{gap:4px}#campaign .player-panel{top:118px;bottom:103px;right:12px}#campaign #shot-outcome{top:26%;min-width:160px}#campaign #shot-outcome b{font-size:26px}#campaign .park-footer nav{gap:6px}}
@media(max-height:500px){#campaign .player-panel{top:70px;bottom:78px}#campaign #shot-outcome{top:32%;padding:8px 20px}#campaign #shot-outcome b{font-size:23px}#campaign #shot-outcome small{font-size:7px}}
#campaign .modal .room-bed{width:130px}#campaign .style-options button{width:auto}#campaign .player-panel .eyebrow{color:#8b754a}
#campaign #shot-outcome{left:auto;right:24px;top:150px;transform:none;min-width:155px;padding:14px 18px}#campaign #shot-outcome b{font-size:27px}#campaign .modal .room-bed{text-align:center}#campaign .player-panel .swatches{margin:10px 0 18px}
@media(max-width:650px){#campaign #shot-outcome{left:12px;right:auto;top:163px;min-width:125px;padding:11px 13px}#campaign #shot-outcome b{font-size:22px}#campaign #shot-outcome small{font-size:7px}}
@media(max-height:500px) and (min-width:651px){#campaign #shot-outcome{right:16px;top:110px;min-width:145px;padding:10px 15px}#campaign #shot-outcome b{font-size:23px}}
#campaign .modal>*{flex-shrink:0}
#campaign .cleanup-note{padding:12px;background:#f4edda;border-left:3px solid #8a9e64;border-radius:4px}
#campaign .cleanup-note b{display:block;margin-top:5px;font-size:11px;color:#536e40}
#campaign .cleanup-gift{display:flex;align-items:center;gap:16px;padding:15px;background:#e4e7cd;border:1px solid #a1ad8466;border-radius:6px}
#campaign .cleanup-gift>i{width:51px;height:21px;border:7px solid #8fb46d;border-radius:50%;transform:rotate(-12deg);box-shadow:0 3px 0 #759659}
#campaign .cleanup-gift small,#campaign .cleanup-gift b,#campaign .cleanup-gift span{display:block}
#campaign .cleanup-gift small{font-size:8px;letter-spacing:.08em;color:#6f7d54}
#campaign .cleanup-gift b{font:19px Georgia;margin:5px 0}
#campaign .cleanup-gift span{font-size:11px;color:#627455}

#campaign .book-row h4{display:flex;justify-content:space-between;gap:12px}
#campaign .book-row h4>span{flex:none;font:13px Arial;align-self:center;color:#6b8055}
#campaign .panel-heading>div{min-width:0}
#campaign .panel-heading h2{overflow-wrap:anywhere}
#campaign .player-cash{display:block;margin-top:6px;font:700 14px Arial;color:#63794f}

/* Optional explanations stay behind quiet, touch-sized question buttons. */
#campaign .help-heading{display:flex;align-items:center;gap:6px;min-width:0}
#campaign .help-heading h2,#campaign .help-heading h3{margin:0}
#campaign button.help-button.help-button{display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border:0;border-radius:50%;background:transparent;color:#506f54;box-shadow:none;text-align:center;letter-spacing:0;vertical-align:middle}
#campaign button.help-button>span{display:grid;place-items:center;width:22px;height:22px;border:1px solid currentColor;border-radius:50%;font:700 13px Arial;color:inherit;white-space:normal;margin:0;opacity:1}
#campaign button.help-button:hover{background:#59724918}
#campaign .book-row h4>.task-name{display:flex;align-items:center;min-width:0;flex:1;font:inherit;color:inherit;white-space:normal}
#campaign .card h3>.upgrade-name{display:flex;align-items:center;min-width:0;font:inherit;color:inherit;white-space:normal}
#campaign .book-row h4{align-items:center;gap:6px;margin:0}
#campaign .book-row .paper-check{margin-top:13px}
#campaign .season-heading{margin-bottom:10px}
#campaign .scout-help{display:flex;justify-content:flex-end}
#campaign .essential-note{font-size:12px;line-height:1.5;color:#5b7054}
#campaign .season-card>.essential-note{margin:0 0 12px}
#campaign .season-card>button+button{margin-top:8px}
#campaign .optional-work{margin-top:28px}
#campaign .optional-work .chapter-heading{justify-content:space-between;gap:8px}
#campaign .optional-work .chapter-heading>span{font:11px Arial;color:#7a805e}
#campaign .timing-hint{display:block;margin-bottom:8px;text-align:center;font:10px Arial;color:#f3ecd9;white-space:nowrap}
#iso-help{position:fixed;inset:0;margin:auto;width:360px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 32px);padding:20px;border:1px solid #b6bc9c;border-radius:12px;background:#f4eedf;color:#2a4438;box-shadow:0 20px 70px #102a2455;overflow:auto;touch-action:pan-y;overscroll-behavior:contain}
#iso-help::backdrop{background:#102b2466}
#iso-help header{display:flex;align-items:center;justify-content:space-between;gap:12px}
#iso-help h2{font:25px/1.2 Georgia,serif;margin:0}
#iso-help button{flex:none;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:#dee3d0;color:#34543e;font:24px Arial}
#iso-help p{margin:12px 0 2px;font:14px/1.65 Arial;color:#50674f;white-space:pre-line}
@media(max-width:650px) and (orientation:portrait){#campaign .timing-hint{font-size:9px}}

/* One page at a time: current park work or the season, with optional detail folded away. */
#campaign[data-panel="book"] .park-header,#campaign[data-panel="book"] .park-footer,#campaign[data-panel="book"] #nearby-hint{visibility:hidden}
#campaign .book-shade{background:#18352be8}
#campaign .current-book{width:560px;height:min(660px,calc(100dvh - 64px))}
#campaign .current-book .book-heading{padding:15px 22px}
#campaign .current-book .book-heading h2{font-size:27px}
#campaign .book-tabs{display:flex;gap:8px;padding:10px 22px;border-bottom:1px solid #9a936b33;flex:none;background:#ebe3c9}
#campaign .book-tabs button{flex:1;min-height:44px;padding:10px 16px;background:transparent;border:1px solid #8a977e55;color:#54674e;font:15px Georgia,serif;border-radius:6px}
#campaign .book-tabs button.selected{background:#45654d;color:#fff4d6;border-color:#45654d}
#campaign .current-book .book-pages{padding:24px;background:#f3edd9}
#campaign .book-stage{margin-bottom:16px}
#campaign .book-stage>span{font:11px Arial;color:#728265}
#campaign .book-stage h3{font:26px/1.2 Georgia,serif;margin:6px 0 10px}
#campaign .book-stage p{font:13px/1.5 Arial;color:#657654;margin:0}
#campaign .current-book .book-row{padding:11px 0;gap:10px}
#campaign .current-book .book-row h4{font-size:17px;gap:9px;line-height:1.35}
#campaign .current-book .book-row h4>.task-name{font:inherit}
#campaign .current-book .book-row h4>span:not(.task-name){font:12px Arial;white-space:nowrap}
#campaign .current-book .book-row .paper-check{width:15px;height:15px;margin-top:14px;font-size:17px;line-height:14px}
#campaign .current-book .book-row.checked h4{text-decoration:none}
#campaign .current-book .book-row button:not(.help-button){min-height:44px;margin:6px 0;font-size:12px}
#campaign .current-book .chapter-current>.primary{display:block;width:100%;margin-top:18px;min-height:46px;background:#45654d;color:#fff4d6;border:0}
#campaign .current-book .essential-note{margin-top:14px;font-size:13px;line-height:1.5}
#campaign .current-book .optional-work{margin-top:24px;border-top:1px solid #89966d55;padding-top:6px}
#campaign .current-book summary{cursor:pointer;min-height:44px;align-content:center;font:14px Georgia,serif;color:#506849;padding:12px 0}
#campaign .optional-work summary>span{float:right;font:12px Arial;color:#768163;margin-top:2px}
#campaign .book-gifts{margin-top:18px;border-left:3px solid #83a19a;padding-left:14px}
#campaign .book-gifts p{margin:12px 0;font-size:13px;line-height:1.5}
#campaign .book-gifts span{display:block;color:#68795c}
#campaign .current-book .season-card{padding:0;margin:0;background:transparent;border:0;box-shadow:none}
#campaign .current-book .season-heading{gap:8px;align-items:center;margin:0}
#campaign .current-book .season-heading h3{font-size:26px}
#campaign .current-book .season-heading>b{font-size:12px;white-space:nowrap}
#campaign .current-book .season-card>.essential-note{margin:8px 0 22px}
#campaign .season-next{margin-bottom:18px}
#campaign .season-next>span{font:12px Arial;color:#78816a}
#campaign .season-next h4{font:24px/1.3 Georgia,serif;margin:6px 0}
#campaign .current-book .season-card>button{width:100%;min-height:46px;margin:0 0 12px}
#campaign .current-book .season-card>.primary{background:#45654d;color:#fff4d6}
#campaign .current-book .season-card>.small{background:transparent;border:1px solid #8a977e55;color:#54674e}
#campaign .current-book .opponent-scout{margin:6px 0;border:0;border-bottom:1px solid #89966d44;border-radius:0;padding:0;background:transparent}
#campaign .current-book .opponent-scout summary b:before{content:'About '}
#campaign .current-book .season-history{margin-bottom:20px;border-bottom:1px solid #89966d44}
#campaign .cleanup-gift>img{width:72px;height:72px;object-fit:contain;flex:none}
@media(max-width:650px){
 #campaign .book-tabs{padding:8px 12px}
 #campaign .book-stage h3,#campaign .current-book .season-heading h3{font-size:24px}
 #campaign .current-book .book-row h4{font-size:16px;gap:6px}
 #campaign .current-book .book-row{gap:8px}
}

#campaign .book-notice{flex:none;padding:12px 20px;border-top:1px solid #9a936b33;background:#e1e8cc;color:#435e3e;font:13px/1.4 Arial;text-align:center}
#campaign .weave-status{position:absolute;top:105px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:8px 12px;max-width:calc(100vw - 24px);border-radius:8px;background:#f3edd9;color:#34533f;font:13px Arial;pointer-events:auto}
#campaign .weave-status b{white-space:nowrap}#campaign .weave-status>span{white-space:nowrap}#campaign .weave-status button.small{margin:0;min-height:44px}
#campaign[data-weave="yes"] .park-footer{display:none}
@media(max-width:650px){#campaign .weave-status{top:92px;gap:6px;flex-wrap:wrap;justify-content:center;width:calc(100vw - 30px)}#campaign .weave-status b{flex:1}}

/* Map names stay anchored to their districts, without the walking-label stack. */
#campaign .map-region{font:600 9px Georgia,serif;padding:3px 6px;max-width:82px;box-shadow:0 2px 5px #183e2c18}
@media(min-width:700px){#campaign .map-region{font-size:11px;max-width:105px;padding:4px 7px}}

#campaign .season-area{font:12px Arial;color:#647854;margin:0 0 10px}
#campaign .area-unlock{margin-top:24px;padding:16px;border:1px solid #a3ad8a66;border-radius:9px;background:#e8e6d4}
#campaign .area-unlock header{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;align-items:center;font:17px Georgia,serif}
#campaign .area-unlock header>span{font:11px Arial;color:#6e765e;background:#d8dcc7;padding:5px 8px;border-radius:12px}
#campaign .area-unlock ul{list-style:none;margin:14px 0 10px;padding:0;display:grid;gap:10px}
#campaign .area-unlock li{display:flex;justify-content:space-between;gap:12px;font:13px Arial;color:#586d50}
#campaign .area-unlock li b{white-space:nowrap}
#campaign .area-unlock p{font:12px/1.5 Arial;color:#6d795e;margin:0}

/* Unlock requirements are bars, not a checklist: you can see how close you are at a glance. */
#campaign .area-unlock.ready{border-color:#6f8f5f;background:#e4ecd5}
/* These have to out-specify `#campaign .area-unlock li{display:flex}` above, or the bar becomes
   a zero-width flex item beside its own label and simply is not there. */
#campaign .area-unlock ul.unlock-goals{list-style:none;margin:16px 0 12px;padding:0;display:grid;gap:14px}
#campaign .area-unlock li.unlock-goal{display:block;justify-content:initial}
#campaign .area-unlock li.unlock-goal .goal-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font:13px Arial;color:#586d50;margin:0 0 7px}
#campaign .area-unlock li.unlock-goal .goal-head b{white-space:nowrap;font-variant-numeric:tabular-nums;color:#41603f}
#campaign .area-unlock li.unlock-goal .goal-track{display:block;width:100%;height:10px;border-radius:5px;background:#cdd2b4;overflow:hidden;box-shadow:inset 0 1px 2px #3c4a3326}
#campaign .area-unlock li.unlock-goal .goal-track i{display:block;height:100%;min-width:0;border-radius:5px;background:linear-gradient(90deg,#8aa961,#6f9358);transition:width .45s cubic-bezier(.22,.9,.3,1)}
#campaign .area-unlock li.unlock-goal.met .goal-head{color:#3d6141}
#campaign .area-unlock li.unlock-goal.met .goal-track i{background:linear-gradient(90deg,#d8b45c,#c19a3f)}

/* Wick's shelf. One row per prize, paid for in distinct season trophies. */
#campaign .curio-shelf{margin:12px 0;display:grid;gap:8px}
#campaign .curio-count{margin:0 0 4px;font:11px Arial;letter-spacing:.09em;text-transform:uppercase;color:#7a6a52}
#campaign .curio-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;border-radius:9px;background:#efe6cf;border:1px solid #b9a77f55}
#campaign .curio-row span{display:flex;flex-direction:column;gap:2px;font:13px Arial;color:#4a4231}
#campaign .curio-row small{font:11px Arial;color:#8b7c60}
#campaign .curio-row em{font:11px Arial;font-style:normal;color:#8b7c60}
#campaign .curio-row.ready{border-color:#9a7f45;background:#f6ecd0}
#campaign .curio-row.claimed{opacity:.62}
#campaign .curio-row button{width:auto;min-height:38px;padding:7px 14px;margin:0;border-radius:7px;font-size:12px}
#campaign .drawn-item{display:grid;place-items:center;width:100%;height:100%;padding:12px;text-align:center;background:radial-gradient(ellipse at 50% 35%,color-mix(in srgb,var(--tint) 42%,#f1ead4),#dcd8c0)}
#campaign .drawn-item b{font:600 13px/1.3 Georgia,serif;color:#3f4f3c}

#campaign .season-replay-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-top:10px}#campaign .season-replay-list button{min-height:44px;white-space:normal}

#campaign .season-replay-list button small{display:block;margin-top:3px;font-size:10px;opacity:.8}
