  /* Self-hosted fonts (Fraunces, Hanken Grotesk — SIL OFL 1.1), cached by the service worker for offline use. */
  @font-face{font-family:'Fraunces';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/fraunces-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
  @font-face{font-family:'Fraunces';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/fraunces-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
  @font-face{font-family:'Hanken Grotesk';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/hanken-grotesk-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
  @font-face{font-family:'Hanken Grotesk';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/hanken-grotesk-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
  :root{
    --feltro:#15463B; --feltro-deep:#0F3329; --feltro-line:rgba(244,239,226,.12);
    --carta:#F4EFE2; --carta-2:#E9E1CE; --ink:#1C1B19;
    --rosso:#C0463B; --rosso-deep:#9E342B;
    --oro:#CBA14C; --oro-soft:#E6CD86; --oro-deep:#A9842F;
    --txt:#EDEADF; --muted:rgba(237,234,223,.60); --muted-2:rgba(237,234,223,.38);
    --r-lg:18px; --r-md:14px; --r-sm:10px; --shadow:0 6px 18px -10px rgba(0,0,0,.4);
    font-size:16px;
  }
  *{box-sizing:border-box;margin:0;padding:0;touch-action:manipulation}
  html,body{height:100%}
  html{background:var(--feltro);overscroll-behavior:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}
  body{font-family:'Hanken Grotesk',system-ui,sans-serif;background:var(--feltro);overscroll-behavior:none;color:var(--txt);min-height:100dvh;-webkit-font-smoothing:antialiased;padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)}
  .wrap{max-width:560px;margin:0 auto;padding:18px 16px calc(96px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:18px}
  [hidden]{display:none!important}

  header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:6px}
  .brand{display:flex;align-items:baseline;gap:10px}
  .brand .suit{font-family:'Fraunces',serif;font-size:1.4rem;color:var(--oro-soft);line-height:1;transform:translateY(2px)}
  .brand h1{font-family:'Fraunces',serif;font-weight:600;font-size:1.5rem;letter-spacing:.01em}
  .brand .tag{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-weight:600}
  .icon-btn{appearance:none;border:1px solid var(--feltro-line);background:rgba(244,239,226,.06);color:var(--txt);width:42px;height:42px;border-radius:50%;display:grid;place-items:center;cursor:pointer;transition:background .15s;flex:none}
  .icon-btn:hover{background:rgba(244,239,226,.12)}
  .icon-btn svg{width:20px;height:20px}

  .navbar{display:flex;align-items:center;gap:10px}
  .back{appearance:none;border:1px solid var(--feltro-line);background:rgba(244,239,226,.06);color:var(--txt);height:38px;padding:0 14px 0 10px;border-radius:99px;display:flex;align-items:center;gap:6px;cursor:pointer;font-weight:600;font-size:.86rem}
  .back svg{width:16px;height:16px}
  .navbar .ctx{font-family:'Fraunces',serif;font-weight:600;font-size:1.05rem;line-height:1.15;min-width:0;flex:1}
  .navbar .ctx small{display:block;font-family:'Hanken Grotesk';font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:700}
  .navbar .restart{appearance:none;border:1px solid var(--feltro-line);background:rgba(244,239,226,.06);color:var(--txt);height:38px;padding:0 14px;border-radius:99px;cursor:pointer;font-weight:600;font-size:.84rem;flex:none}
  #casualBar{flex-wrap:wrap;row-gap:10px}
  #casualBar .ctx{flex:1 1 100%}
  #casualBar .restart{flex:1}

  /* avatars */
  .av{border-radius:50%;display:inline-grid;place-items:center;font-family:'Fraunces',serif;font-weight:600;color:#fff;flex:none;overflow:hidden;background-size:cover;background-position:center;line-height:1}

  /* scoreboard */
  .board{position:relative;border-radius:var(--r-lg);overflow:hidden;background:linear-gradient(180deg, rgba(244,239,226,.05), rgba(0,0,0,.12));border:1px solid var(--feltro-line);box-shadow:var(--shadow)}
  .board-grid{display:flex;align-items:stretch}
  .divider{width:1px;background:linear-gradient(180deg,transparent,var(--feltro-line) 18%,var(--feltro-line) 82%,transparent);flex:none}
  .side{flex:1;padding:20px 18px 18px;display:flex;flex-direction:column;gap:6px;min-width:0;align-items:flex-start}
  .side-head{display:flex;justify-content:space-between;align-items:center;width:100%;margin-bottom:6px}
  .side .avs{display:flex}
  .side .avs .av{width:30px;height:30px;font-size:13px;border:2px solid var(--feltro-deep)}
  .side .avs .av+.av{margin-left:-9px}
  .side .name{font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--muted);max-width:100%;display:flex;align-items:center;justify-content:flex-start;gap:6px}
  .side .name span:first-child{display:block;line-height:1.3;min-width:0;letter-spacing:.08em}
  .side .name span:first-child div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dealer-badge{font-size:1.15rem;line-height:1;margin-top:0;filter:drop-shadow(0 1px 2px rgba(0,0,0,0.5))}
  .side.lead .name{color:var(--oro-soft)}
  .side .total{font-family:'Fraunces',serif;font-weight:600;font-size:3rem;line-height:.95;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
  .side.lead .total{color:var(--oro-soft)}
  .meta{font-size:.78rem;color:var(--muted);min-height:1em;font-variant-numeric:tabular-nums}
  .track{width:100%;height:7px;border-radius:99px;background:rgba(0,0,0,.22);overflow:hidden;margin-top:8px}
  .fill{height:100%;width:0;border-radius:99px;background:rgba(244,239,226,.35);transition:width .5s cubic-bezier(.2,.8,.2,1)}
  .side.lead .fill{background:linear-gradient(90deg,var(--oro-deep),var(--oro-soft))}
  .target-row{display:flex;align-items:center;justify-content:center;gap:8px;padding:9px;border-top:1px solid var(--feltro-line);font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:600}
  .target-row b{color:var(--oro-soft);font-weight:700;letter-spacing:.05em}

  .winner{display:none;align-items:center;gap:12px;padding:14px 16px;border-radius:var(--r-lg);background:linear-gradient(100deg, rgba(203,161,76,.18), rgba(203,161,76,.06));border:1px solid rgba(203,161,76,.4);box-shadow:var(--shadow)}
  .winner.show{display:flex}
  .winner .cup{font-size:1.6rem}
  .winner .txt b{font-family:'Fraunces',serif;font-weight:600;font-size:1.15rem;color:var(--oro-soft);display:block}
  .winner .txt span{font-size:.82rem;color:var(--muted)}
  .confetti-c{position:fixed;inset:0;z-index:90;pointer-events:none}
  .dealer-bar{margin-top:12px;padding:9px 14px;border:1px solid var(--feltro-line);border-radius:99px;background:rgba(244,239,226,.05);color:var(--txt);font-size:.84rem;text-align:center;cursor:pointer}
  .dealer-bar b{color:var(--oro-soft)}
  .dealer-bar .dz-hint{color:var(--muted-2);font-size:.78rem}
  .side .avs .av.dealer{outline:2px solid var(--oro-soft);outline-offset:1px;z-index:1}

  .add-btn{appearance:none;border:none;cursor:pointer;width:100%;padding:16px;border-radius:var(--r-md);background:var(--carta);color:var(--ink);font-family:'Hanken Grotesk';font-weight:700;font-size:1rem;display:flex;align-items:center;justify-content:center;gap:9px;box-shadow:var(--shadow);transition:transform .12s,background .15s}
  .add-btn:hover{background:#fff}
  .add-btn:active{transform:translateY(1px)}
  .add-btn:disabled{opacity:.45;cursor:not-allowed}
  .add-btn svg{width:20px;height:20px}
  .add-btn.gold{background:linear-gradient(100deg,var(--oro-deep),var(--oro));color:#241a06}

  h2.sec{font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);font-weight:700;margin:2px 2px 10px}
  .empty{border:1px dashed var(--feltro-line);border-radius:var(--r-lg);padding:26px 18px;text-align:center;color:var(--muted);font-size:.92rem;line-height:1.5}
  .empty .big{display:block;font-family:'Fraunces',serif;color:var(--txt);font-size:1.05rem;margin-bottom:4px}

  table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
  thead th{font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-2);font-weight:700;text-align:right;padding:0 8px 8px}
  thead th:first-child{text-align:left;width:30px}
  thead th.lcol{text-align:left}
  tbody td{padding:11px 8px;border-top:1px solid var(--feltro-line);text-align:right;font-size:1rem;font-weight:500}
  tbody td:first-child{text-align:left;color:var(--muted);font-family:'Fraunces',serif;font-size:.95rem;font-weight:500}
  tbody td.lcol{text-align:left;font-family:'Hanken Grotesk';font-weight:600;color:var(--txt);font-size:.92rem}
  tbody tr.clk{cursor:pointer;transition:background .12s}
  tbody tr.clk:hover{background:rgba(244,239,226,.05)}
  .cell-win{color:var(--oro-soft);font-weight:700}
  tfoot td{padding:13px 8px 2px;border-top:2px solid var(--feltro-line);text-align:right;font-weight:700;font-size:1.05rem}
  tfoot td:first-child{text-align:left;color:var(--muted);font-weight:700;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}
  tfoot .cell-lead{color:var(--oro-soft)}

  /* casual setup */
  .setup-card{border:1px solid var(--feltro-line);border-radius:var(--r-lg);background:linear-gradient(180deg, rgba(244,239,226,.05), rgba(0,0,0,.1));padding:16px}
  .pgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px 4px;margin-top:4px}
  .pchip{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;min-width:0}
  .pchip .av{width:46px;height:46px;font-size:18px;border:2px solid transparent;transition:border-color .15s}
  .pchip.A .av{border-color:var(--oro-soft)}
  .pchip.B .av{border-color:#9FD3C0}
  .pchip.C .av{border-color:#3B6FC0}
  .pchip .av.av-more{background:rgba(244,239,226,.08);color:var(--txt);display:grid;place-items:center}
  .pchip .av.av-more svg{width:22px;height:22px}
  .pchip .nm{font-size:.68rem;color:var(--muted);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .pchip.sel .nm{color:var(--txt);font-weight:600}
  #playersPick .pchip .nm{color:rgba(28,27,25,.6)}
  #playersPick .pchip.sel .nm{color:var(--ink)}
  .badge{position:absolute;top:-3px;right:6px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:.64rem;font-weight:800;color:#16332b;box-shadow:0 1px 3px rgba(0,0,0,.4)}
  .badge.A{background:var(--oro-soft)}
  .badge.B{background:#9FD3C0}
  .badge.C{background:#3B6FC0;color:#fff}
  .guest-add{margin-top:12px}
  .ghost-add{width:100%;border:1px dashed var(--feltro-line);background:transparent;color:var(--txt);border-radius:var(--r-sm);padding:12px 14px;font-weight:700;cursor:pointer;font-family:'Hanken Grotesk';font-size:.95rem}
  .matchup{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:14px;padding-top:14px;border-top:1px solid var(--feltro-line)}
  .matchup .t{flex:1;min-width:0;text-align:center}
  .matchup .t small{display:block;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-2);font-weight:700;margin-bottom:6px}
  .matchup .t .t-name{font-family:'Fraunces',serif;font-weight:600;font-size:.92rem;display:block;line-height:1.2;margin-top:2px}
  .matchup .t .t-name div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .matchup .t-avs { display: flex; justify-content: center; margin-bottom: 4px; }
  .matchup .t-avs .av { width: 30px; height: 30px; font-size: 13px; border: 2px solid var(--feltro-deep); }
  .matchup .t-avs .av + .av { margin-left: -9px; }
  .matchup .vs{font-size:.66rem;letter-spacing:.16em;color:var(--muted-2);font-weight:700}
  .target-set{display:flex;align-items:center;gap:10px;margin-top:14px}
  .target-set label{font-size:.8rem;font-weight:600;color:var(--muted);flex:1}
  .target-set input{width:110px;border:1px solid var(--feltro-line);background:rgba(0,0,0,.18);color:var(--txt);border-radius:var(--r-sm);padding:11px 12px;font-family:'Fraunces',serif;font-weight:600;font-size:1.1rem;text-align:center;font-variant-numeric:tabular-nums}
  .target-set input:focus{outline:2px solid var(--oro)}

  /* tournaments */
  .tcard{display:flex;align-items:center;gap:14px;padding:16px;border-radius:var(--r-lg);border:1px solid var(--feltro-line);background:linear-gradient(180deg, rgba(244,239,226,.05), rgba(0,0,0,.1));cursor:pointer;transition:border-color .15s;margin-bottom:10px}
  .tcard:hover{border-color:rgba(203,161,76,.4)}
  .tcard.done{border-color:rgba(203,161,76,.4)}
  .tcard.done .rank{background:linear-gradient(100deg,var(--oro-deep),var(--oro));color:#241a06;border-radius:50%;width:34px;height:34px;line-height:34px;font-size:1rem}
  .tourney-actions{display:flex;gap:10px;margin-top:24px}
  .tourney-actions button{flex:1;appearance:none;border:1px solid var(--feltro-line);background:rgba(244,239,226,.06);color:var(--txt);border-radius:var(--r-sm);padding:12px 14px;font-family:'Hanken Grotesk';font-weight:700;font-size:.95rem;cursor:pointer}
  .tourney-actions #tDelete, .tourney-actions #btnDeleteGame{color:#E89B92;border-color:rgba(192,70,59,.35)}
  .tourney-actions button:active{background:rgba(244,239,226,.12)}
  .tcard .rank{font-family:'Fraunces',serif;font-size:1.4rem;color:var(--oro-soft);flex:none;width:30px;text-align:center}
  .tcard .info{flex:1;min-width:0}
  .tcard .info b{font-family:'Fraunces',serif;font-weight:600;font-size:1.1rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .tcard .info span{font-size:.8rem;color:var(--muted)}
  .tcard .chev{color:var(--muted-2);flex:none}
  .tcard .chev svg{width:18px;height:18px}
  .turno-h{display:flex;align-items:center;gap:8px;margin:18px 2px 8px;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--muted)}
  .turno-h .bye{margin-left:auto;color:var(--muted-2);letter-spacing:.04em;text-transform:none;font-weight:600;font-size:.74rem}
  .match{display:flex;align-items:center;gap:10px;padding:13px 14px;border-radius:var(--r-md);border:1px solid var(--feltro-line);background:rgba(244,239,226,.04);cursor:pointer;margin-bottom:8px;transition:border-color .15s}
  .match:hover{border-color:rgba(203,161,76,.35)}
  .match .pair{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
  .match .row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.92rem}
  .match .row .nm{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .match .row .sc{font-family:'Fraunces',serif;font-variant-numeric:tabular-nums;font-weight:600;flex:none}
  .match .row.w .nm,.match .row.w .sc{color:var(--oro-soft)}
  .match .vs{text-align:center;font-size:.64rem;letter-spacing:.18em;color:var(--muted-2);font-weight:700}
  .match .stat{flex:none;font-size:.66rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 9px;border-radius:99px}
  .stat.todo{color:var(--muted);background:rgba(244,239,226,.07)}
  .stat.done{color:#1d3a31;background:var(--oro-soft)}
  .stat.live{color:#241a06;background:linear-gradient(100deg,var(--oro-deep),var(--oro))}

  /* history + stats */

  .gd-card{border:1px solid var(--feltro-line);border-radius:var(--r-lg);background:linear-gradient(180deg, rgba(244,239,226,.05), rgba(0,0,0,.12));padding:14px 16px;margin-bottom:8px}
  .gd-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:5px 0}
  .gd-row .nm{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .gd-row .sc{font-family:'Fraunces',serif;font-variant-numeric:tabular-nums;font-weight:600;font-size:1.35rem;flex:none}
  .gd-row.w .nm,.gd-row.w .sc{color:var(--oro-soft)}

  /* sheets */
  .scrim{position:fixed;inset:0;background:rgba(8,20,16,.55);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .25s;z-index:40}
  .scrim.open{opacity:1;pointer-events:auto}
  .sheet{position:fixed;left:0;right:0;bottom:0;z-index:50;max-width:560px;margin:0 auto;background:var(--carta);color:var(--ink);border-radius:24px 24px 0 0;box-shadow:0 -20px 60px -20px rgba(0,0,0,0);transform:translateY(101%);transition:transform .32s cubic-bezier(.2,.85,.25,1),box-shadow .32s;max-height:92dvh;display:flex;flex-direction:column;padding-bottom:env(safe-area-inset-bottom)}
  .sheet.open{transform:translateY(0);box-shadow:0 -20px 60px -20px rgba(0,0,0,.6)}
  /* player editor always stacks above other open sheets */
  #scrim3{z-index:45}
  #tSheet{z-index:50}
  #scrim5{z-index:55}
  #playersSheet{z-index:60}
  #scrim4{z-index:65}
  #pSheet{z-index:70}
  /* rules sheet stacks above settings */
  #scrim7{z-index:75}
  #rulesSheet{z-index:80}
  /* card-tally popup stacks above the round sheet */
  #scrim8{z-index:85}
  #cardsSheet{z-index:88}
  /* table / seating popup */
  #scrim9{z-index:85}
  #tableSheet{z-index:88}
  #scrimImport, #scrimConfirm, #scrimPrompt{z-index:92}
  #importSheet, #confirmSheet, #promptSheet{z-index:95}
  .table-area{position:relative;height:320px;margin-top:4px;touch-action:none;user-select:none}
  .table-felt{position:absolute;left:50%;top:160px;transform:translate(-50%,-50%);width:62%;height:170px;border-radius:50%;background:radial-gradient(ellipse at 50% 35%, #1c5a4b, #0f352b);border:1px solid rgba(28,27,25,.12);display:grid;place-items:center}
  .table-felt span{font-family:'Fraunces',serif;color:rgba(237,234,223,.55);font-size:.8rem;letter-spacing:.1em;text-transform:uppercase}
  .seat{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:3px;cursor:grab;touch-action:none}
  .seat .av{border:2px solid var(--carta-2);box-shadow:0 2px 6px -2px rgba(0,0,0,.4)}
  .seat.s0 .av{border-color:var(--oro-soft)}
  .seat.s1 .av{border-color:#9FD3C0}
  .seat .snm{font-size:.74rem;font-weight:600;color:var(--ink);max-width:74px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .seat.dealer .av{outline:3px solid var(--oro);outline-offset:1px}
  .seat .seat-d{position:absolute;top:-10px;right:-6px;font-size:1rem;filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))}
  .seat.dragging{z-index:5;cursor:grabbing;opacity:.92}
  .cards-btn{flex:none;width:42px;height:42px;border:1px solid rgba(28,27,25,.14);background:#fff;border-radius:var(--r-sm);cursor:pointer;display:grid;place-items:center;color:var(--ink)}
  .cards-btn svg{width:20px;height:20px}
  .cards-list{display:flex;flex-direction:column;gap:8px}
  .cards-list .chip .ctrl button{width:32px;height:32px;font-size:1.1rem}
  .cards-list .sum{display:flex;justify-content:space-between;align-items:center;padding:6px 6px 0;font-size:.86rem;font-weight:700}
  .cards-list .sum b{font-family:'Fraunces',serif;font-size:1.25rem}
  .rules{padding:2px 2px 8px;color:rgba(28,27,25,.8);font-size:.9rem;line-height:1.6}
  .rules h4{font-family:'Fraunces',serif;font-size:1.05rem;color:var(--ink);font-weight:600;margin:14px 0 4px}
  .rules h4:first-child{margin-top:0}
  .rules p{margin:0 0 4px}
  .rules b{color:var(--ink)}
  .rules ul{margin:2px 0 4px;padding-left:18px}
  .rules li{margin-bottom:3px}
  .grabber{width:38px;height:4px;border-radius:99px;background:rgba(28,27,25,.18);margin:10px auto 4px}
  .sheet-head{display:flex;align-items:center;justify-content:space-between;padding:6px 20px 12px}
  .sheet-head h3{font-family:'Fraunces',serif;font-weight:600;font-size:1.25rem}
  .close-x{appearance:none;border:none;background:rgba(28,27,25,.07);color:var(--ink);width:34px;height:34px;border-radius:50%;font-size:1.1rem;cursor:pointer;line-height:1}
  .sheet-body{overflow-y:auto;padding:4px 16px 16px;-webkit-overflow-scrolling:touch}
  .sheet-body .sec{color:rgba(28,27,25,.55);margin:14px 2px 8px}

  .teams2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .teams-stack{display:flex;flex-direction:column;gap:12px}
  .pane{background:var(--carta-2);border-radius:var(--r-md);padding:14px 12px;display:flex;flex-direction:column;gap:13px}
  .pane > .pane-name{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--rosso-deep);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .field{display:flex;flex-direction:column;gap:5px}
  .field > label{font-size:.74rem;font-weight:600;color:rgba(28,27,25,.62)}
  .stepper{display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:var(--r-sm);padding:4px}
  .stepper button{appearance:none;border:none;width:34px;height:34px;border-radius:8px;background:rgba(28,27,25,.06);color:var(--ink);font-size:1.2rem;font-weight:600;cursor:pointer;line-height:1;display:grid;place-items:center}
  .stepper button:active{background:rgba(28,27,25,.14)}
  .stepper .val{font-family:'Fraunces',serif;font-weight:600;font-size:1.15rem;font-variant-numeric:tabular-nums;min-width:24px;text-align:center}
  .numbox{width:100%;border:1px solid rgba(28,27,25,.14);background:#fff;border-radius:var(--r-sm);padding:11px 12px;font-family:'Hanken Grotesk';font-size:1.05rem;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;-moz-appearance:textfield}
  .numbox::-webkit-outer-spin-button,.numbox::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
  .numbox:focus,.txtbox:focus,select:focus{outline:2px solid var(--oro);outline-offset:1px}
  .with-calc{display:flex;gap:6px}
  .with-calc .numbox{flex:1}
  .chip{display:flex;align-items:center;justify-content:space-between;gap:8px;background:rgba(28,27,25,.04);border-radius:var(--r-sm);padding:5px 6px 5px 10px}
  .chip .lbl{font-size:.76rem;font-weight:600}
  .chip .lbl small{color:rgba(28,27,25,.5);font-weight:600}
  .chip .ctrl{display:flex;align-items:center;gap:6px}
  .chip .ctrl button{appearance:none;border:none;width:28px;height:28px;border-radius:7px;background:rgba(28,27,25,.08);font-size:1rem;font-weight:700;cursor:pointer;color:var(--ink)}
  .chip .ctrl .c{font-family:'Fraunces',serif;font-weight:600;width:28px;text-align:center;font-variant-numeric:tabular-nums;border:none;background:transparent;color:var(--ink);padding:0;appearance:textfield;-moz-appearance:textfield;}
  .chip .ctrl .c::-webkit-outer-spin-button,.chip .ctrl .c::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
  .checks{display:flex;flex-direction:column;gap:8px}
  .check{display:flex;align-items:center;gap:9px;cursor:pointer;font-size:.82rem;font-weight:600;color:rgba(28,27,25,.78)}
  .check input{appearance:none;width:20px;height:20px;border-radius:6px;border:2px solid rgba(28,27,25,.25);flex:none;cursor:pointer;position:relative;transition:.12s}
  .check input:checked{background:var(--rosso);border-color:var(--rosso)}
  .check input:checked::after{content:"";position:absolute;left:5px;top:1px;width:6px;height:11px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
  .check.gold input:checked{background:var(--oro-deep);border-color:var(--oro-deep)}
  .subtotal{margin-top:2px;padding:9px 11px;background:var(--ink);color:var(--carta);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:space-between;font-size:.8rem;font-weight:600}
  .subtotal b{font-family:'Fraunces',serif;font-size:1.3rem;font-variant-numeric:tabular-nums}
  .subtotal b.neg{color:var(--rosso)}

  .sheet-foot{display:flex;gap:10px;padding:14px 16px;border-top:1px solid rgba(28,27,25,.1);background:var(--carta)}
  .btn{flex:1;appearance:none;border:none;border-radius:var(--r-md);padding:16px;font-family:'Hanken Grotesk';font-weight:700;font-size:1rem;cursor:pointer;transition:transform .1s,filter .15s}
  .btn:active{transform:translateY(1px)}
  .btn-primary{background:var(--ink);color:var(--carta)}
  .btn-primary:hover{filter:brightness(1.15)}
  .btn-primary:disabled{opacity:.4;cursor:not-allowed}
  .btn-ghost{flex:0 0 auto;background:transparent;color:var(--rosso-deep);font-weight:700}

  .set-group{display:flex;flex-direction:column;gap:14px;padding:4px 4px 8px}
  .set-row{display:flex;flex-direction:column;gap:6px}
  .set-row > label{font-size:.74rem;font-weight:700;letter-spacing:.04em;color:rgba(28,27,25,.6);text-transform:uppercase}
  .txtbox{width:100%;border:1px solid rgba(28,27,25,.14);background:#fff;border-radius:var(--r-sm);padding:12px;font-family:'Hanken Grotesk';font-size:1.05rem;font-weight:600;color:var(--ink)}
  select.txtbox{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%231C1B19' stroke-width='1.6' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px}
  .toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--carta-2);border-radius:var(--r-sm);padding:13px 14px}
  .toggle-row .t-txt{font-size:.9rem;font-weight:600}
  .toggle-row .t-txt small{display:block;color:rgba(28,27,25,.5);font-weight:500;font-size:.76rem;margin-top:2px}
  .switch{position:relative;width:48px;height:28px;flex:none;cursor:pointer}
  .switch input{opacity:0;width:0;height:0}
  .switch .sl{position:absolute;inset:0;background:rgba(28,27,25,.18);border-radius:99px;transition:.18s}
  .switch .sl::before{content:"";position:absolute;width:22px;height:22px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.18s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
  .switch input:checked + .sl{background:var(--feltro)}
  .switch input:checked + .sl::before{transform:translateX(20px)}
  details.adv{background:var(--carta-2);border-radius:var(--r-sm);padding:4px 14px}
  details.adv summary{cursor:pointer;font-size:.84rem;font-weight:700;padding:11px 0;list-style:none;display:flex;align-items:center;justify-content:space-between}
  details.adv summary::-webkit-details-marker{display:none}
  details.adv summary::after{content:"+";font-family:'Fraunces',serif;font-size:1.2rem;color:rgba(28,27,25,.5)}
  details.adv[open] summary::after{content:"\2212"}
  .val-grid{display:grid;grid-template-columns:1fr 88px;gap:8px 10px;align-items:center;padding:4px 0 12px}
  .val-grid span{font-size:.86rem;font-weight:600;color:rgba(28,27,25,.75)}
  .val-grid input{border:1px solid rgba(28,27,25,.14);background:#fff;border-radius:var(--r-sm);padding:9px;font-family:'Hanken Grotesk';font-weight:700;font-size:16px;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}
  .rules-link{display:flex;align-items:center;gap:12px;width:100%;appearance:none;background:var(--carta-2);border:none;border-radius:var(--r-sm);padding:13px 14px;cursor:pointer;font-family:'Hanken Grotesk';text-align:left}
  .rules-link span{flex:1;font-weight:600;font-size:.95rem;color:var(--ink)}
  .rules-link .bk{width:20px;height:20px;color:var(--ink);flex:none}
  .rules-link .ch{width:18px;height:18px;color:rgba(28,27,25,.4);flex:none}
  .rules-link:active{background:#e1d8c2}
  .data-btns{display:flex;gap:8px}
  .data-btns .data-btn{flex:1;appearance:none;border:1px solid rgba(28,27,25,.16);background:#fff;border-radius:var(--r-sm);padding:12px;font-family:'Hanken Grotesk';font-weight:700;font-size:.9rem;cursor:pointer;color:var(--ink)}
  .data-btns .data-btn:active{background:var(--carta-2)}
  .ref{font-size:.8rem;color:rgba(28,27,25,.62);line-height:1.6;padding:2px 2px 6px}
  .ref b{color:var(--ink)}
  .danger{color:var(--rosso-deep);font-weight:700;text-align:center;width:100%;background:transparent;border:1px solid rgba(192,70,59,.35);border-radius:var(--r-sm);padding:12px 14px;cursor:pointer;font-family:'Hanken Grotesk';font-size:.95rem}

  /* player stats (in editor sheet) */
  .pstat-tiles{display:flex;gap:8px}
  .pstat{flex:1;background:var(--carta-2);border-radius:var(--r-sm);padding:10px 8px;text-align:center}
  .pstat b{font-family:'Fraunces',serif;font-size:1.45rem;display:block;color:var(--ink);line-height:1.1}
  .pstat span{font-size:.64rem;letter-spacing:.06em;text-transform:uppercase;color:rgba(28,27,25,.55);font-weight:700}
  .pstat-recent{display:flex;flex-direction:column;gap:6px;margin-top:8px}
  .pr-row{display:flex;align-items:center;gap:9px;background:var(--carta-2);border-radius:var(--r-sm);padding:8px 10px;font-size:.85rem}
  .pr-row .r-res{width:20px;height:20px;border-radius:8px;display:grid;place-items:center;font-size:.66rem;font-weight:800;flex:none;color:#fff}
  .pr-row .r-res.w{background:var(--oro-deep)}
  .pr-row .r-res.l{background:rgba(28,27,25,.32)}
  .pr-row .r-lbl{flex:1;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .pr-row .r-sc{font-family:'Fraunces',serif;font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink);flex:none}

  /* roster */
  .roster{display:flex;flex-direction:column;gap:8px}
  .person{display:flex;align-items:center;gap:11px;background:var(--carta-2);border-radius:var(--r-md);padding:9px 12px;cursor:pointer;transition:background .12s}
  .person:hover{background:#e1d8c2}
  .person .av{width:34px;height:34px;font-size:15px}
  .person .pn{flex:1;font-weight:600;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .person .edit{color:rgba(28,27,25,.35)}
  .person .edit svg{width:18px;height:18px;display:block}

  /* avatar picker */
  .av-edit{display:flex;flex-direction:column;align-items:center;gap:12px;padding:6px 0 4px}
  .av-big{width:84px;height:84px;font-size:34px;box-shadow:0 6px 20px -8px rgba(0,0,0,.4)}
  .photo-btns{display:flex;gap:8px}
  .photo-btns button{appearance:none;border:1px solid rgba(28,27,25,.16);background:#fff;border-radius:var(--r-sm);padding:9px 14px;font-weight:700;font-size:.85rem;cursor:pointer;color:var(--ink)}
  .photo-btns .rm{color:var(--rosso-deep);border-color:rgba(192,70,59,.3)}
  .picker-label{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:rgba(28,27,25,.5);width:100%;margin:6px 0 -2px}
  .sym-grid{display:flex;flex-wrap:wrap;gap:7px;width:100%}
  .sym{width:40px;height:40px;border-radius:var(--r-sm);display:grid;place-items:center;font-size:19px;background:#fff;border:1px solid rgba(28,27,25,.12);cursor:pointer}
  .sym.on{outline:2px solid var(--oro);outline-offset:0}
  .col-row{display:flex;flex-wrap:wrap;gap:9px;width:100%}
  .col{width:32px;height:32px;border-radius:50%;cursor:pointer;border:3px solid transparent}
  .col.on{border-color:var(--ink)}


  .couple-row{display:flex;align-items:center;gap:8px;background:var(--carta-2);border-radius:var(--r-md);padding:10px;margin-bottom:8px}
  .couple-row .num{font-family:'Fraunces',serif;font-weight:600;color:var(--rosso-deep);flex:none;width:18px;text-align:center}
  .couple-row .sels{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0}
  
  .p-slot-btn{display:flex;align-items:center;gap:8px;background:var(--carta);border:1px solid rgba(28,27,25,.15);border-radius:var(--r-sm);padding:8px 10px;font-family:inherit;font-size:.95rem;color:var(--ink);cursor:pointer;text-align:left;width:100%}
  .p-slot-btn.empty{color:rgba(28,27,25,.4);font-style:italic;justify-content:center}
  .p-slot-btn .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .p-slot-btn .av{flex:none;width:24px;height:24px;font-size:11px}
  .couple-row select{font-size:.92rem;padding:9px 30px 9px 10px}
  .couple-row .rm{appearance:none;border:none;background:transparent;color:rgba(28,27,25,.4);cursor:pointer;font-size:1.2rem;padding:4px 6px;flex:none}
  .inline-err{color:var(--rosso-deep);font-size:.8rem;font-weight:600;padding:2px 4px}

  .toast{position:fixed;left:50%;top:max(24px, env(safe-area-inset-top));width:90%;max-width:400px;transform:translate(-50%,-20px);z-index:100;background:var(--ink);color:var(--carta);padding:14px 20px;border-radius:var(--r-md);font-size:.95rem;font-weight:600;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;text-align:center;gap:8px}
  .toast.show{opacity:1;transform:translate(-50%,0)}
  .toast .undo{color:var(--oro-soft);font-weight:700;cursor:pointer;text-decoration:underline}

  footer{text-align:center;color:var(--muted-2);font-size:.72rem;letter-spacing:.04em;padding-top:6px}
  .dock{position:fixed;left:0;right:0;bottom:0;z-index:30;pointer-events:none;background:rgba(24,74,62,.95);-webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);border-top:1px solid rgba(244,239,226,.16);box-shadow:0 -10px 30px -16px rgba(0,0,0,.55);padding-bottom:env(safe-area-inset-bottom)}
  .dock-bar{pointer-events:auto;max-width:560px;margin:0 auto;display:flex;align-items:center;justify-content:space-around;padding:8px 8px}
  .dock-btn{flex:1;appearance:none;border:none;background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 0;cursor:pointer;font-family:'Hanken Grotesk';font-weight:600;font-size:.62rem;letter-spacing:.01em;white-space:nowrap;border-radius:16px;transition:color .15s,transform .1s}
  .dock-btn svg{width:23px;height:23px}
  .dock-btn.on{color:var(--oro-soft)}
  .dock-btn:active{transform:scale(.92)}
  /* orientation lock (phones in landscape) */
  .rotate-lock{display:none}
  .rotate-lock .suit{font-family:'Fraunces',serif;font-size:1.7rem;color:var(--oro-soft);line-height:1}
  .rotate-lock svg{width:56px;height:56px;color:var(--txt);margin:6px 0}
  .rotate-lock b{font-family:'Fraunces',serif;font-weight:600;font-size:1.35rem;color:var(--txt)}
  .rotate-lock span{font-size:.92rem;color:var(--muted)}
  @media (orientation:landscape) and (max-height:500px){
    .rotate-lock{display:flex;position:fixed;inset:0;z-index:9999;background:var(--feltro);flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:24px}
    .wrap,.dock{display:none!important}
  }
  @media (max-width:380px){.side .total{font-size:2.5rem}.teams2{gap:8px}.pane{padding:11px 9px}.pgrid{gap:12px 2px}}
  @media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
.match{position:relative}
.match-right{display:flex;flex-direction:column;align-items:center;gap:6px;flex:none}
.match-date{font-size:.65rem;color:var(--muted-2);letter-spacing:.02em;font-weight:600}
.match .hg-rm{appearance:none;border:none;background:rgba(248,113,113,0.15);color:#f87171;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:1.1rem;line-height:1;cursor:pointer;opacity:0.6;transition:all .2s;flex:none}
.match .hg-rm:hover{opacity:1;background:rgba(248,113,113,0.25)}
.nm-wrap{display:flex;align-items:center;gap:6px;min-width:0}
.avs-mini{display:flex}
.avs-mini .av{border:1.5px solid var(--feltro-line)}
.avs-mini .av+.av{margin-left:-8px}
