:root{--panel-bg:#101a2c;--panel-bg-deep:#0a1220;--panel-border:#2a3d5c;--panel-text:#d8e7ff;--panel-muted:#8fa3c2;--panel-accent:#4aa3ff;--panel-accent-strong:#6bb6ff;--panel-danger:#e8c27a;--panel-button:#18263d;--panel-button-hover:#223552;--panel-selected:#1d4f7a;--panel-width:min(300px, 34vw);--panel-dock-height:min(42vh, 360px);--font-ui:"Trebuchet MS", "Segoe UI", sans-serif}html,body{width:100%;height:100%;margin:0}body{color:var(--panel-text);font-family:var(--font-ui);background:radial-gradient(at 20% 10%,#15233a 0%,#0000 55%),radial-gradient(at 80% 90%,#0d1a2e 0%,#0000 50%),#080d18;overflow:hidden}#app-shell{grid-template-columns:1fr var(--panel-width);grid-template-rows:1fr;width:100%;height:100%;min-height:100dvh;display:grid}#game{width:100%;min-width:0;height:100%;min-height:0;position:relative}canvas{display:block}.control-panel{background:linear-gradient(180deg, var(--panel-bg) 0%, var(--panel-bg-deep) 100%);border-left:1px solid var(--panel-border);flex-direction:column;min-width:0;min-height:0;display:flex;overflow:auto;box-shadow:inset 1px 0 #ffffff0a}.control-panel__inner{flex-direction:column;gap:.85rem;padding:.9rem .85rem 1.1rem;display:flex}.control-panel__brand{letter-spacing:.04em;color:#eef5ff;margin:0;font-size:1.35rem;font-weight:700}.control-panel__day,.control-panel__vitals,.control-panel__status p,.control-panel__label,.control-panel__hint,.control-panel__message,.control-panel__victory{margin:0}.control-panel__day{color:var(--panel-accent-strong);margin-top:.2rem;font-size:.95rem}.control-panel__vitals,.control-panel__status p,.control-panel__hint{color:var(--panel-muted);font-size:.8rem;line-height:1.35}.control-panel__status{border-bottom:1px solid #2a3d5ccc;flex-direction:column;gap:.35rem;padding-bottom:.35rem;display:flex}.control-panel__research{max-height:7.5rem;color:var(--panel-muted);white-space:pre-wrap;background:#00000038;border-radius:.35rem;margin:.15rem 0 0;padding:.45rem .5rem;font:.72rem/1.35 ui-monospace,Cascadia Code,monospace;overflow:auto}.control-panel__victory{color:var(--panel-danger);font-size:.85rem}.control-panel__message{color:#c5d8f5;min-height:1.1rem;font-size:.82rem}.control-panel__actions{flex-direction:column;gap:.75rem;display:flex}.control-panel__group{flex-direction:column;gap:.4rem;display:flex}.control-panel__label{text-transform:uppercase;letter-spacing:.08em;color:#a7bddc;font-size:.72rem}.control-panel__row{flex-wrap:wrap;gap:.35rem;display:flex}.control-panel__button{appearance:none;border:1px solid var(--panel-border);background:var(--panel-button);color:var(--panel-text);font:.8rem/1.2 var(--font-ui);cursor:pointer;border-radius:.35rem;padding:.45rem .65rem;transition:background .12s,border-color .12s,opacity .12s}.control-panel__button:hover:not(:disabled){background:var(--panel-button-hover);border-color:#3d5780}.control-panel__button:focus-visible{outline:2px solid var(--panel-accent);outline-offset:2px}.control-panel__button:disabled{opacity:.45;cursor:not-allowed}.control-panel__button--primary{background:#1a3f66;border-color:#3d7eb8}.control-panel__button--primary:hover:not(:disabled){background:#235384}.control-panel__button.is-selected{background:var(--panel-selected);border-color:var(--panel-accent)}.is-hidden{display:none!important}@media (orientation:portrait),(aspect-ratio<=4/5){#app-shell{grid-template-columns:1fr;grid-template-rows:1fr var(--panel-dock-height)}.control-panel{border-left:none;border-top:1px solid var(--panel-border);box-shadow:inset 0 1px #ffffff0a}.control-panel__inner{gap:.55rem;padding:.65rem .75rem .85rem}.control-panel__header{flex-wrap:wrap;align-items:baseline;gap:.35rem .75rem;display:flex}.control-panel__brand{font-size:1.1rem}.control-panel__status{grid-template-columns:1fr 1fr;gap:.25rem .75rem;display:grid}.control-panel__research,.control-panel__victory,.control-panel__message{grid-column:1/-1}.control-panel__research{max-height:4.5rem}.control-panel__actions{flex-flow:wrap;gap:.55rem .75rem}.control-panel__group{flex:auto;min-width:min(100%,9.5rem)}.control-panel__row{flex-wrap:nowrap;padding-bottom:.15rem;overflow-x:auto}.control-panel__button{white-space:nowrap;flex:none}}
