*{box-sizing:border-box}body{margin:0;background:#f7f8fa;color:#192a56;font:16px/1.6 system-ui,sans-serif}main{width:min(920px,calc(100% - 32px));margin:32px auto}header{margin-bottom:28px}h1{font-size:clamp(2rem,6vw,3.4rem);line-height:1.1;letter-spacing:-.045em;margin:16px 0}h2{font-size:1.25rem}a{color:#2057c9}nav{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.eyebrow{font-size:.75rem;letter-spacing:.13em;text-transform:uppercase;color:#526079}.panel{padding:28px;border:1px solid #d5dce7;border-radius:16px;background:white;margin:20px 0}label{display:block;font-weight:600;margin:14px 0 6px}input,select,textarea,button{font:inherit;max-width:100%}input:not([type=checkbox]):not([type=color]),select,textarea{width:100%;padding:12px;border:1px solid #a9b8cf;border-radius:8px;background:#fff;color:#192a56}button{background:#2563eb;color:#fff;border:0;border-radius:8px;padding:12px 20px;cursor:pointer;min-height:46px;margin:12px 8px 4px 0}button.secondary{color:#192a56;background:#e8edf6}button:disabled{opacity:.5;cursor:default}:focus-visible{outline:3px solid #91b4fc;outline-offset:3px}.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.muted,footer{color:#526079;font-size:.9rem}output,.result{display:block;padding:20px;background:#edf3ff;border-radius:10px;margin:18px 0;overflow-wrap:anywhere}.large{font-size:clamp(2rem,7vw,3.5rem);font-weight:750}.status{min-height:1.6em}canvas{display:block;width:min(100%,400px);height:auto;background:#192a56;border-radius:8px;touch-action:none}.pad{display:grid;grid-template-columns:repeat(3,56px);gap:4px;justify-content:center;margin:14px 0}.pad button{margin:0;padding:8px}.forecast{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.forecast article{padding:12px;background:#edf3ff;border-radius:8px}.forecast h3{font-size:1rem}dl{display:grid;grid-template-columns:1fr 1fr;gap:8px}dt,dd{margin:0}code{white-space:pre-wrap;word-break:break-all}table{width:100%;border-collapse:collapse}td,th{padding:8px;text-align:left;border-bottom:1px solid #d5dce7}@media(max-width:600px){.panel{padding:20px}.row{grid-template-columns:1fr;gap:0}.forecast{grid-template-columns:repeat(2,minmax(0,1fr))}}
#qr{background:white;max-width:100%;width:min(100%,360px);height:auto;border:1px solid #d5dce7;margin:20px 0}a.download{display:inline-block;background:#2563eb;color:white;border-radius:8px;padding:12px 20px;text-decoration:none}[hidden]{display:none!important}
