:root{--font-body:"Space Grotesk", "Sora", "Trebuchet MS", sans-serif;--font-display:"Fraunces", "Cormorant Garamond", "Times New Roman", serif;--ink:#2a251f;--ink-soft:#59524a;--panel:#ffffffc7;--panel-strong:#ffffffeb;--panel-border:#28231c1f;--shadow:0 20px 40px #211c1629;--accent:#c47345;--accent-strong:#b35e3a;--accent-soft:#c4734533}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{font-family:var(--font-body);color:var(--ink);background:radial-gradient(circle at top,#f7f2e9 0%,#ede4d6 45%,#e3d8c8 100%);overflow:hidden}button,input{font-family:var(--font-body)}.game-root{width:100vw;height:100vh;position:relative;overflow:hidden}.game-root:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(circle at 20% 20%,#fff9,#0000 45%),radial-gradient(circle at 80% 10%,#c473452e,#0000 55%),radial-gradient(circle at 50% 80%,#6fbf9d38,#0000 55%);animation:14s ease-in-out infinite float;position:absolute;inset:-20%}@keyframes float{0%,to{transform:translate(0,0)}50%{transform:translate(-2%,1%)}}.canvas-wrap{z-index:1;position:absolute;inset:0}.hud{pointer-events:none;z-index:2;grid-template-rows:auto 1fr auto;gap:1.2rem;padding:1.4rem 1.6rem 1.8rem;display:grid;position:absolute;inset:0}.hud-top,.hud-columns,.hud-bottom{gap:1rem;display:grid}.hud-top{grid-template-columns:minmax(260px,360px) minmax(260px,360px);justify-content:space-between;align-items:start}.hud-columns{grid-template-columns:minmax(320px,440px) minmax(300px,380px);justify-content:space-between;align-items:start}.hud-right{gap:1rem;display:grid}.hud-bottom{grid-template-columns:minmax(320px,440px) minmax(300px,360px);justify-content:space-between;align-items:start}.panel{pointer-events:auto;background:var(--panel);border:1px solid var(--panel-border);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:20px;flex-direction:column;max-height:85vh;padding:1.1rem 1.2rem 1.2rem;display:flex;overflow:hidden}.panel__header{flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.8rem;display:flex}.panel__header--clickable{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:20px 20px 0 0;margin:-1.1rem -1.2rem .8rem;padding:1.1rem 1.2rem;transition:background .2s}.panel__header--clickable:hover{background:#00000005}.panel__title-row{align-items:center;gap:.5rem;display:flex}.panel__title{font-family:var(--font-display);letter-spacing:.01em;font-size:1.25rem}.panel__toggle{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:.2rem .4rem;font-size:.9rem;line-height:1;transition:color .2s}.panel__toggle:hover{color:var(--ink)}.panel__subtitle{color:var(--ink-soft);margin-top:.2rem;font-size:.82rem}.panel__content{flex:1;min-height:0;padding-right:.2rem;overflow:hidden auto}.panel__content::-webkit-scrollbar{width:6px}.panel__content::-webkit-scrollbar-track{background:#0000000d;border-radius:3px}.panel__content::-webkit-scrollbar-thumb{background:#2a251f4d;border-radius:3px}.panel__content::-webkit-scrollbar-thumb:hover{background:#2a251f80}.panel__divider{background:#241f1a14;height:1px;margin:1rem 0 .8rem}.badge{color:#fff;text-transform:uppercase;letter-spacing:.08em;border-radius:999px;padding:.35rem .65rem;font-size:.75rem}.resource-list,.upgrade-list,.seed-grid{gap:.8rem;display:grid}.resource{background:#fff9;border-radius:14px;justify-content:space-between;align-items:center;padding:.6rem .8rem;display:flex}.resource__label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);font-size:.78rem}.resource__value{font-size:1.05rem;font-weight:600}.resource__rate{color:var(--ink-soft);font-size:.78rem}.btn{cursor:pointer;color:var(--ink);white-space:nowrap;text-overflow:ellipsis;background:#2a251f1a;border:none;border-radius:999px;padding:.45rem .9rem;font-size:.85rem;transition:transform .2s,box-shadow .2s,background .2s;overflow:hidden}.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 10px 18px #14120f26}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:linear-gradient(120deg, var(--accent), var(--accent-strong));color:#fff}.btn--ghost{background:#fff9;border:1px solid #241f1a1f}.input{background:#fffc;border:1px solid #28231c29;border-radius:12px;flex:1;padding:.45rem .6rem}.axiom-editor__controls{gap:.6rem;margin-top:.5rem;display:flex}.axiom-editor__label{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em;font-size:.8rem}.rule-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.9rem;display:grid}.rule-section__title{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin-bottom:.6rem;font-size:.9rem}.rule-section__label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin-bottom:.4rem;font-size:.75rem}.rule-card{background:#ffffffb3;border:1px solid #241f1a14;border-radius:16px;padding:.7rem .8rem}.rule-card--active{border-color:#c4734599;box-shadow:inset 0 0 0 1px #c473454d}.rule-card__header{justify-content:space-between;gap:.6rem;display:flex}.rule-card__title{font-weight:600}.rule-card__desc{color:var(--ink-soft);font-size:.75rem}.rule-card__badge{text-transform:uppercase;background:#2a251f1a;border-radius:999px;padding:.2rem .45rem;font-size:.65rem}.rule-card__string{word-break:break-all;margin:.5rem 0 .6rem;font-family:IBM Plex Mono,Cascadia Mono,monospace;font-size:.8rem}.rule-card__actions{justify-content:flex-end;display:flex}.string-viewer{margin-top:1rem}.string-viewer__label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin-bottom:.4rem;font-size:.75rem}.string-viewer__text{word-break:break-all;background:#0000000a;border-radius:12px;max-height:110px;padding:.6rem;font-family:IBM Plex Mono,Cascadia Mono,monospace;font-size:.75rem;line-height:1.4;overflow:auto}.string-viewer__highlight{color:#d84c3b}.season-grid{grid-template-columns:repeat(4,1fr);gap:.4rem;margin-bottom:.7rem;display:grid}.season-card{text-align:center;background:#fff9;border:1px solid #241f1a14;border-radius:12px;padding:.4rem .35rem;font-size:.68rem}.season-card--active{background:var(--panel-strong);border-color:#c4734599}.season-card__name{font-weight:600}.season-card__tag{color:var(--ink-soft)}.season-actions{gap:.6rem;display:grid}.upgrade{background:#ffffffb3;border:1px solid #241f1a14;border-radius:16px;grid-template-columns:1fr auto;align-items:center;gap:.6rem;padding:.7rem .8rem;display:grid}.upgrade__title{font-weight:600}.upgrade__desc{color:var(--ink-soft);word-break:break-word;font-size:.75rem}.seed-panel .seed-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.seed-card{background:#ffffffb3;border:1px solid #241f1a14;border-radius:16px;gap:.5rem;padding:.7rem .8rem;display:grid}.seed-card--owned{border-color:#6fbf9d99}.seed-card__title{font-weight:600}.seed-card__desc{color:var(--ink-soft);font-size:.75rem}.seed-balance{color:var(--accent-strong);font-size:.9rem;font-weight:600}.geometry-grid{grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:.6rem;display:grid}.geometry-card{text-align:left;cursor:pointer;background:#fff9;border:1px solid #241f1a14;border-radius:14px;padding:.6rem}.geometry-card--active{border-color:#c4734599;box-shadow:inset 0 0 0 1px #c473454d}.geometry-card:disabled{opacity:.5;cursor:not-allowed}.geometry-card__title{font-size:.85rem;font-weight:600}.geometry-card__desc{color:var(--ink-soft);font-size:.7rem}.control-layout{grid-template-columns:auto 1fr;align-items:center;gap:1rem;display:grid}.control-actions{gap:.5rem;font-size:.8rem;display:grid}.control-hint{color:var(--ink-soft)}.dial{cursor:pointer;background:#fff9;border:1px solid #241f1a1f;border-radius:50%;place-items:center;width:120px;height:120px;display:grid;position:relative}.dial__ring{border:2px dashed #c4734599;border-radius:50%;position:absolute;inset:10px}.dial__indicator{transform-origin:50%;place-items:center;width:100%;height:100%;display:grid;position:absolute}.dial__handle{background:var(--accent);border-radius:999px;width:10px;height:36px;transform:translateY(-32px);box-shadow:0 4px 12px #c4734566}.dial__readout{text-align:center}.dial__label{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.1em;font-size:.7rem}.dial__value{font-size:1.1rem;font-weight:600}.stats-panel .stats-grid{grid-template-columns:repeat(3,1fr);gap:.7rem;display:grid}.stats-label{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em;font-size:.7rem}.stats-value{font-weight:600}@media (max-width:1100px){.hud{gap:1rem;padding:1rem}.hud-top,.hud-columns,.hud-bottom{grid-template-columns:1fr}.hud-bottom{gap:.8rem}.control-layout{grid-template-columns:1fr;justify-items:center}.stats-panel .stats-grid{grid-template-columns:repeat(2,1fr)}.rule-grid{grid-template-columns:1fr}}@media (max-width:720px){body{overflow-y:auto}.game-root{height:auto;min-height:100vh}.hud{gap:.8rem;padding:.8rem;position:relative}.canvas-wrap{position:fixed;inset:0}.panel{max-height:70vh;padding:.9rem 1rem}.panel__header--clickable{margin:-.9rem -1rem .8rem;padding:.9rem 1rem}.panel__title{font-size:1.1rem}.btn{padding:.4rem .75rem;font-size:.8rem}.rule-card,.upgrade,.seed-card{padding:.6rem .7rem}.axiom-editor__controls{flex-direction:column}.axiom-editor__controls .btn,.input{width:100%}}@media (max-width:480px){.hud{gap:.6rem;padding:.6rem}.panel{border-radius:16px;max-height:60vh;padding:.8rem}.panel__header--clickable{margin:-.8rem -.8rem .6rem;padding:.8rem}.panel__title{font-size:1rem}.panel__subtitle{font-size:.78rem}.btn{padding:.35rem .65rem;font-size:.75rem}.resource{padding:.5rem .65rem}.resource__label,.resource__rate{font-size:.72rem}.resource__value{font-size:.95rem}.rule-grid{gap:.7rem}.rule-card{padding:.5rem .6rem}.rule-card__title{font-size:.9rem}.rule-card__desc,.rule-card__string{font-size:.7rem}.upgrade{gap:.5rem;padding:.5rem .6rem}.upgrade__title{font-size:.9rem}.upgrade__desc{font-size:.7rem}.seed-card{padding:.5rem .6rem}.seed-card__title{font-size:.9rem}.seed-card__desc{font-size:.7rem}.stats-panel .stats-grid{gap:.5rem}.stats-label{font-size:.65rem}.stats-value{font-size:.9rem}.season-grid{gap:.3rem}.season-card{padding:.35rem .25rem;font-size:.62rem}.dial{width:100px;height:100px}.dial__handle{width:8px;height:30px;transform:translateY(-28px)}.dial__label{font-size:.65rem}.dial__value{font-size:1rem}.string-viewer__text{max-height:90px;padding:.5rem;font-size:.7rem}}
