:root{--ink: #14304d;--panel: #1d4b78;--panel-edge: #0f3255;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Verdana,Geneva,sans-serif;background:#0d2438;color:#fff;overflow:hidden}.app{position:relative;height:100%;width:100%}.stage{position:absolute;inset:0}.stage canvas{display:block}.panel{background:var(--panel);border:3px solid var(--panel-edge);border-radius:14px;box-shadow:0 6px 20px #00000059}.btn{font:inherit;font-weight:700;color:var(--ink);background:linear-gradient(#ffe07a,#f5b929);border:3px solid #c98f16;border-radius:999px;padding:.6rem 1.4rem;min-height:44px;cursor:pointer}.btn:hover:not(:disabled){filter:brightness(1.06)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--small{padding:.45rem .9rem;font-size:.85rem}.btn:focus-visible,.icon-btn:focus-visible,.hud__count:focus-visible,.roster__item:focus-visible,.join__input:focus-visible,.chat__input:focus-visible{outline:3px solid #ffd75e;outline-offset:2px}.icon-btn{font:inherit;font-size:1.35rem;line-height:1;width:32px;height:32px;color:#fff;background:none;border:none;border-radius:8px;cursor:pointer;opacity:.7}.icon-btn:hover{opacity:1;background:#ffffff1f}.overlay{position:absolute;inset:0;display:grid;place-items:center;background:#091e308c;backdrop-filter:blur(3px)}.loading{margin:0;padding:1rem 1.75rem;font-size:.9rem}.auth{display:flex;flex-direction:column;gap:.8rem;padding:1.8rem;width:min(360px,calc(100vw - 2rem))}.auth__title{margin:0;font-size:2.1rem;letter-spacing:.06em;text-align:center;text-shadow:0 3px 0 #0f3255}.auth__tabs{display:flex;gap:.3rem;padding:.25rem;background:#00000038;border-radius:999px}.auth__tab{flex:1;font:inherit;font-size:.82rem;color:#fff;padding:.5rem;min-height:40px;background:none;border:none;border-radius:999px;cursor:pointer;opacity:.7}.auth__tab:hover{opacity:1}.auth__tab--on{background:var(--panel-edge);opacity:1;font-weight:700}.auth__tab:focus-visible{outline:3px solid #ffd75e;outline-offset:2px}.auth__field{display:flex;flex-direction:column;gap:.3rem;font-size:.75rem;opacity:.9}.auth__hint{margin:0;font-size:.72rem;opacity:.7;text-align:center}.auth__error{margin:0;font-size:.78rem;color:#ffd0d0;text-align:center}.join__input,.chat__input{font:inherit;padding:.65rem .85rem;border:3px solid var(--panel-edge);border-radius:10px;background:#f4fafd;color:var(--ink);min-width:0}.join__input:focus-visible,.chat__input:focus-visible{outline:3px solid #ffd75e;outline-offset:1px}.hud{position:absolute;top:12px;left:12px;right:12px;display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:.5rem;pointer-events:none}.hud__group{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;min-width:0;padding:.4rem .7rem;pointer-events:auto}.hud__room{font-size:.82rem;font-weight:700;white-space:nowrap}.hud__coins{font-size:.82rem;font-weight:700;color:#ffd75e;white-space:nowrap;padding-left:.55rem;border-left:2px solid rgb(255 255 255 / 18%)}.hud__count{font:inherit;font-size:.78rem;color:#fff;padding:.3rem .6rem;min-height:32px;background:#ffffff1a;border:2px solid transparent;border-radius:999px;cursor:pointer;white-space:nowrap}.hud__count:hover{background:#fff3}.hud__count[aria-expanded=true]{border-color:#ffd75e}.hud__action{font:inherit;font-size:.78rem;font-weight:700;color:var(--ink);padding:.34rem .85rem;min-height:32px;background:linear-gradient(#ffe07a,#f5b929);border:2px solid #c98f16;border-radius:999px;cursor:pointer;white-space:nowrap}.hud__action:hover{filter:brightness(1.06)}.hud__menu{position:relative}.hud__dropdown{position:absolute;top:calc(100% + .5rem);right:0;display:flex;flex-direction:column;align-items:stretch;gap:.4rem;padding:.6rem;min-width:168px}.hud__danger{font:inherit;font-size:.78rem;color:#ffd0d0;padding:.45rem .6rem;background:#ff78781f;border:2px solid rgb(255 140 140 / 35%);border-radius:8px;cursor:pointer}.hud__danger:hover{background:#ff78783d}.hud__action:focus-visible,.hud__danger:focus-visible{outline:3px solid #ffd75e;outline-offset:2px}.hud__key{font-family:Consolas,monospace;font-size:.68rem;opacity:.6;text-align:center}.roster{position:absolute;top:62px;right:12px;width:min(220px,calc(100vw - 24px));padding:.5rem .6rem .6rem}.roster__head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.75rem;opacity:.85;margin-bottom:.3rem}.roster__list{list-style:none;margin:0;padding:0;max-height:40vh;overflow-y:auto}.roster__item{display:flex;align-items:center;gap:.5rem;width:100%;font:inherit;font-size:.8rem;color:#fff;text-align:left;padding:.45rem .5rem;background:none;border:none;border-radius:8px;cursor:pointer}.roster__item:hover{background:#ffffff1f}.roster__dot{flex:0 0 auto;width:12px;height:12px;border:2px solid var(--panel-edge);border-radius:50%}.roster__name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster__you{flex:0 0 auto;font-size:.62rem;padding:.1rem .35rem;border-radius:999px;background:#ffd75e;color:var(--ink);font-weight:700}.chat{position:absolute;bottom:12px;left:12px;width:min(360px,calc(100vw - 24px));display:flex;flex-direction:column;gap:.4rem}.chat__log{display:flex;flex-direction:column;gap:.22rem;max-height:168px;overflow-y:auto;padding:.55rem .65rem;background:var(--panel);border:3px solid var(--panel-edge);border-radius:14px;box-shadow:0 6px 20px #00000059;font-size:.8rem;line-height:1.4}.chat__hint{margin:0;opacity:.6;font-style:italic}.chat__line{margin:0;padding:.2rem .45rem;border-radius:8px;background:#ffffff12;overflow-wrap:anywhere}.chat__line--mine{align-self:flex-end;max-width:88%;background:#ffd75e29}.chat__who{font-weight:700;color:#ffd75e;margin-right:.35rem}.chat__line--mine .chat__who{opacity:.75}.chat__notice{margin:0;padding:.35rem .6rem;font-size:.74rem;color:#ffd0d0;background:#7814148c;border-radius:8px}.chat__form{display:flex;gap:.4rem}.chat__input{flex:1;opacity:.88}.chat--open .chat__input{opacity:1}.chat__send{font:inherit;font-size:1rem;width:44px;color:var(--ink);background:linear-gradient(#ffe07a,#f5b929);border:3px solid #c98f16;border-radius:10px;cursor:pointer}.chat__send:disabled{opacity:.5;cursor:not-allowed}.chat__send:focus-visible{outline:3px solid #ffd75e;outline-offset:2px}.card{position:absolute;top:12px;right:12px;width:min(260px,calc(100vw - 24px));padding:1.2rem 1rem 1rem;text-align:center}.card__close{position:absolute;top:.35rem;right:.4rem}.card__portrait{display:grid;place-items:center;width:160px;height:190px;margin:0 auto .9rem;border:3px solid var(--panel-edge);border-radius:12px;overflow:hidden}.card__portrait img{width:100%;height:100%;object-fit:contain}.card__initial{font-size:3.4rem;font-weight:700;color:#ffffffd9;text-shadow:0 2px 0 rgb(0 0 0 / 25%)}.card__name{margin:0 0 .2rem;font-size:1.15rem}.card__meta{margin:0 0 .9rem;font-size:.75rem;opacity:.75}.card__swatch{display:flex;align-items:center;justify-content:center;gap:.45rem;font-size:.72rem;opacity:.85}.card__dot{width:14px;height:14px;border:2px solid var(--panel-edge);border-radius:50%}@media(max-width:600px){.hud__action,.hud__count{font-size:.72rem;padding:.3rem .6rem}.hud__group{max-width:100%}.roster{right:12px;left:12px;width:auto}.card{inset:auto 12px 210px;width:auto;display:grid;grid-template-columns:auto 1fr;grid-template-areas:"portrait name" "portrait meta" "portrait swatch";gap:0 .9rem;align-items:center;text-align:left}.card__portrait{grid-area:portrait;width:76px;height:92px;margin:0}.card__initial{font-size:1.9rem}.card__name{grid-area:name}.card__meta{grid-area:meta;margin-bottom:0}.card__swatch{grid-area:swatch;justify-content:flex-start}.roster{width:calc(100vw - 24px)}}@media(max-height:560px){.chat__log{height:84px}.roster__list{max-height:30vh}}.sheet,.game{width:min(360px,calc(100vw - 2rem));max-height:min(80vh,620px);overflow-y:auto;padding:1rem}.sheet__head,.game__head{display:flex;align-items:center;gap:.6rem;margin-bottom:.8rem}.sheet__title,.game__title{margin:0;font-size:1.05rem;flex:1}.sheet__coins,.game__score,.game__timer{font-size:.85rem;font-weight:700;color:#ffd75e;white-space:nowrap}.sheet__group{margin-bottom:.9rem}.sheet__slot{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin:0 0 .35rem;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;opacity:.65}.sheet__worn{font-size:.68rem;font-weight:400;letter-spacing:0;text-transform:none;opacity:.85}.sheet__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.sheet__item{display:flex;align-items:center;gap:.55rem;padding:.42rem .55rem;background:#ffffff14;border:2px solid transparent;border-radius:10px}.sheet__item--worn{border-color:#ffd75e8c;background:#ffd75e1f}.sheet__name{flex:1;font-size:.82rem}.sheet__price{font-size:.8rem;font-weight:700;color:#ffd75e;white-space:nowrap}.sheet__price--short{color:#ffb0b0}.sheet__badge{font-size:.62rem;font-weight:700;padding:.1rem .4rem;border-radius:999px;background:#ffd75e;color:var(--ink)}.sheet__hint,.game__hint{margin:0;font-size:.72rem;opacity:.68;text-align:center}.sheet__empty{display:flex;flex-direction:column;align-items:center;gap:.7rem;padding:1.2rem .5rem;font-size:.82rem;text-align:center;opacity:.9}.sheet__error,.game__error{margin:0 0 .6rem;padding:.4rem .6rem;font-size:.78rem;color:#ffd0d0;background:#7814148c;border-radius:8px;text-align:center}.game__field{position:relative;height:220px;background:#00000038;border:2px solid var(--panel-edge);border-radius:12px;overflow:hidden}.game__center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.7rem;padding:.8rem}.game__target{position:absolute;width:46px;height:46px;transform:translate(-50%,-50%);background:radial-gradient(circle at 35% 30%,#ffe9a8,#f5b929 60%,#c98f16);border:3px solid #8f6410;border-radius:50%;cursor:pointer}.game__target:focus-visible{outline:3px solid #ffffff;outline-offset:2px}.game__result{margin:0;font-size:1.2rem;font-weight:700;color:#ffd75e}.track{position:relative;width:86%;height:34px;background:#0000004d;border:2px solid var(--panel-edge);border-radius:999px;overflow:hidden}.track__band{position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%);background:linear-gradient(180deg,#78dc96a6,#3caa64a6)}.track__marker{position:absolute;top:-3px;bottom:-3px;width:6px;transform:translate(-50%);background:#ffd75e;border-radius:3px;box-shadow:0 0 8px #ffd75eb3}.editor{position:fixed;max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);padding:0;display:flex;flex-direction:column;overflow:hidden}.editor__bar{display:flex;align-items:center;gap:.45rem;padding:.5rem .7rem;background:#ffffff1a;border-bottom:2px solid var(--panel-edge);cursor:grab;user-select:none;touch-action:none}.editor__bar:active{cursor:grabbing}.editor__grip{font-size:.85rem;opacity:.5}.editor__body{display:flex;flex-direction:column;gap:.6rem;padding:.7rem;overflow-y:auto}.editor__title{margin:0;font-size:.85rem;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor__dirty{font-size:.62rem;font-weight:700;padding:.1rem .4rem;border-radius:999px;background:#ffd75e;color:var(--ink);flex:none}.editor__dirty--bad{background:#ff6b6b;color:#fff}.editor__hint{margin:0;font-size:.7rem;line-height:1.45;opacity:.7}.editor__kind{flex:1;min-width:0;padding:.3rem .4rem;font-size:.78rem}.editor__row{display:flex;flex-wrap:wrap;gap:.35rem}.editor__field{display:flex;flex-direction:column;gap:.2rem;font-size:.7rem;opacity:.9}.editor__field .join__input{padding:.35rem .5rem;font-size:.78rem}.editor__doors{display:flex;flex-direction:column;gap:.2rem;margin:0;padding:0;list-style:none;max-height:8.5rem;overflow-y:auto}.editor__door{display:flex;align-items:center;gap:.35rem;width:100%;padding:.3rem .45rem;font:inherit;font-size:.72rem;color:inherit;text-align:left;cursor:pointer;background:#ffffff0f;border:1px solid transparent;border-radius:8px}.editor__door:hover{background:#ffffff1f}.editor__door--on{background:#ffc4002e;border-color:#ffc4008c}.editor__doorName{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.editor__doorTo{font-size:.66rem;opacity:.6}.editor__tag{padding:.05rem .3rem;font-size:.6rem;text-transform:uppercase;letter-spacing:.04em;background:#ffffff24;border-radius:999px}.editor__tag--bad{color:#2a0d0d;background:#ff6b6b}.editor__toggles{display:flex;flex-direction:column;gap:.3rem}.editor__check{display:flex;align-items:center;gap:.4rem;font-size:.72rem;cursor:pointer}.editor__check input{accent-color:#ffc400;cursor:pointer}.editor__check input:disabled{cursor:not-allowed}.editor__check input:disabled+span{opacity:.45}.editor__note{margin:0;font-size:.68rem;line-height:1.35;opacity:.7}.editor__issues{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.editor__issue{font-size:.68rem;line-height:1.35;padding:.3rem .45rem;border-radius:6px;background:#ffd75e24;color:#ffe6a8}.editor__issue--error{background:#b4282859;color:#ffd0d0}.editor__result{margin:0;font-size:.7rem;opacity:.85}.editor kbd{font-family:Consolas,monospace;font-size:.66rem;padding:.05rem .25rem;border:1px solid rgb(255 255 255 / 30%);border-radius:4px}
