[hidden] { display:none!important; }
.factor-sort-game { min-height:0; display:grid; grid-template-rows:auto minmax(0,1fr) auto; }
.factor-toolbar { position:relative; z-index:10; display:flex; align-items:center; gap:18px; padding:8px 18px; background:#fff; border-bottom:1px solid #c7d6df; min-height:64px; }
.factor-toolbar-space { flex:1; }
.factor-sort-game button, .factor-sort-game summary, .factor-dialog button { min-height:48px; padding:10px 14px; border:1px solid #aebfcb; border-radius:8px; background:#fff; color:#102131; font:inherit; font-weight:800; cursor:pointer; }
.factor-sort-game button:disabled { opacity:.45; cursor:not-allowed; }
.factor-sort-game button:focus-visible, .factor-sort-game summary:focus-visible, .factor-sort-game input:focus-visible, .factor-dialog button:focus-visible { outline:3px solid #149bd7; outline-offset:3px; }
.factor-sort-game .factor-primary { background:#149bd7; border-color:#149bd7; color:#fff; }
.factor-toolbar summary { display:flex; align-items:center; list-style:none; }
.factor-toolbar summary::-webkit-details-marker { display:none; }
.factor-toolbar summary::after { content:'▾'; margin-left:14px; }
.factor-settings-panel { position:absolute; top:100%; left:18px; width:min(420px,calc(100vw - 36px)); max-height:calc(100dvh - 145px); overflow:auto; padding:18px; border:1px solid #aebfcb; border-radius:8px; box-shadow:0 12px 28px #10213130; background:white; }
.factor-settings-panel fieldset { border:0; padding:0; margin:0 0 14px; }
.factor-settings-panel legend { font-weight:800; }
.factor-settings-panel label { display:flex; align-items:center; gap:8px; min-height:48px; }
.factor-settings-panel input[type=radio] { width:22px; height:22px; }
.factor-settings-panel input[type=number] { margin-left:auto; width:90px; }
.factor-settings-panel input, #factorInput { min-height:48px; border:1px solid #aebfcb; border-radius:8px; padding:8px; font:inherit; }
#settingsFeedback { color:#a92f2f; }
.factor-play-area { min-height:0; min-width:0; display:grid; grid-template-columns:minmax(0,1fr) 230px; gap:12px; padding:12px; }
#factorSortHost { min-height:0; min-width:0; }
.factor-controls { display:flex; flex-direction:column; align-self:start; gap:12px; padding:16px; background:white; border:1px solid #c7d6df; border-radius:10px; }
.factor-controls h2 { margin:0; text-align:center; font-size:1.6rem; }
#factorEntry { display:grid; gap:6px; font-weight:800; }
.factor-entry-row { display:flex; gap:8px; }
#factorInput { min-width:0; width:100%; font-size:1.4rem; }
.factor-secondary { display:flex; gap:8px; }
.factor-secondary button { flex:1; padding-inline:8px; }
.factor-feedback { min-height:58px; margin:0 12px 12px; padding:14px 18px; border:1px solid #c7d6df; border-radius:8px; background:white; font-weight:800; line-height:1.4; }
.factor-feedback[data-tone=success] { background:#edf8f1; color:#125b34; border-color:#66a581; }
.factor-feedback[data-tone=error] { background:#fff3f3; color:#842626; border-color:#d89a9a; }
.factor-dialog { width:min(640px,calc(100vw - 30px)); max-height:calc(100dvh - 30px); border:0; border-radius:10px; padding:24px; color:#102131; font:1rem/1.5 Arial,sans-serif; }
.factor-dialog::backdrop { background:#07101899; }
.factor-dialog h2 { margin-top:0; }
@media screen and (max-height:749px) {
  .factor-toolbar { min-height:52px; padding:4px 12px; gap:12px; }
  .factor-controls { gap:8px; padding:10px; }
  .factor-controls h2 { font-size:1.35rem; }
  .factor-sort-game button, .factor-sort-game summary { min-height:44px; padding:6px 10px; }
  #factorInput { min-height:44px; padding:4px; }
  .factor-feedback { min-height:42px; padding:8px 12px; margin-bottom:8px; }
}
@media screen and (max-width:899px) and (min-height:500px) {
  .factor-toolbar { flex-wrap:wrap; gap:6px 12px; padding:4px 8px; min-height:52px; }
  .factor-toolbar-space { display:none; }
  #styleSummary { font-size:.85rem; }
  .factor-play-area { grid-template-columns:1fr; grid-template-rows:minmax(0,1fr) auto; gap:6px; padding:6px; }
  .factor-controls { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px; padding:6px; align-self:stretch; }
  .factor-controls h2 { display:none; }
  #factorEntry { grid-column:span 3; grid-template-columns:auto minmax(0,1fr); align-items:center; font-size:.85rem; }
  .factor-controls > .factor-secondary { display:contents; }
  .factor-controls button { font-size:.8rem; padding:4px; min-height:44px; }
  #removeFactor { font-size:.7rem; }
  .factor-feedback { min-height:42px; font-size:.85rem; padding:6px 8px; margin:0 6px 6px; }
}
@media screen and (max-height:499px) {
  body[data-spire-tool-id=common-factor-sort] .topbar { min-height:44px; padding:4px 8px; }
  .factor-toolbar { min-height:40px; padding:2px 8px; font-size:.8rem; gap:8px; }
  .factor-sort-game button, .factor-sort-game summary { min-height:32px; padding:4px 6px; }
  .factor-play-area { grid-template-columns:minmax(0,1fr) 190px; gap:6px; padding:6px; }
  .factor-controls { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:4px; padding:6px; }
  .factor-controls h2 { display:none; }
  #factorEntry { grid-column:1/-1; }
  #factorEntry label { font-size:.8rem; }
  #factorInput { min-height:32px; height:32px; font-size:1rem; }
  .factor-controls > .factor-secondary { display:contents; }
  .factor-controls button { font-size:.75rem; }
  #removeFactor { grid-column:auto; }
  .factor-feedback { min-height:32px; font-size:.8rem; padding:4px 8px; margin:0 6px 6px; }
}
@media screen and (min-width:600px) and (max-width:899px) and (min-height:500px) {
  .factor-controls { grid-template-columns:repeat(6,minmax(0,1fr)); }
}
@media print {
  @page { size:A4 landscape; margin:8mm; }
  body[data-spire-tool-id=common-factor-sort], body[data-spire-tool-id=common-factor-sort] .app { width:100%; height:auto!important; min-height:0!important; overflow:visible; background:white; }
  .factor-toolbar, .factor-controls, .factor-dialog, .factor-feedback { display:none!important; }
  .factor-sort-game, .factor-play-area { display:block; padding:0; }
  #factorSortHost { height:170mm; min-height:0; }
}
