
  :root{
    --paper:#EAE3D2;--paper-2:#F1ECDE;--card:#F3EEE1;--ink:#232019;--ink-soft:#6c6453;
    --line:#cfc6ad;--line-2:#dcd4be;--red:#C13B30;--blue:#2B568F;--green:#5C7B3C;--gold:#B5872E;
    --shadow:0 1px 0 rgba(35,32,25,.05), 0 8px 22px -14px rgba(35,32,25,.5);
  }
  *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
  html,body{margin:0;padding:0}
  body{font-family:'Archivo',system-ui,sans-serif;background:var(--paper);color:var(--ink);
    -webkit-font-smoothing:antialiased;background-image:radial-gradient(rgba(35,32,25,.035) 1px,transparent 1px);background-size:4px 4px}
  .wrap{max-width:480px;margin:0 auto;min-height:100vh;position:relative;padding-bottom:40px}

  header{padding:18px 18px 10px;border-bottom:1.5px solid var(--ink);position:relative}
  .brandrow{display:flex;align-items:flex-end;justify-content:space-between;gap:10px}
  .brand h1{font-size:25px;font-weight:900;letter-spacing:.14em;line-height:.95;margin:0;text-transform:uppercase}
  .brand .sub{font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft);margin-top:6px;font-weight:700}
  .stamp-logo{font-family:'Shippori Mincho',serif;font-weight:800;font-size:13px;color:var(--red);
    border:2px solid var(--red);border-radius:8px;padding:7px 6px;line-height:1;text-align:center;transform:rotate(-4deg);
    letter-spacing:.04em;box-shadow:inset 0 0 0 1.5px var(--paper),inset 0 0 0 3px var(--red);background:rgba(193,59,48,.06);flex:0 0 auto}
  .syncbar{display:flex;align-items:center;gap:7px;margin-top:11px;font-size:10.5px;letter-spacing:.06em;color:var(--ink-soft);font-weight:600;text-transform:uppercase}
  .dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(92,123,60,.16)}
  .dot.off{background:#b9742c;box-shadow:0 0 0 3px rgba(185,116,44,.16)}
  .syncbar .gear{margin-left:auto;background:none;border:1.5px solid var(--line);color:var(--ink-soft);border-radius:7px;
    font:inherit;font-size:10.5px;font-weight:700;letter-spacing:.06em;padding:4px 9px;cursor:pointer;text-transform:uppercase}
  .syncbar .gear:active{background:var(--paper-2)}
  .editbanner{background:var(--ink);color:var(--paper);font-size:10.5px;font-weight:700;letter-spacing:.08em;
    text-transform:uppercase;text-align:center;padding:6px;display:none}
  .editbanner.on{display:block}

  .tabs{display:flex;position:sticky;top:0;z-index:30;background:var(--paper);border-bottom:1.5px solid var(--ink);box-shadow:0 6px 14px -12px rgba(35,32,25,.6)}
  .tab{flex:1;background:none;border:none;font:inherit;cursor:pointer;padding:11px 4px 9px;color:var(--ink-soft);position:relative;display:flex;flex-direction:column;align-items:center;gap:2px}
  .tab .kanji{font-family:'Shippori Mincho',serif;font-weight:800;font-size:18px;line-height:1}
  .tab .romaji{font-size:9px;letter-spacing:.18em;text-transform:uppercase;font-weight:700}
  .tab[aria-selected="true"]{color:var(--ink)}
  .tab[aria-selected="true"]::after{content:"";position:absolute;left:18%;right:18%;bottom:-1.5px;height:3px;border-radius:3px;background:var(--ink)}
  .tab:not(:last-child){border-right:1.5px solid var(--line-2)}

  .scoreboard{padding:13px 14px 4px}
  .sb-head{display:flex;align-items:baseline;justify-content:space-between;margin:0 2px 9px}
  .sb-head .ttl{font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:800;color:var(--ink-soft)}
  .sb-head .leader{font-size:11px;font-weight:700;color:var(--gold);letter-spacing:.04em}
  .teams{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
  .team{background:var(--card);border:1.5px solid var(--line);border-radius:11px;padding:9px 8px 8px;text-align:center;position:relative;overflow:hidden}
  .team.lead{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}
  .badge{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;font-weight:800;font-size:12px;color:#fff}
  .team .badge{margin:0 auto 5px}
  .team .nm{font-size:10.5px;font-weight:700;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .team .pts{font-size:27px;font-weight:900;line-height:1;margin-top:4px;font-variant-numeric:tabular-nums}
  .team .brk{font-size:9px;color:var(--ink-soft);margin-top:3px;font-weight:600}
  .team .me{position:absolute;top:5px;right:6px;font-size:8px;font-weight:800;letter-spacing:.08em;color:var(--ink-soft);text-transform:uppercase}
  .crown{position:absolute;top:-1px;left:0;right:0;height:4px;background:var(--gold)}

  .boardwrap{padding:14px}
  .board-meta{display:flex;align-items:center;gap:8px;margin:2px 2px 11px}
  .board-meta .big-kanji{font-family:'Shippori Mincho',serif;font-weight:800;font-size:30px;line-height:.9}
  .board-meta .mtxt{font-size:10px;color:var(--ink-soft);letter-spacing:.04em;line-height:1.35;font-weight:600}
  .board-meta .mtxt b{color:var(--ink);font-weight:800}
  .grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
  .cell{position:relative;aspect-ratio:1/1;background:var(--card);border:1.5px solid var(--line);border-radius:9px;
    padding:5px 4px 4px;cursor:pointer;overflow:hidden;display:flex;flex-direction:column;transition:transform .08s ease}
  .cell:active{transform:scale(.94)}
  .cell .no{font-size:9px;font-weight:800;color:var(--ink-soft);line-height:1;font-variant-numeric:tabular-nums}
  .cell .ttl{font-size:8.4px;font-weight:700;line-height:1.08;margin-top:3px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;letter-spacing:-.01em}
  .cell .pips{position:absolute;bottom:4px;left:4px;display:flex;gap:2px}
  .cell .pips i{width:4px;height:4px;border-radius:50%;background:var(--line);display:block}
  .cell .pips i.on{background:var(--ink-soft)}
  .cell.claimed .ttl,.cell.claimed .no{color:rgba(35,32,25,.5)}
  .cell.line-hit{border-color:var(--gold);box-shadow:inset 0 0 0 1.5px var(--gold)}
  .cell .vmark{position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;border:1.5px solid var(--line)}
  .cell .vmark.ok{background:var(--gold);border-color:var(--gold)}
  .cell.shared .shband{position:absolute;bottom:0;left:0;right:0;height:3px;background:repeating-linear-gradient(90deg,var(--gold) 0 6px,transparent 6px 10px)}
  .cell .stamp{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;gap:-6px}
  .cell .seal{aspect-ratio:1;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;font-weight:800;mix-blend-mode:multiply}
  .cell .seal.solo{width:60%;font-size:15px}
  .cell .seal.mini{width:40%;font-size:10px;margin:0 -5px}
  .seal.s-t1{color:var(--red);box-shadow:inset 0 0 0 2px var(--red),inset 0 0 0 4px var(--card)}
  .seal.s-t2{color:var(--blue);box-shadow:inset 0 0 0 2px var(--blue),inset 0 0 0 4px var(--card)}
  .seal.s-t3{color:var(--green);box-shadow:inset 0 0 0 2px var(--green),inset 0 0 0 4px var(--card)}
  .cell .tint{position:absolute;inset:0;mix-blend-mode:multiply;opacity:.14;pointer-events:none}
  .tint.s-t1{background:var(--red)}.tint.s-t2{background:var(--blue)}.tint.s-t3{background:var(--green)}
  @keyframes thunk{0%{transform:scale(1.7);opacity:0}55%{opacity:1}70%{transform:scale(.9)}100%{transform:scale(1)}}
  .cell .seal{animation:thunk .3s cubic-bezier(.3,1.5,.5,1) both}

  .backdrop{position:fixed;inset:0;background:rgba(35,32,25,.42);z-index:50;opacity:0;pointer-events:none;transition:opacity .2s}
  .backdrop.show{opacity:1;pointer-events:auto}
  .sheet{position:fixed;left:0;right:0;bottom:0;z-index:60;max-width:480px;margin:0 auto;background:var(--paper-2);
    border-radius:20px 20px 0 0;border-top:2px solid var(--ink);padding:8px 18px calc(20px + env(safe-area-inset-bottom));
    transform:translateY(102%);transition:transform .26s cubic-bezier(.2,.9,.3,1);box-shadow:0 -20px 50px -20px rgba(35,32,25,.6);max-height:90vh;overflow-y:auto}
  .sheet.show{transform:translateY(0)}
  .grab{width:38px;height:4px;border-radius:3px;background:var(--line);margin:5px auto 14px}
  .eyebrow{display:flex;align-items:center;gap:8px;font-size:10px;letter-spacing:.16em;text-transform:uppercase;font-weight:800;color:var(--ink-soft)}
  .eyebrow .pill{background:var(--ink);color:var(--paper);border-radius:20px;padding:2px 8px;letter-spacing:.1em}
  .sheet h2{font-size:22px;font-weight:900;margin:10px 0 6px;letter-spacing:-.01em;line-height:1.05}
  .sheet .desc{font-size:14px;line-height:1.45;color:#3f3a2e;font-weight:500}
  .meta2{display:flex;align-items:center;gap:14px;margin:14px 0 4px;font-size:11px;font-weight:700;color:var(--ink-soft)}
  .meta2 .diff{display:flex;align-items:center;gap:5px}
  .meta2 .diff i{width:7px;height:7px;border-radius:50%;background:var(--line)}
  .meta2 .diff i.on{background:var(--ink)}
  .seclabel{font-size:10px;letter-spacing:.16em;text-transform:uppercase;font-weight:800;color:var(--ink-soft);margin:18px 0 9px}
  .chips{display:flex;gap:8px}
  .chip{flex:1;display:flex;align-items:center;gap:7px;justify-content:center;background:var(--card);border:1.5px solid var(--line);
    border-radius:11px;padding:9px 6px;cursor:pointer;font:inherit;font-size:11px;font-weight:700;color:var(--ink-soft)}
  .chip .badge{width:18px;height:18px;font-size:9px}
  .chip[aria-pressed="true"]{border-color:var(--ink);color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--ink);background:var(--paper-2)}
  .chip.locked{opacity:.95}
  .sharehint{font-size:10.5px;color:var(--ink-soft);margin-top:8px;line-height:1.4;font-weight:500}
  .vrow{display:flex;align-items:center;gap:10px;margin-top:16px;background:var(--card);border:1.5px solid var(--line);border-radius:11px;padding:11px 12px;cursor:pointer}
  .vrow .vbox{width:22px;height:22px;border-radius:6px;border:2px solid var(--line);flex:0 0 auto;display:flex;align-items:center;justify-content:center;color:transparent;font-weight:900}
  .vrow.on{border-color:var(--gold)}
  .vrow.on .vbox{background:var(--gold);border-color:var(--gold);color:#fff}
  .vrow .vt{font-size:12px;font-weight:700}.vrow .vd{font-size:10.5px;color:var(--ink-soft);margin-top:1px;font-weight:500;line-height:1.3}
  .actions{display:flex;gap:9px;margin-top:16px}
  .btn{flex:1;font:inherit;font-weight:800;font-size:14px;letter-spacing:.02em;border-radius:12px;padding:14px;cursor:pointer;border:2px solid var(--ink);background:var(--ink);color:var(--paper)}
  .btn:active{transform:translateY(1px)}
  .btn.ghost{background:none;color:var(--ink)}
  .btn.muted{border-color:var(--line);color:var(--ink-soft);background:none;flex:0 0 auto;padding:14px 16px}
  .lockline{font-size:12px;color:var(--ink-soft);margin-top:14px;line-height:1.4;font-weight:600}
  .edit-field{width:100%;font:inherit;font-weight:600;font-size:14px;padding:11px 12px;border:1.5px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);margin-top:8px}
  textarea.edit-field{resize:vertical;min-height:74px;line-height:1.4;font-weight:500}
  .edit-field:focus{outline:none;border-color:var(--ink)}
  .diffpick{display:flex;gap:8px;margin-top:8px}
  .diffpick button{flex:1;font:inherit;font-weight:700;font-size:12px;border:1.5px solid var(--line);background:var(--card);color:var(--ink-soft);border-radius:10px;padding:10px;cursor:pointer}
  .diffpick button[aria-pressed="true"]{border-color:var(--ink);color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--ink)}

  .setup{position:fixed;inset:0;z-index:80;background:var(--paper);overflow-y:auto;background-image:radial-gradient(rgba(35,32,25,.04) 1px,transparent 1px);background-size:4px 4px}
  .setup .inner{max-width:480px;margin:0 auto;padding:30px 22px 50px}
  .big-stamp{font-family:'Shippori Mincho';font-weight:800;font-size:30px;color:var(--red);border:3px solid var(--red);display:inline-block;
    padding:10px 12px;border-radius:12px;transform:rotate(-4deg);line-height:1;letter-spacing:.05em;
    box-shadow:inset 0 0 0 2px var(--paper),inset 0 0 0 4px var(--red);background:rgba(193,59,48,.06)}
  .setup h1{font-size:27px;font-weight:900;letter-spacing:.04em;margin:18px 0 4px;text-transform:uppercase}
  .setup p.lede{font-size:13.5px;color:var(--ink-soft);line-height:1.5;margin:0 0 8px;font-weight:500}
  .step{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;font-weight:800;color:var(--ink-soft);margin:26px 0 11px;display:flex;align-items:center;gap:9px}
  .step::after{content:"";flex:1;height:1.5px;background:var(--line-2)}
  .trow{display:flex;align-items:center;gap:9px;margin-bottom:9px}
  .trow .swatch{width:30px;height:30px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;color:#fff;font-family:'Shippori Mincho';font-weight:800;font-size:13px}
  .trow input{flex:1;min-width:0;font:inherit;font-weight:600;font-size:14px;padding:11px 12px;border:1.5px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink)}
  .trow input.mark{flex:0 0 58px;text-align:center;font-family:'Shippori Mincho';font-weight:800}
  .trow input:focus{outline:none;border-color:var(--ink)}
  .pickrow{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
  .pick{background:var(--card);border:1.5px solid var(--line);border-radius:11px;padding:12px 6px;text-align:center;cursor:pointer}
  .pick .b{width:28px;height:28px;border-radius:50%;margin:0 auto 6px;display:flex;align-items:center;justify-content:center;color:#fff;font-family:'Shippori Mincho';font-weight:800;font-size:13px}
  .pick .pn{font-size:11px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .pick[aria-pressed="true"]{border-color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--ink);background:var(--paper-2)}
  .hint{font-size:11px;color:var(--ink-soft);line-height:1.5;margin:10px 0 0;font-weight:500;background:rgba(35,32,25,.035);border-radius:10px;padding:11px 12px;border:1px solid var(--line-2)}
  .hint b{color:var(--ink)}
  .ref{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--card);border:1.5px solid var(--line);border-radius:11px;padding:12px 13px;margin-top:8px}
  .ref .rt{font-size:12.5px;font-weight:700}.ref .rd{font-size:10.5px;color:var(--ink-soft);font-weight:500;margin-top:2px;line-height:1.35}
  .toggle{flex:0 0 auto;width:46px;height:27px;border-radius:20px;background:var(--line);border:none;cursor:pointer;position:relative;transition:background .15s}
  .toggle::after{content:"";position:absolute;top:3px;left:3px;width:21px;height:21px;border-radius:50%;background:#fff;transition:left .15s}
  .toggle[aria-pressed="true"]{background:var(--green)}
  .toggle[aria-pressed="true"]::after{left:22px}
  .start{width:100%;margin-top:26px;font:inherit;font-weight:900;font-size:16px;letter-spacing:.06em;text-transform:uppercase;background:var(--ink);color:var(--paper);border:none;border-radius:13px;padding:16px;cursor:pointer}
  .start:active{transform:translateY(1px)}
  .reset-line{text-align:center;margin-top:16px}
  .reset-line button{background:none;border:none;color:var(--ink-soft);font:inherit;font-size:11.5px;font-weight:700;letter-spacing:.04em;text-decoration:underline;cursor:pointer}

  .toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);z-index:90;background:var(--ink);color:var(--paper);
    font-size:12.5px;font-weight:700;padding:11px 16px;border-radius:30px;opacity:0;transition:all .2s;pointer-events:none;max-width:90%;text-align:center;box-shadow:var(--shadow)}
  .toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
  .hidden{display:none !important}
