:root{--bg: #16130f;--bg-raised: #1e1a14;--bg-card: #221d16;--ink: #e8ddc8;--ink-dim: #a89877;--ink-faint: #6e6250;--gold: #c9a24b;--gold-bright: #e8c878;--gold-dark: #8a6d2f;--crimson: #a3402f;--line: #3a3226;--line-gold: #5c4d2c;--tier-bronze: #b0764a;--tier-silver: #b8bcc4;--tier-gold: #d9b350;--tier-epic: #a06bd8;--tier-legendary: #e0603a;--font-display: "Cinzel", serif;--font-body: "Alegreya", serif;--font-sc: "Alegreya SC", serif}*{box-sizing:border-box;margin:0;padding:0}html{color-scheme:dark}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:17px;line-height:1.55;min-height:100vh}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background:radial-gradient(1100px 500px at 50% -10%,rgba(201,162,75,.1),transparent 65%),radial-gradient(900px 600px at 110% 110%,rgba(163,64,47,.06),transparent 60%),radial-gradient(ellipse at 50% 50%,transparent 55%,rgba(0,0,0,.55) 100%)}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}#root{position:relative;z-index:1}.shell{max-width:1080px;margin:0 auto;padding:0 28px 80px}.masthead{text-align:center;padding:44px 0 18px;animation:rise .7s ease both}.masthead .kicker{font-family:var(--font-sc);font-size:13px;letter-spacing:.35em;color:var(--ink-dim);text-transform:lowercase}.masthead h1{font-family:var(--font-display);font-weight:600;font-size:clamp(30px,5vw,44px);letter-spacing:.08em;color:var(--gold-bright);text-shadow:0 2px 18px rgba(201,162,75,.25);margin:6px 0 4px}.masthead .sub{color:var(--ink-dim);font-style:italic;font-size:15px}.rule{display:flex;align-items:center;gap:14px;margin:18px auto 0;max-width:560px;color:var(--gold-dark)}.rule:before,.rule:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--line-gold))}.rule:after{background:linear-gradient(90deg,var(--line-gold),transparent)}.resource-bar{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;padding:18px 0 8px;animation:rise .7s .1s ease both}.resource{display:flex;align-items:baseline;gap:8px;padding:8px 18px;background:var(--bg-raised);border:1px solid var(--line);border-radius:3px;box-shadow:inset 0 1px #e8ddc80a,0 4px 14px #00000059}.resource .label{font-family:var(--font-sc);font-size:12px;letter-spacing:.14em;color:var(--ink-dim)}.resource .value{font-family:var(--font-display);font-size:20px;font-weight:700;color:var(--gold-bright)}.resource.prestige .value{color:var(--tier-legendary)}.tabs{display:flex;justify-content:center;gap:4px;margin:22px 0 34px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:4px 0;animation:rise .7s .2s ease both}.tabs button{font-family:var(--font-sc);font-size:15px;letter-spacing:.18em;background:none;border:none;color:var(--ink-dim);padding:9px 22px;cursor:pointer;position:relative;transition:color .2s}.tabs button:hover{color:var(--ink)}.tabs button.on{color:var(--gold-bright)}.tabs button.on:after{content:"";position:absolute;left:18px;right:18px;bottom:2px;height:1px;background:var(--gold);box-shadow:0 0 8px #c9a24bb3}.section-title{font-family:var(--font-display);font-size:20px;font-weight:600;letter-spacing:.1em;color:var(--ink);margin:30px 0 16px}.pane{animation:rise .5s ease both}.district-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}.district{background:var(--bg-card);border:1px solid var(--line);border-radius:4px;padding:20px 22px 18px;position:relative;box-shadow:0 6px 22px #0006;transition:border-color .25s,transform .25s;animation:rise .55s ease both}.district:nth-child(2){animation-delay:.06s}.district:nth-child(3){animation-delay:.12s}.district:nth-child(4){animation-delay:.18s}.district:nth-child(5){animation-delay:.24s}.district:hover{border-color:var(--line-gold);transform:translateY(-3px)}.district:before{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border:1px solid rgba(201,162,75,.12);border-radius:2px;pointer-events:none}.district header{display:flex;align-items:center;gap:12px;margin-bottom:8px}.district .icon{font-size:26px}.district h3{font-family:var(--font-display);font-size:17px;font-weight:600;letter-spacing:.05em;flex:1}.district .level{font-family:var(--font-display);font-weight:700;font-size:15px;color:var(--gold);border:1px solid var(--line-gold);border-radius:2px;padding:2px 9px;white-space:nowrap}.district .desc{color:var(--ink-dim);font-size:15px;font-style:italic;margin-bottom:14px}.xpbar{height:6px;background:#0f0d09;border:1px solid var(--line);border-radius:3px;overflow:hidden}.xpbar>div{height:100%;background:linear-gradient(90deg,var(--gold-dark),var(--gold-bright));box-shadow:0 0 8px #c9a24b80;transition:width .6s ease}.xplabel{display:flex;justify-content:space-between;font-family:var(--font-sc);font-size:12px;letter-spacing:.1em;color:var(--ink-faint);margin-top:6px}.district .buildings{margin-top:14px;padding-top:12px;border-top:1px dashed var(--line);font-size:14px;color:var(--ink-dim)}.district .buildings strong{font-family:var(--font-sc);font-weight:500;letter-spacing:.12em;font-size:12px;color:var(--ink-faint);display:block;margin-bottom:4px}.ach-list{display:flex;flex-direction:column;gap:12px}.ach{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:start;background:var(--bg-card);border:1px solid var(--line);border-left:3px solid var(--tier, var(--line));border-radius:3px;padding:16px 20px;box-shadow:0 4px 16px #00000059;animation:rise .5s ease both}.ach.done{opacity:.75}.ach.expired{opacity:.45}.ach .dicon{font-size:22px;margin-top:2px}.ach h4{font-family:var(--font-display);font-size:16px;font-weight:600;letter-spacing:.04em}.ach .desc{color:var(--ink-dim);font-size:15px;margin-top:3px}.ach .criteria{color:var(--ink-faint);font-size:13.5px;font-style:italic;margin-top:6px}.ach .meta{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.tier-badge{font-family:var(--font-sc);font-size:12px;letter-spacing:.16em;color:var(--tier, var(--ink-dim));border:1px solid currentColor;border-radius:2px;padding:2px 10px}.rewards{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.reward-chip{font-size:13px;color:var(--gold-bright);background:#c9a24b17;border:1px solid rgba(201,162,75,.25);border-radius:2px;padding:1px 8px}.deadline{font-size:12.5px;color:var(--crimson);font-family:var(--font-sc);letter-spacing:.08em}.season-card{background:var(--bg-card);border:1px solid var(--line-gold);border-radius:4px;padding:26px 30px;box-shadow:0 8px 28px #00000073;position:relative}.season-card:before{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border:1px solid rgba(201,162,75,.15);pointer-events:none}.season-card .period{font-family:var(--font-sc);letter-spacing:.2em;font-size:13px;color:var(--ink-dim)}.season-card h3{font-family:var(--font-display);font-size:26px;font-weight:600;letter-spacing:.06em;color:var(--gold-bright);margin:4px 0 14px}.objectives{list-style:none;margin-top:8px}.objectives li{display:flex;gap:12px;align-items:baseline;padding:8px 0;border-bottom:1px dashed var(--line);font-size:16px}.objectives li .mark{font-family:var(--font-display);color:var(--gold);min-width:18px}.objectives li.done{color:var(--ink-faint);text-decoration:line-through}.season-notes{color:var(--ink-dim);font-style:italic;margin-top:14px;font-size:15px}.season-history{margin-top:34px}.past-season{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;background:var(--bg-raised);border:1px solid var(--line);border-radius:3px;padding:14px 20px;margin-bottom:10px}.past-season .grade{font-family:var(--font-display);font-size:26px;font-weight:700;color:var(--gold-bright)}.past-season .confidence{font-family:var(--font-sc);letter-spacing:.14em;font-size:13px;color:var(--ink-dim)}.chronicle{position:relative;padding-left:34px}.chronicle:before{content:"";position:absolute;left:9px;top:6px;bottom:6px;width:1px;background:linear-gradient(180deg,var(--gold-dark),var(--line))}.event{position:relative;padding-bottom:26px;animation:rise .5s ease both}.event:before{content:"";position:absolute;left:-30px;top:7px;width:9px;height:9px;transform:rotate(45deg);background:var(--bg);border:1px solid var(--gold);box-shadow:0 0 8px #c9a24b80}.event .edate{font-family:var(--font-sc);font-size:13px;letter-spacing:.18em;color:var(--gold)}.event h4{font-family:var(--font-display);font-size:18px;font-weight:600;letter-spacing:.04em;margin:3px 0 6px}.event p{color:var(--ink-dim);max-width:640px}.empty{text-align:center;color:var(--ink-faint);font-style:italic;padding:30px 0}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 640px){.ach{grid-template-columns:auto 1fr}.ach .meta{grid-column:1 / -1;flex-direction:row;align-items:center}}.loading-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;flex-direction:column;gap:18px}.spinner{width:36px;height:36px;border:2px solid var(--line);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.login-card{background:var(--bg-card);border:1px solid var(--line-gold);border-radius:4px;padding:44px 48px;width:100%;max-width:420px;box-shadow:0 16px 48px #0009;animation:rise .6s ease both}.login-kicker{font-family:var(--font-sc);font-size:13px;letter-spacing:.35em;color:var(--ink-dim);text-align:center;margin-bottom:8px}.login-title{font-family:var(--font-display);font-size:28px;color:var(--gold-bright);letter-spacing:.08em;text-align:center;margin-bottom:4px}.login-sub{color:var(--ink-dim);font-style:italic;font-size:15px;text-align:center;margin-bottom:28px}.login-form{display:flex;flex-direction:column;gap:16px}.login-form label{display:flex;flex-direction:column;gap:6px;font-family:var(--font-sc);font-size:13px;letter-spacing:.15em;color:var(--ink-dim)}.login-form input{background:var(--bg);border:1px solid var(--line);border-radius:3px;color:var(--ink);font-family:var(--font-body);font-size:16px;padding:10px 14px;transition:border-color .2s;outline:none}.login-form input:focus{border-color:var(--gold-dark)}.login-error{color:var(--crimson);font-size:14px;text-align:center}.login-btn{background:var(--gold-dark);border:1px solid var(--gold);border-radius:3px;color:var(--bg);cursor:pointer;font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:.1em;padding:12px;margin-top:8px;transition:background .2s,color .2s}.login-btn:hover:not(:disabled){background:var(--gold);color:#16130f}.login-btn:disabled{opacity:.5;cursor:not-allowed}.rule-btn{background:none;border:none;cursor:pointer;color:var(--gold-dark);font-size:inherit;padding:0;display:flex;align-items:center;gap:14px;width:100%;max-width:560px;margin:18px auto 0;transition:color .2s}.rule-btn:before,.rule-btn:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--line-gold));transition:background .2s}.rule-btn:after{background:linear-gradient(90deg,var(--line-gold),transparent)}.rule-btn:hover{color:var(--gold)}.rule-btn:hover:before{background:linear-gradient(90deg,transparent,var(--gold))}.rule-btn:hover:after{background:linear-gradient(90deg,var(--gold),transparent)}.gm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:50;animation:fade-in .2s ease}.gm-drawer{position:fixed;top:0;right:0;bottom:0;width:min(540px,100vw);background:var(--bg-card);border-left:1px solid var(--line-gold);z-index:51;overflow-y:auto;animation:slide-in .25s ease;display:flex;flex-direction:column}.gm-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--line);flex-shrink:0}.gm-header h2{font-family:var(--font-display);font-size:17px;color:var(--gold);letter-spacing:.08em}.gm-close{background:none;border:none;color:var(--ink-dim);font-size:20px;cursor:pointer;padding:4px;line-height:1;transition:color .2s}.gm-close:hover{color:var(--ink)}.gm-tabs{display:flex;border-bottom:1px solid var(--line);padding:0 20px;gap:0;overflow-x:auto;flex-shrink:0}.gm-tabs button{background:none;border:none;color:var(--ink-dim);font-family:var(--font-sc);font-size:12px;letter-spacing:.15em;padding:10px 14px;cursor:pointer;position:relative;white-space:nowrap;transition:color .2s}.gm-tabs button:hover{color:var(--ink)}.gm-tabs button.on{color:var(--gold-bright)}.gm-tabs button.on:after{content:"";position:absolute;bottom:0;left:10px;right:10px;height:1px;background:var(--gold)}.gm-body{padding:24px;flex:1;display:flex;flex-direction:column;gap:16px}.gm-hint{color:var(--ink-dim);font-size:14px;font-style:italic}.gm-field{display:flex;flex-direction:column;gap:6px}.gm-label{font-family:var(--font-sc);font-size:12px;letter-spacing:.14em;color:var(--ink-dim)}.gm-input,.gm-select,.gm-textarea{background:var(--bg);border:1px solid var(--line);border-radius:3px;color:var(--ink);font-family:var(--font-body);font-size:15px;padding:9px 12px;outline:none;transition:border-color .2s;width:100%}.gm-input:focus,.gm-select:focus,.gm-textarea:focus{border-color:var(--gold-dark)}.gm-textarea{min-height:80px;resize:vertical}.gm-select option{background:var(--bg-card)}.gm-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.gm-btn{align-self:flex-start;background:var(--gold-dark);border:1px solid var(--gold);border-radius:3px;color:var(--bg);cursor:pointer;font-family:var(--font-display);font-size:13px;font-weight:600;letter-spacing:.1em;padding:9px 22px;transition:background .2s}.gm-btn:hover:not(:disabled){background:var(--gold)}.gm-btn:disabled{opacity:.45;cursor:not-allowed}.gm-btn.danger{background:var(--crimson);border-color:#c85040;color:var(--ink)}.gm-btn.danger:hover:not(:disabled){background:#bf5040}.gm-separator{height:1px;background:var(--line);margin:4px 0}.gm-success{color:#5aba6a;font-size:14px;font-style:italic}.gm-error{color:var(--crimson);font-size:14px}.resource-inputs{display:grid;grid-template-columns:1fr 1fr;gap:12px}.gm-subtabs{display:flex;gap:8px;padding-bottom:12px;border-bottom:1px dashed var(--line)}.gm-subtabs button{background:none;border:1px solid var(--line);border-radius:3px;color:var(--ink-dim);font-family:var(--font-sc);font-size:12px;letter-spacing:.12em;padding:6px 14px;cursor:pointer;transition:all .2s}.gm-subtabs button:hover{border-color:var(--gold-dark);color:var(--ink)}.gm-subtabs button.on{border-color:var(--gold);color:var(--gold-bright);background:#c9a24b14}.gm-objectives{list-style:none;display:flex;flex-direction:column;gap:4px}.gm-objectives li{display:flex;gap:12px;align-items:baseline;padding:8px 10px;border:1px solid var(--line);border-radius:3px;cursor:pointer;font-size:15px;transition:background .15s;-webkit-user-select:none;user-select:none}.gm-objectives li:hover{background:#c9a24b0d}.gm-objectives li.done{color:var(--ink-faint);text-decoration:line-through}.gm-objectives li .mark{font-family:var(--font-display);color:var(--gold);min-width:16px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}@media (max-width: 640px){.shell{padding:0 16px 60px}.masthead{padding:28px 0 12px}.resource-bar{gap:8px}.resource{padding:6px 12px;gap:6px}.resource .label{display:none}.resource .value{font-size:18px}.tabs{justify-content:flex-start;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button{padding:12px 16px;white-space:nowrap}.season-card{padding:20px 18px}.past-season{grid-template-columns:auto 1fr}.past-season .confidence{grid-column:1 / -1}.gm-row{grid-template-columns:1fr}.resource-inputs{grid-template-columns:1fr 1fr}.gm-body{padding:18px 16px}.gm-btn{padding:12px 24px}.gm-input,.gm-select,.gm-textarea{font-size:16px}.gm-objectives li{padding:12px 10px}.login-card{padding:32px 24px}}@media (max-width: 380px){.resource-inputs{grid-template-columns:1fr}body{font-size:16px}}
