:root{--bg: #0b1020;--bg-2: #111832;--panel: rgba(22, 30, 58, .72);--panel-solid: #161e3a;--panel-edge: rgba(232, 180, 74, .14);--panel-edge-hover: rgba(232, 180, 74, .38);--ink: #e8ecf8;--ink-dim: #9aa3c0;--ink-faint: #6b7492;--brass: #e8b44a;--brass-bright: #ffd257;--brass-deep: #b8862e;--paper: #f7f2e4;--paper-edge: #e2d9bf;--paper-ink: #2b2416;--stamp-red: #b3382e;--good: #6fd08c;--bad: #ef6f6c;--karma: #b78ef0;--radius: 14px;--radius-sm: 9px;--shadow: 0 10px 32px rgba(3, 6, 18, .55);--font-display: "Fraunces", Georgia, serif;--font-ui: "Inter", system-ui, -apple-system, sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Code", Menlo, monospace}*{box-sizing:border-box}html{color-scheme:dark}body{margin:0;min-height:100vh;color:var(--ink);font-family:var(--font-ui);font-size:15px;line-height:1.55;background:radial-gradient(1100px 500px at 15% -8%,rgba(93,76,178,.28),transparent 62%),radial-gradient(900px 460px at 88% 4%,rgba(232,180,74,.1),transparent 58%),radial-gradient(1px 1px at 22% 34%,rgba(255,255,255,.5),transparent 100%),radial-gradient(1px 1px at 67% 12%,rgba(255,255,255,.4),transparent 100%),radial-gradient(1.5px 1.5px at 84% 58%,rgba(255,255,255,.35),transparent 100%),radial-gradient(1px 1px at 41% 79%,rgba(255,255,255,.3),transparent 100%),radial-gradient(1px 1px at 9% 64%,rgba(255,255,255,.35),transparent 100%),linear-gradient(180deg,var(--bg) 0%,var(--bg-2) 100%);background-attachment:fixed}.beta-banner{position:relative;z-index:1000;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.45rem 1rem;background:linear-gradient(90deg,#181206f5,#261c09f5);border-bottom:1px solid rgba(232,180,74,.35);color:#d9c48f;font-size:.78rem;letter-spacing:.01em;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.beta-banner button{flex-shrink:0;background:transparent;border:none;color:#d9c48f;font-size:1.05rem;line-height:1;cursor:pointer;padding:.15rem .35rem;border-radius:6px}.beta-banner button:hover{background:#e8b44a26;color:var(--brass-bright)}.shell{max-width:1060px;margin:0 auto;padding:1.25rem 1.25rem 5rem}.loading-screen{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;color:var(--ink-dim);font-family:var(--font-display);font-size:1.15rem;letter-spacing:.04em}.loading-screen .halo{width:52px;height:52px;border-radius:50%;border:3px solid rgba(232,180,74,.2);border-top-color:var(--brass);animation:spin 1.1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.masthead{text-align:center;padding:1.6rem 0 1.1rem}.masthead .overline{font-size:.68rem;letter-spacing:.42em;text-transform:uppercase;color:var(--brass);opacity:.85}.masthead h1{margin:.2rem 0 0;font-family:var(--font-display);font-weight:600;font-size:clamp(2rem,5.5vw,3.1rem);letter-spacing:.05em;background:linear-gradient(180deg,#fff3d6 15%,var(--brass) 55%,var(--brass-deep) 95%);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 42px rgba(232,180,74,.18)}.masthead .civ-line{margin-top:.35rem;color:var(--ink-dim);font-size:.92rem}.masthead .civ-line b{color:var(--ink);font-family:var(--font-display);font-size:1.05rem;font-weight:600}.masthead .civ-line .sep{margin:0 .5rem;color:var(--ink-faint)}.masthead-tools{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;margin-top:.8rem}.resource-bar{position:sticky;top:.5rem;z-index:50;display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--panel-edge);border:1px solid var(--panel-edge);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);margin-bottom:1.25rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.resource{background:#111830eb;padding:.55rem .4rem .5rem;text-align:center}.resource .r-icon{font-size:1.05rem;line-height:1}.resource .r-value{font-variant-numeric:tabular-nums;font-weight:650;font-size:.98rem;margin-top:.1rem}.resource .r-rate{font-size:.68rem;color:var(--good);font-variant-numeric:tabular-nums}.resource .r-name{font-size:.62rem;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint)}.resource.karma .r-value{color:var(--karma)}.skyline-card{padding:0;overflow:hidden;line-height:0}.skyline{display:block;width:100%;height:auto}.sk-flicker{animation:sk-flicker 1.6s ease-in-out infinite}@keyframes sk-flicker{0%,to{opacity:1}40%{opacity:.55}60%{opacity:.85}}.sk-smoke{animation:sk-smoke 4s ease-in-out infinite}@keyframes sk-smoke{0%,to{transform:translateY(0);opacity:.3}50%{transform:translateY(-5px);opacity:.12}}.sk-float{animation:sk-float 5s ease-in-out infinite}@keyframes sk-float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.sk-twinkle{animation:sk-twinkle 3.4s ease-in-out infinite}@keyframes sk-twinkle{0%,to{opacity:.5}50%{opacity:.15}}.sk-scaffold{animation:sk-scaffold 2.2s ease-in-out infinite}@keyframes sk-scaffold{0%,to{opacity:.45}50%{opacity:.9}}.sk-pop{animation:sk-pop .6s cubic-bezier(.34,1.56,.64,1) backwards;transform-box:fill-box;transform-origin:50% 100%}@keyframes sk-pop{0%{transform:scale(0)}}.celebration{border-radius:var(--radius-sm);padding:.55rem .9rem;margin:.6rem 0;text-align:center;font-family:var(--font-display);font-size:.95rem;animation:celebration 2.6s ease forwards}.celebration.win{background:linear-gradient(180deg,#ffd25738,#e8b44a1a);border:1px solid rgba(232,180,74,.5);color:var(--brass-bright);text-shadow:0 0 14px rgba(255,210,87,.35)}.celebration.loss{background:#ef6f6c12;border:1px solid rgba(239,111,108,.25);color:var(--ink-dim)}@keyframes celebration{0%{opacity:0;transform:translateY(-6px) scale(.97)}8%{opacity:1;transform:none}80%{opacity:1}to{opacity:0}}.sparkline{display:block;width:60px;height:16px;margin:.1rem auto 0}.card{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--radius);padding:1.1rem 1.25rem 1.25rem;margin-bottom:1.25rem;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.card>h2{margin:0 0 .9rem;font-family:var(--font-display);font-weight:600;font-size:1.25rem;letter-spacing:.03em;color:var(--brass-bright);display:flex;align-items:center;gap:.5rem}.card>h2:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(232,180,74,.35),transparent)}.card h3{margin:1.1rem 0 .5rem;font-size:.78rem;font-weight:650;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-dim)}.card h3:first-of-type{margin-top:0}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:0 1.25rem;align-items:start}button{font-family:var(--font-ui);font-size:.85rem;font-weight:550;color:var(--ink);background:linear-gradient(180deg,#232e57,#1a2344);border:1px solid rgba(154,163,192,.25);border-radius:var(--radius-sm);padding:.45rem .9rem;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .05s,opacity .15s}button:hover:not(:disabled){border-color:var(--panel-edge-hover);box-shadow:0 0 0 3px #e8b44a14}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.38;cursor:not-allowed}button.primary{background:linear-gradient(180deg,var(--brass-bright),var(--brass-deep));border-color:#ffd25799;color:#241a05;font-weight:700;text-shadow:0 1px 0 rgba(255,255,255,.25)}button.primary:hover:not(:disabled){box-shadow:0 0 18px #e8b44a59}button.ghost{background:transparent;border-color:#9aa3c04d;color:var(--ink-dim)}button.ghost:hover:not(:disabled){color:var(--ink)}input[type=text],input[type=number],select,textarea{font-family:var(--font-ui);font-size:.88rem;color:var(--ink);background:#090d1cb3;border:1px solid rgba(154,163,192,.25);border-radius:var(--radius-sm);padding:.45rem .65rem;outline:none;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--brass);box-shadow:0 0 0 3px #e8b44a1f}input::placeholder,textarea::placeholder{color:var(--ink-faint)}select{cursor:pointer}textarea{width:100%;resize:vertical}.error-note{color:var(--bad);background:#ef6f6c14;border:1px solid rgba(239,111,108,.3);border-radius:var(--radius-sm);padding:.5rem .75rem;font-size:.85rem;margin:.6rem 0}.form-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.5rem}.form-row label{color:var(--ink-dim);font-size:.85rem}.era-label{font-family:var(--font-display);font-size:.92rem;color:var(--ink-dim);margin:.9rem 0 .45rem;letter-spacing:.05em}.era-label:first-child{margin-top:0}.build-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem .65rem;border-radius:var(--radius-sm);border:1px solid transparent;margin-bottom:.35rem;background:#090d1c59}.build-row.affordable{border-color:#6fd08c38}.build-row .b-info{min-width:0}.build-row .b-name{font-weight:600;font-size:.9rem}.build-row .b-name .owned{color:var(--brass);font-variant-numeric:tabular-nums;font-weight:650;margin-left:.45rem;font-size:.8rem}.build-row .b-cost{font-size:.75rem;color:var(--ink-faint);font-variant-numeric:tabular-nums}.build-row button{flex-shrink:0}.chip-row{display:flex;flex-wrap:wrap;gap:.45rem}.chip-row button{font-size:.8rem;padding:.38rem .75rem}.chip-row button.researched{background:#6fd08c1f;border-color:#6fd08c59;color:var(--good);opacity:1;cursor:default}.wonder-status{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;color:var(--ink-dim);font-size:.9rem;margin:.6rem 0}.wonder-status .countdown{font-family:var(--font-mono);color:var(--brass-bright);font-size:.95rem}.wonder-status .done{color:var(--good)}.memo{background:linear-gradient(178deg,#fbf7ea,var(--paper));color:var(--paper-ink);border:1px solid var(--paper-edge);border-radius:6px;padding:1rem 1.2rem 1.1rem;margin-bottom:1.1rem;box-shadow:0 8px 26px #03061280,inset 0 0 40px #e2d9bf59;position:relative}.memo:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:repeating-linear-gradient(90deg,var(--stamp-red) 0 14px,transparent 14px 22px);border-radius:6px 6px 0 0;opacity:.75}.memo .memo-head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;border-bottom:1px solid var(--paper-edge);padding-bottom:.45rem;margin-bottom:.6rem}.memo .memo-from{font-family:var(--font-display);font-weight:700;font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;color:var(--stamp-red)}.memo .memo-day{font-family:var(--font-mono);font-size:.72rem;color:#8a7d5e}.memo p{margin:0;font-family:var(--font-display);font-size:.98rem;line-height:1.65}.bulletin-list{list-style:none;margin:0;padding:0}.bulletin-list li{padding:.55rem .1rem;border-bottom:1px dashed rgba(154,163,192,.18);font-size:.88rem}.bulletin-list li:last-child{border-bottom:none}.bulletin-list .b-civ{color:var(--brass);font-weight:600}.bulletin-list .b-petition{color:var(--ink-dim)}.bulletin-list .b-reply{color:var(--ink);font-family:var(--font-display)}.empty-note{color:var(--ink-faint);font-size:.85rem;font-style:italic}.newsletter-prose{white-space:pre-wrap;font-family:var(--font-display);font-size:.95rem;line-height:1.7;color:var(--ink);background:#090d1c66;border-left:3px solid var(--brass-deep);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:.8rem 1rem;margin-top:.7rem}.jackpot{text-align:center;background:radial-gradient(280px 90px at 50% 0%,rgba(232,180,74,.22),transparent 75%),linear-gradient(180deg,#241b06,#1a1305);border:1px solid rgba(232,180,74,.45);border-radius:var(--radius);padding:.9rem 1rem .8rem;margin-bottom:1.1rem}.jackpot .j-label{font-size:.68rem;letter-spacing:.35em;text-transform:uppercase;color:var(--brass)}.jackpot .j-amount{font-family:var(--font-display);font-weight:700;font-size:2rem;line-height:1.15;color:var(--brass-bright);text-shadow:0 0 26px rgba(255,210,87,.4);font-variant-numeric:tabular-nums;animation:jackpot-glow 2.6s ease-in-out infinite}@keyframes jackpot-glow{0%,to{text-shadow:0 0 18px rgba(255,210,87,.3)}50%{text-shadow:0 0 34px rgba(255,210,87,.55)}}.jackpot .j-odds{font-size:.72rem;color:var(--ink-faint)}.odds-table{width:100%;border-collapse:collapse;font-size:.82rem;margin-top:.6rem}.odds-table th{text-align:left;font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);font-weight:600;padding:.3rem .5rem;border-bottom:1px solid rgba(154,163,192,.2)}.odds-table td{padding:.32rem .5rem;border-bottom:1px dashed rgba(154,163,192,.12);font-variant-numeric:tabular-nums;color:var(--ink-dim)}.odds-table tr:last-child td{border-bottom:none}.fine-print{font-size:.72rem;color:var(--ink-faint);margin:.4rem 0 0}.derby-list{list-style:none;margin:.5rem 0;padding:0}.derby-list li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem;padding:.45rem .6rem;border-radius:var(--radius-sm);background:#090d1c59;margin-bottom:.3rem;font-size:.86rem}.derby-list .d-name{font-weight:650;color:var(--ink)}.derby-list .d-line{color:var(--ink-dim);flex:1;min-width:8rem}.derby-list .d-stats{font-variant-numeric:tabular-nums;color:var(--brass);font-size:.78rem}.derby-prose{font-family:var(--font-display);font-style:italic;color:var(--ink-dim);font-size:.92rem;margin:.3rem 0 .5rem}.sharps-list{list-style:none;margin:0;padding:0}.sharps-list li{display:flex;align-items:baseline;gap:.5rem;padding:.35rem .1rem;font-size:.86rem}.sharps-list .s-title{color:var(--karma);font-size:.78rem}.sharps-list .s-wins{margin-left:auto;color:var(--ink-faint);font-variant-numeric:tabular-nums;font-size:.78rem}.recovery-box{margin-top:.75rem;border:1px dashed rgba(232,180,74,.35);border-radius:var(--radius-sm);padding:.75rem .9rem;background:#e8b44a0d;text-align:left}.recovery-box p{margin:0 0 .5rem;font-size:.82rem;color:var(--ink-dim)}.recovery-box code{font-family:var(--font-mono);font-size:.82rem;color:var(--brass-bright);background:#090d1c99;padding:.15rem .4rem;border-radius:5px;-webkit-user-select:all;user-select:all}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;background:#050812bf;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:1rem}.modal{background:var(--panel-solid);border:1px solid rgba(232,180,74,.4);border-radius:var(--radius);box-shadow:0 24px 70px #0009,0 0 40px #e8b44a14;padding:1.4rem 1.6rem 1.5rem;max-width:440px;width:100%}.modal h2{margin:0 0 .3rem;font-family:var(--font-display);color:var(--brass-bright);font-size:1.3rem}.modal .modal-sub{color:var(--ink-dim);font-size:.85rem;margin:0 0 .9rem}.modal button{display:block;width:100%;margin:.45rem 0;padding:.6rem .9rem}@media (max-width: 760px){.grid-2{grid-template-columns:1fr}.resource-bar{grid-template-columns:repeat(3,1fr)}.resource:nth-child(-n+3){border-bottom:1px solid var(--panel-edge)}.shell{padding:.9rem .8rem 4rem}.card{padding:.9rem .9rem 1rem}.beta-banner{font-size:.7rem}}
