:root{--bg: #f4f1ea;--fg: #1d2420;--muted: #69716c;--line: #ddd7cb;--card: #fffdf8;--felt: #1f5a45;--felt-2: #184a38;--felt-fg: #e9f2ec;--ok: #1f8a4c;--ok-bg: #e3f3e8;--ng: #c2412d;--ng-bg: #fbe7e2;--accent: #c8963e;--tw: min(54px, calc((100vw - 20px) / 14.3));color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #141816;--fg: #e6ebe7;--muted: #97a19b;--line: #2b322e;--card: #1b201d;--felt: #173f31;--felt-2: #123427;--ok: #63d18f;--ok-bg: #16301f;--ng: #f28a73;--ng-bg: #3a1c16;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.5 -apple-system,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans SC,sans-serif;-webkit-tap-highlight-color:transparent}#app{max-width:820px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}button{font:inherit;color:inherit}.top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(12px + env(safe-area-inset-top)) 16px 8px}.brand{color:inherit;text-decoration:none;font-size:20px;font-weight:700;letter-spacing:.08em;white-space:nowrap}.top nav{display:flex;gap:2px}.nav-link{padding:6px 9px;border-radius:8px;color:var(--muted);text-decoration:none;font-size:15px;white-space:nowrap}.nav-link[aria-current=true]{color:var(--fg);font-weight:600;background:var(--card);box-shadow:inset 0 0 0 1px var(--line)}.session{font-size:13px;opacity:.85;font-variant-numeric:tabular-nums}.streak{color:#f0c776}.muted{color:var(--muted)}.center{text-align:center}.small{font-size:12px}.view[hidden]{display:none}main{flex:1}.levels{display:flex;gap:6px;padding:6px 16px 12px}.level{flex:1;border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 0;font-size:14px;cursor:pointer}.level[aria-selected=true]{background:var(--felt);border-color:var(--felt);color:var(--felt-fg)}.table{background:radial-gradient(ellipse at 50% 0%,var(--felt),var(--felt-2));color:var(--felt-fg);padding:14px 0 22px}.prompt{display:flex;justify-content:space-between;align-items:baseline;margin:0 16px 14px;font-size:15px;opacity:.95}.daily-head{display:flex;align-items:baseline;justify-content:space-between;padding:6px 16px 12px}.daily-head h2{margin:0;font-size:17px}.hand{display:flex;justify-content:center;padding:0 10px}.tile{display:inline-block;width:var(--tw);aspect-ratio:3 / 4;background:var(--face, none) center / 100% 100% no-repeat,url(/tiles/front.svg) center / 100% 100% no-repeat;border-radius:12%/9%;box-shadow:0 2px #00000040;vertical-align:middle}.tile-sm{--tw: 30px}.tile-xs{--tw: 20px;margin:1px;box-shadow:0 1px #0003}.tile-btn{border:0;padding:0;margin:0 .3px;background:none;cursor:pointer;transition:transform .08s ease-out}.tile-btn:disabled{cursor:default}@media (hover: hover){.tile-btn:not(:disabled):hover,.tile-btn.is-cursor{transform:translateY(-18%)}}.tile-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tile-btn.is-best .tile{box-shadow:0 0 0 2px var(--ok),0 2px #00000040}.tile-btn.is-best,.tile-btn.is-wrong{transform:translateY(-18%)}.tile-btn.is-wrong .tile{box-shadow:0 0 0 2px var(--ng),0 2px #00000040;opacity:.85}.hint{margin:14px 16px;color:var(--muted);font-size:13px}.result{padding:12px 16px 24px}.verdict{margin:0 0 12px;padding:10px 12px;border-radius:8px;font-weight:600}.ok .verdict{background:var(--ok-bg);color:var(--ok)}.ng .verdict{background:var(--ng-bg);color:var(--ng)}.blocks-card{margin:0 0 12px;padding:12px 10px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card)}.blocks{display:flex;flex-wrap:wrap;gap:10px 8px}.block{display:flex;flex-direction:column;align-items:center;gap:4px}.block-tiles{display:flex;gap:1px}.block-label{font-size:11px;color:var(--muted);white-space:nowrap}.block-head .block-label,.block-shuntsu .block-label,.block-koutsu .block-label{color:var(--fg)}.block-cut{margin-left:auto;padding-left:8px;border-left:1px dashed var(--line)}.block-cut .tile{box-shadow:0 0 0 2px var(--ok),0 1px #0003}.block-cut .block-label{color:var(--ok);font-weight:600}.tile.is-mine{box-shadow:0 0 0 2px var(--ng),0 1px #0003}.mine-note{margin:10px 2px 0;font-size:14px;color:var(--ng)}.reason{margin:0 0 14px;font-size:14px;line-height:1.6}.reason-tag{display:inline-block;margin-right:6px;padding:0 6px;border-radius:4px;background:var(--felt);color:var(--felt-fg);font-size:12px}.discards{width:100%;border-collapse:collapse;font-size:14px}.discards th{text-align:left;font-weight:500;color:var(--muted);font-size:12px;padding:0 6px 4px}.discards td{padding:6px;border-top:1px solid var(--line);vertical-align:middle}.c-tile{width:44px}.c-count{width:64px;white-space:nowrap;font-variant-numeric:tabular-nums}.c-count b{font-size:17px}.c-count small{display:block;color:var(--muted);font-size:11px}.row.is-best{background:var(--ok-bg)}.row.is-mine:not(.is-best){background:var(--ng-bg)}.row.is-mine .c-tile .tile{box-shadow:0 0 0 2px var(--fg),0 1px #0003}.back{margin-top:8px;color:var(--muted);font-size:13px}.back summary{cursor:pointer;padding:6px 0}.actions{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}.btn{flex:1;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--fg);font-size:15px;text-decoration:none;white-space:nowrap;cursor:pointer}.btn-primary{border-color:var(--felt);background:var(--felt);color:var(--felt-fg);font-weight:600}.btn-quiet{flex:none;min-height:0;border:0;background:none;color:var(--muted);font-size:13px;text-decoration:underline}.sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:center;justify-content:center;padding:16px;background:#0000008c}.sheet{width:min(420px,100%);max-height:100%;overflow:auto;padding:16px;border-radius:14px;background:var(--bg)}.sheet-img{display:block;border:1px solid var(--line);box-shadow:0 4px 16px #0000001f;width:100%;max-height:60vh;object-fit:contain;border-radius:8px}.sheet .actions{margin:8px 0 0}.stats{padding:4px 16px 16px}.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}.stat{padding:12px 8px;border:1px solid var(--line);border-radius:10px;background:var(--card);text-align:center}.stat-value{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums}.stat-label{font-size:12px;color:var(--muted)}.level-table{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}.level-table th,.level-table td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:left}.level-table th{color:var(--muted);font-weight:500;font-size:12px}.stats .hint{margin-left:0;margin-right:0}.stats h3{margin:22px 0 8px;font-size:15px}.mistakes{list-style:none;margin:0;padding:0}.mistake{display:block;padding:8px 0;border-bottom:1px solid var(--line);color:inherit;text-decoration:none}.mistake-hand{display:flex;flex-wrap:wrap}.mistake-hand .tile-xs{--tw: min(22px, calc((100vw - 40px) / 14.5));margin:0 1px 0 0}.mistake-meta{margin-top:4px;font-size:12px;color:var(--muted)}footer{padding:16px;text-align:center;color:var(--muted);font-size:12px}footer a{color:inherit}.install-tip{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:5;display:flex;align-items:center;gap:10px;max-width:520px;margin:0 auto;padding:10px 8px 10px 10px;border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:0 8px 24px #0000002e}.install-icon{width:40px;height:40px;border-radius:9px}.install-text{flex:1;display:flex;flex-direction:column;font-size:13px;color:var(--muted)}.install-text b{color:var(--fg);font-size:14px}.install-btn{flex:none;min-height:36px;padding:6px 14px}.install-close{flex:none;width:32px;height:32px;border:0;background:none;color:var(--muted);font-size:22px;cursor:pointer}.calc-head{display:flex;align-items:baseline;justify-content:space-between;padding:6px 16px 12px}.calc-head h2{margin:0;font-size:17px}.calc-hand{display:flex;justify-content:center;min-height:calc(var(--tw) * 4 / 3);padding:0 10px}.calc-hand .tile-btn:hover{transform:none;opacity:.7}.tile-empty{background:none;box-shadow:inset 0 0 0 1px #ffffff40;margin:0 .3px}.calc-controls{padding:12px 16px 0}.calc-input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--fg);font:16px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace}.calc-error{margin:4px 2px 0;min-height:0;color:var(--ng);font-size:12px}.calc-error:empty{display:none}.calc-buttons{display:flex;align-items:center;gap:8px;margin:10px 0}.calc-buttons .btn{flex:none;min-height:36px;padding:6px 14px}.calc-toggle{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);white-space:nowrap}.palette{display:flex;flex-direction:column;gap:6px;padding:10px 8px;border:1px solid var(--line);border-radius:10px;background:var(--card)}.palette-row{display:flex;justify-content:center}.palette .tile{--tw: min(40px, calc((100vw - 64px) / 9.4))}.palette .tile-btn:hover{transform:translateY(-8%)}.palette .tile-btn:disabled{opacity:.3}.calc-result{padding:16px}.calc-title{margin:0 0 2px;font-size:16px;font-weight:600}.ok-text{color:var(--ok)}.forms-line{margin:0 0 12px}.waits{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.wait{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px;color:var(--muted)}.footer-actions{display:flex;justify-content:center;gap:8px;margin:0 0 8px}.footer-sponsor{display:block;margin:0;padding:4px 12px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--fg);font-size:13px;cursor:pointer}.sponsor-sheet h3{margin:4px 0 6px;text-align:center;font-size:17px}.sponsor-tabs{padding:4px 0 10px}.sponsor-qr{display:block;width:min(240px,70vw);height:auto;margin:0 auto;border-radius:8px;background:#fff}.sponsor-card{display:flex;align-items:center;gap:12px;margin:20px 0 0;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--card);font-size:13px}.sponsor-card .btn{flex:none;min-height:36px;padding:6px 14px}.fu-hand{display:flex;flex-direction:column;gap:12px;padding:0 10px}.fu-row{display:flex;justify-content:center;align-items:flex-end;gap:10px;flex-wrap:wrap}.fu-group{display:flex;flex-direction:column;align-items:center;gap:4px}.fu-cap{font-size:11px;opacity:.8}.fu-win .tile{box-shadow:0 0 0 2px var(--accent),0 2px #00000040}.fu-win .fu-cap{color:#f0c776;font-weight:600;opacity:1}.fu-choices{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:14px 16px 0}.fu-choice{min-height:44px;font-size:16px;font-variant-numeric:tabular-nums}.fu-choice:disabled{cursor:default;opacity:.55}.fu-choice.is-best{opacity:1;border-color:var(--ok);background:var(--ok-bg);color:var(--ok);font-weight:700}.fu-choice.is-wrong{opacity:1;border-color:var(--ng);background:var(--ng-bg);color:var(--ng)}.fu-table{width:100%;border-collapse:collapse;margin-bottom:14px;font-size:14px}.fu-table td{padding:7px 4px;border-bottom:1px solid var(--line)}.fu-table tfoot td{border-bottom:0;font-weight:700}.fu-num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.pts-card{text-align:center;padding:22px 16px}.pts-hanfu{font-size:34px;font-weight:700;letter-spacing:.04em}.pts-who{margin-top:4px;font-size:16px;opacity:.9}.pts-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;padding:14px 16px 0}.pts-field{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.pts-input{font-size:20px;font-variant-numeric:tabular-nums}.pts-form .btn{flex:none;min-width:88px}.pts-steps{margin:0 0 14px;padding-left:22px;font-size:14px;line-height:1.9;font-variant-numeric:tabular-nums}.pts-more{padding:16px}.cheat-grid{display:grid;grid-template-columns:1fr;gap:14px}@media (min-width: 640px){.cheat-grid{grid-template-columns:1fr 1fr}}.cheat-grid h4{margin:4px 0;font-size:13px;color:var(--fg)}.cheat{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;color:var(--fg)}.cheat th,.cheat td{padding:4px 3px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}.cheat thead th,.cheat tbody th{color:var(--muted);font-weight:500}.footer-note{margin:0 0 8px;font-size:12px}.sponsor-note{margin:0 0 12px;padding:8px 10px;border-radius:8px;background:var(--card);border:1px dashed var(--line);font-size:13px;text-align:center}.fb-input{display:block;width:100%;margin:0 0 10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--fg);font:inherit;font-size:15px}textarea.fb-input{resize:vertical}.fb-trap{position:absolute;left:-9999px;width:1px;height:1px}.feedback-sheet h3{margin:4px 0 6px;text-align:center;font-size:17px}
