:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#1d2b3a;--accent:#2e7dd7;--ok:#2f8f4e;--warn:#c27a00;--bad:#b8443a;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{color:var(--ink);-webkit-tap-highlight-color:transparent;background:#12202e;margin:0}.app{flex-direction:column;max-width:960px;min-height:100dvh;margin:0 auto;display:flex}.stage{aspect-ratio:16/9;z-index:1;background:#1d2b3a;width:100%;position:sticky;top:0}.stage canvas{display:block}.hud{color:#fff;background:#0d1823;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 10px;display:flex}.hud .spacer{flex:1}.hud button{color:#fff;background:0 0;border:1px solid #fff4}.sisu{color:#ffd166;font-weight:700}.panel{padding:10px;padding-bottom:calc(16px + env(safe-area-inset-bottom));flex:1}.card{background:#fdfaf4;border-radius:14px;margin-bottom:10px;padding:14px;box-shadow:0 2px 10px #0004}h1,h2,h3{margin:0 0 8px}button{font:inherit;min-height:44px;color:var(--ink);cursor:pointer;touch-action:manipulation;background:#fff;border:1px solid #c9c2b4;border-radius:10px;padding:8px 14px}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.ghost{background:0 0;border-color:#0000}button.on{outline:3px solid var(--accent)}button.big{width:100%;margin-top:8px;font-size:1.1rem}button.small,.small{font-size:.85rem}button.small{min-height:32px;padding:4px 10px}.row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.field{flex-direction:column;gap:4px;margin:8px 0;font-size:.9rem;display:flex}input,select,textarea{font:inherit;border:1px solid #c9c2b4;border-radius:10px;width:100%;padding:10px;font-size:16px}form.row input{flex:1;width:auto}.level.locked{opacity:.6}.encounters{gap:6px;margin:0;padding:0;list-style:none;display:grid}.encounters button{text-align:start;justify-content:space-between;width:100%;display:flex}.grade{background:#eee;border-radius:99px;padding:2px 8px;font-size:.8rem}.grade.success{color:var(--ok);background:#d6f0dc}.grade.partial{color:var(--warn);background:#fbecc8}.grade.fail{color:var(--bad);background:#f6d6d2}.who{color:#6a5a48;justify-content:space-between;align-items:center;font-weight:700;display:flex}.fi{margin:6px 0;font-size:1.35rem;font-weight:600}.gloss{color:#5d6b78;margin:0 0 6px;font-style:italic}.kind-letter .fi,.kind-sign .fi,.letter{background:#fff;border:1px solid #e3dccd;border-radius:8px;padding:10px;font-family:Georgia,serif}.kind-sign .fi{color:#fff;text-align:center;background:#0b5394}.kind-message .fi{background:#e7f0fb;border-radius:16px 16px 16px 4px;padding:10px}.words{flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0;display:flex}.chip{background:#f1ece2;border-radius:99px;min-height:32px;padding:2px 10px;font-size:.9rem}.choices{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.choices button{flex:40%}.tabs{gap:4px;margin-top:8px;display:flex}.tabs button{flex:1}.tiles .built{background:#fff;border:2px dashed #c9c2b4;border-radius:10px;min-height:2.2em;margin:8px 0 0;padding:8px;font-size:1.2rem}.fb{background:#eef3f8;border-radius:10px;margin:8px 0;padding:8px 10px}.fb.success{background:#d6f0dc}.fb.partial{background:#fbecc8}.fb.fail{background:#f6e3df}.fb.help{background:#e9e4fb}.help{background:#f4f0ff;width:100%;margin-top:10px}.sisu-live{float:inline-end;color:#a07800;margin:0;font-weight:700}.shelf{margin:10px 0}.shelf .sign{color:#fff;background:#c4161c;border-radius:6px;padding:4px 10px;font-weight:700;display:inline-block}.dict div{border-bottom:1px solid #eee;justify-content:space-between;gap:10px;padding:6px 0;display:flex}.dict dt{font-weight:600}.dict dd{color:#5d6b78;text-align:end;margin:0}.journal{padding:0;list-style:none}.journal li{border-bottom:1px solid #eee;padding:8px 0}@media (orientation:landscape) and (height<=500px){.app{flex-direction:row;max-width:none}.stage{aspect-ratio:auto;width:50vw;height:100dvh}.panel{height:100dvh;overflow-y:auto}.hud{z-index:2;width:50vw;position:fixed;bottom:0;left:0}}input[type=checkbox]{width:auto}.row label{align-items:center;gap:6px;display:flex}
