*,*:before,*:after{box-sizing:border-box}:root{--color-primary: #2e5c8a;--color-bg: #eef4fa;--color-surface: #ffffff;--color-text: #1a1a2e;--color-text-muted: #555577;--color-accent: #a05c2a;--color-accent-light: #f5e6d8;--tap-min: 44px;--font-base: 18px;--radius: 8px}html.dark{--color-primary: #4a7eb5;--color-bg: #161b22;--color-surface: #21272f;--color-text: #e8ecef;--color-text-muted: #9aa3ab;--color-accent: #d4a373;--color-accent-light: #3d2f23}html.dark body{background:var(--color-bg);color:var(--color-text)}html{font-size:var(--font-base);line-height:1.6;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,sans-serif;background-color:var(--color-bg);color:var(--color-text);min-height:100dvh}.offline-banner{display:none;position:fixed;top:0;left:0;right:0;background:#c0392b;color:#fff;text-align:center;padding:.5rem 1rem;font-size:.9rem;z-index:9999}body.offline .offline-banner{display:block}.update-banner{position:fixed;bottom:1rem;left:50%;transform:translate(-50%);background:var(--color-primary);color:#fff;padding:.75rem 1.5rem;border-radius:8px;z-index:9999;display:flex;gap:1rem;align-items:center;box-shadow:0 4px 12px #0003}.update-banner button{background:#fff;color:var(--color-primary);border:none;border-radius:4px;padding:.4rem .8rem;cursor:pointer;font-weight:600;min-height:var(--tap-min);min-width:var(--tap-min)}button,a,[role=button]{min-height:var(--tap-min);min-width:var(--tap-min);cursor:pointer}:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}a{color:var(--color-primary)}a:hover{text-decoration:underline}h1{font-size:1.5rem;font-weight:700;line-height:1.3;margin-block:.5em .25em;color:var(--color-text)}h2{font-size:1.25rem;font-weight:600;line-height:1.35;margin-block:.75em .25em;color:var(--color-text)}h3{font-size:1.05rem;font-weight:600;line-height:1.4;margin-block:.75em .2em;color:var(--color-text)}mami-ambient-player{position:fixed;bottom:1rem;right:1rem;z-index:100}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
