.ui-btn{--btn-bg:var(--c-surface-2);--btn-bg-hover:var(--c-surface-3);--btn-fg:var(--c-text);--btn-border:var(--c-line-strong);justify-content:center;align-items:center;gap:var(--space-2);border:1px solid var(--btn-border);border-radius:var(--r-md);background:var(--btn-bg);min-height:40px;color:var(--btn-fg);font:700 15px/1.2 var(--font-ui);letter-spacing:0;text-transform:none;cursor:pointer;-webkit-tap-highlight-color:transparent;padding:9px 16px;transition:background-color .15s,border-color .15s,color .15s,transform .15s cubic-bezier(.2,0,0,1);display:inline-flex;position:relative}@media (hover:hover){.ui-btn:hover:not(:disabled){background:var(--btn-bg-hover)}}.ui-btn:active:not(:disabled){transform:scale(.96)}.ui-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.ui-btn:disabled{opacity:.45;cursor:not-allowed}.ui-btn svg{flex:none;width:18px;height:18px}.ui-btn--primary{--btn-bg:var(--c-accent);--btn-bg-hover:var(--c-accent-hover);--btn-fg:var(--c-accent-ink);--btn-border:transparent}.ui-btn--ghost{--btn-bg:transparent;--btn-bg-hover:var(--c-surface-2);--btn-fg:var(--c-muted);--btn-border:transparent}@media (hover:hover){.ui-btn--ghost:hover:not(:disabled){color:var(--c-text)}}.ui-btn--destructive{--btn-bg:var(--c-danger);--btn-bg-hover:var(--c-danger);--btn-fg:var(--white);--btn-border:transparent}@media (hover:hover){.ui-btn--destructive:hover:not(:disabled){filter:brightness(1.08)}}.ui-btn--danger{--btn-bg:transparent;--btn-bg-hover:var(--c-danger-soft);--btn-fg:var(--c-muted);--btn-border:transparent}@media (hover:hover){.ui-btn--danger:hover:not(:disabled){color:var(--c-danger)}}.ui-btn--sm{min-height:32px;padding:5px 11px;font-size:14px}.ui-btn--lg{min-height:48px;padding:12px 18px;font-size:16px}.ui-btn--block{width:100%}.ui-btn__kbd{font:600 11px/1 var(--font-ui);opacity:.6;border:1px solid;border-radius:4px;padding:3px 5px}.ui-on-touch{display:none}@media (hover:none) and (pointer:coarse){.ui-btn__kbd,.ui-on-pointer{display:none}.ui-on-touch{display:inline}}.ui-btn--loading{cursor:progress}.ui-btn--loading>.ui-btn__label{visibility:hidden}.ui-btn__spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.8s linear infinite ui-spin;position:absolute}@keyframes ui-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.ui-btn,.ui-btn__spinner{transition:none;animation-duration:2.4s}.ui-btn:active:not(:disabled){transform:none}}.ui-seg{border:1px solid var(--c-line);border-radius:var(--r-md);background:var(--c-surface-2);flex-wrap:wrap;gap:3px;padding:3px;display:flex}.ui-seg__option{min-height:34px;color:var(--c-muted);font:500 14.5px/1.2 var(--font-ui);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:7px;flex:1;justify-content:center;align-items:center;gap:6px;padding:6px 10px;display:inline-flex}@media (hover:hover){.ui-seg__option:hover:not(:disabled){color:var(--c-text)}}.ui-seg__option[aria-pressed=true]{background:var(--c-surface);color:var(--c-text);box-shadow:var(--shadow-1), inset 0 0 0 1px var(--c-line-strong)}.ui-seg__option:focus-visible{box-shadow:var(--focus-ring);outline:none}.ui-seg__option:disabled{opacity:.45;cursor:not-allowed}.ui-seg__option img{width:22px;height:22px}.ui-tiles{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.ui-tile{border:1px solid var(--c-line);border-radius:var(--r-md);background:var(--c-surface-2);color:var(--c-muted);font:500 14px/1.2 var(--font-ui);cursor:pointer;flex-direction:column;align-items:center;gap:4px;padding:9px 4px 8px;display:flex}.ui-tile svg{width:22px;height:22px}@media (hover:hover){.ui-tile:hover{border-color:var(--c-line-strong);color:var(--c-text)}}.ui-tile[aria-checked=true],.ui-tile[aria-pressed=true]{border-color:var(--c-accent);background:var(--c-accent-soft);color:var(--c-text)}.ui-tile[aria-checked=true] svg,.ui-tile[aria-pressed=true] svg{color:var(--c-accent)}.ui-tile:focus-visible{box-shadow:var(--focus-ring);outline:none}.ui-field-label{color:var(--c-muted);font:700 12.5px/1.2 var(--font-ui);letter-spacing:.08em;text-transform:uppercase;margin:0 0 8px}.ui-hint{color:var(--c-muted);margin:8px 2px 0;font-size:14px;line-height:1.4}.install-hint{left:calc(var(--rail-w,0px) + 18px);bottom:calc(18px + var(--bar-h,0px));z-index:2500;max-width:min(300px,100vw - 36px);padding:var(--space-4);border:1px solid var(--c-line-strong);border-radius:var(--r-md);background:var(--c-surface);color:var(--c-text);box-shadow:var(--shadow-2);position:fixed}.install-hint__title{font-family:var(--font-display);font-size:var(--fs-md)}.install-hint__body{color:var(--c-muted);font-size:var(--fs-sm);margin:6px 0 12px;line-height:1.4}.install-hint__actions{gap:var(--space-2);display:flex}.new-version-banner{top:calc(12px + env(safe-area-inset-top,0px));z-index:2600;align-items:center;gap:var(--space-3);max-width:min(440px,100vw - 32px);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);border:1px solid var(--c-line-strong);border-radius:var(--r-md);background:var(--c-surface);color:var(--c-text);box-shadow:var(--shadow-2);display:flex;position:fixed;left:50%;transform:translate(-50%)}.new-version-banner__body{font-size:var(--fs-sm);margin:0;line-height:1.4}.ui-empty{text-align:center;color:var(--c-muted);justify-items:center;gap:4px;padding:28px 16px;display:grid}.ui-empty__emblem{width:56px;height:56px;color:var(--c-faint);margin-bottom:8px}:root .ui-empty .ui-empty__title{color:var(--c-text);font:700 var(--fs-md)/1.3 var(--font-display);margin:0}.ui-empty__body{max-width:42ch;font-size:var(--fs-sm);margin:0;line-height:1.45}.ui-empty__actions{justify-content:center;gap:var(--space-2);flex-wrap:wrap;margin-top:10px;display:flex}.ui-empty--compact{padding:18px 8px}.ui-empty--compact .ui-empty__emblem{width:40px;height:40px;margin-bottom:4px}.ui-switch{border:1px solid var(--c-line-strong);background:var(--c-surface-3);cursor:pointer;border-radius:999px;flex:none;width:40px;height:24px;padding:0;transition:background-color .15s,border-color .15s;position:relative}.ui-switch__thumb{background:var(--c-muted);border-radius:50%;width:16px;height:16px;transition:transform .15s,background-color .15s;position:absolute;top:3px;left:3px}.ui-switch[aria-checked=true]{border-color:var(--c-accent);background:var(--c-accent)}.ui-switch[aria-checked=true] .ui-switch__thumb{background:var(--c-accent-ink);transform:translate(16px)}.ui-switch:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){.ui-switch,.ui-switch__thumb{transition:none}}.player-avatar{background:var(--c-surface-3);width:40px;height:40px;color:var(--c-text);font:700 18px/1 var(--font-display);border-radius:50%;flex:none;place-items:center;display:inline-grid;position:relative}.player-avatar__photo{object-fit:cover;border-radius:50%;width:100%;height:100%}.ui-more{position:relative}.ui-more>summary{border-radius:var(--r-md);width:36px;height:36px;color:var(--c-muted);cursor:pointer;border:1px solid #0000;place-items:center;font-size:20px;line-height:1;list-style:none;display:inline-grid}.ui-more>summary::-webkit-details-marker{display:none}.ui-more[open]>summary{border-color:var(--c-line);background:var(--c-surface-2);color:var(--c-text)}@media (hover:hover){.ui-more>summary:hover{border-color:var(--c-line);background:var(--c-surface-2);color:var(--c-text)}}.ui-more>summary:focus-visible{box-shadow:var(--focus-ring);outline:none}.ui-more__menu{z-index:30;border:1px solid var(--c-line);border-radius:var(--r-md);background:var(--c-surface);min-width:190px;box-shadow:var(--shadow-2);flex-direction:column;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0}.ui-more__item{border-radius:calc(var(--r-md) - 6px);width:100%;min-height:36px;color:var(--c-text);font:600 14px/1.2 var(--font-ui);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:7px 10px;display:flex}.ui-more__item svg{flex:none;width:16px;height:16px}@media (hover:hover){.ui-more__item:hover:not(:disabled){background:var(--c-surface-2)}}.ui-more__item:focus-visible{box-shadow:var(--focus-ring);outline:none}.ui-more__item:disabled{opacity:.45;cursor:not-allowed}.ui-more__item--danger{color:var(--c-danger)}.ui-strip{border-radius:var(--r-sm);background:var(--c-accent-soft);min-width:0;color:var(--c-text);font-size:var(--fs-sm);align-items:center;gap:10px;padding:8px 10px 8px 12px;display:flex}.ui-strip--quiet{background:var(--c-surface-2);color:var(--c-muted)}.ui-strip>svg{width:16px;height:16px;color:var(--c-accent);flex:none}.ui-strip--quiet>svg{color:var(--c-faint)}.ui-strip__text{overflow-wrap:anywhere;flex:1;min-width:0}.ui-strip__text b{color:var(--c-text)}.ui-strip__actions{flex:none;gap:6px;display:inline-flex}@media (width<=520px){.ui-strip{flex-wrap:wrap}.ui-strip__text{flex-basis:calc(100% - 30px)}.ui-strip__actions{margin-left:26px}}.line-icon{stroke-width:var(--icon-stroke,1.7)}.ui-btn .line-icon,.ui-more__item .line-icon{--icon-stroke:2}.board-crest{flex:none;display:block}.board-crest__ground{fill:var(--hex-mid);stroke:var(--hex-dark);stroke-width:2.5px;stroke-linejoin:round}.board-crest__river{stroke:var(--hex-river);stroke-linecap:round}.board-crest__castle{stroke:#281c0e8c;stroke-width:1.5px;stroke-linejoin:round}.board-crest__castle--white{fill:var(--castle-white-ring)}.board-crest__castle--black{fill:var(--castle-black-ring)}.ui-skeleton{border-radius:var(--r-sm);background:var(--c-surface-3);animation:1.6s ease-in-out infinite ui-skeleton-breathe;display:block}@keyframes ui-skeleton-breathe{0%,to{opacity:.55}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.ui-skeleton{opacity:.75;animation:none}}.ui-toast{border-radius:var(--r-md);background:var(--c-surface);color:var(--c-text);border:1px solid var(--c-line-strong);box-shadow:0 8px 24px rgba(var(--shade), .26);font:700 .9rem/1.35 var(--font-ui);text-align:center;overflow-wrap:anywhere;padding:10px 14px}.ui-toast-region{left:calc(50% + var(--rail-w,0px) / 2);top:calc(64px + env(safe-area-inset-top,0px));z-index:900;width:max-content;max-width:min(420px, calc(var(--app-w,100vw) - 32px));pointer-events:none;position:fixed;transform:translate(-50%)}.ui-toast-region .ui-toast{animation:.18s ease-out ui-toast-in}@keyframes ui-toast-in{0%{opacity:0;transform:translateY(-4px)}}@media (prefers-reduced-motion:reduce){.ui-toast-region .ui-toast{animation:none}}@media (pointer:coarse){.ui-btn,.ui-seg__option{min-height:44px}}
