:root{color-scheme:light;--ink:#153b33;--muted:#5c726b;--paper:#f4f3ed;--line:#d7dfd8;--accent:#bc7132;--white:#fffef9;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);line-height:1.6;font-size:16px}.topbar{background:var(--ink);color:#fff;padding:16px max(18px,env(safe-area-inset-left));display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{color:inherit;text-decoration:none;font-size:20px;font-weight:700;letter-spacing:1px}.brand span{display:block;font-size:11px;font-weight:400;opacity:.65;letter-spacing:3px}#network{font-size:12px;opacity:.8}main{max-width:850px;margin:auto;padding:22px 16px 32px}h1{font-size:28px;line-height:1.3;margin:8px 0 16px}h2{font-size:20px;margin:0 0 14px}h3{font-size:16px;margin:12px 0}p{margin:8px 0 14px}.eyebrow{color:var(--accent);font-size:12px;letter-spacing:2px;text-transform:uppercase}.muted,small{color:var(--muted)}.card{background:var(--white);border:1px solid var(--line);border-radius:16px;padding:20px;margin:16px 0}.hero{background:var(--ink);color:white;padding:26px;border-radius:18px}.hero .muted{color:#c2d7ce}.actions{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.actions>*{flex:1;min-width:110px}button,.button{font:inherit;line-height:1.3;border:1px solid var(--line);border-radius:10px;padding:12px 14px;min-height:46px;background:var(--white);color:var(--ink);cursor:pointer;text-align:center;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}button:hover,.button:hover{border-color:var(--ink)}button.primary,.button.primary{background:var(--ink);color:white;border-color:var(--ink)}button.danger{color:#9c362d}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font:inherit;color:inherit;background:white;border:1px solid var(--line);border-radius:9px;min-height:46px;padding:10px;width:100%}input[type=checkbox]{width:20px;min-height:20px;accent-color:var(--ink)}label{display:block;font-size:14px;margin:12px 0 4px}.field{margin-bottom:10px}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.check{display:flex;align-items:center;gap:10px;min-height:44px;margin:0;padding:8px 0;font-size:15px}.checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px}.warning{background:#fff3d9;border:1px solid #e6d3aa;color:#76502a;padding:12px;border-radius:10px;font-size:13px;margin:14px 0}.error{background:#fff0ed;color:#9c362d;border:1px solid #eac0ba;padding:14px;border-radius:10px;white-space:pre-wrap}.table{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.player{padding:16px;border:1px solid var(--line);border-radius:12px;background:white}.player.dealer{border-color:#608d79;background:#edf4ed}.player strong{font-variant-numeric:tabular-nums;font-size:26px;display:block}.player small{display:block}.badge{font-size:12px;border-radius:5px;padding:2px 6px;background:#e5ece5}.tiles{display:flex;flex-wrap:wrap;gap:6px;min-height:52px;padding:8px 0}.tile{min-width:44px;min-height:54px;padding:6px 4px;border:1px solid #c5cdc5;border-bottom:4px solid #b9cabc;border-radius:6px;box-shadow:0 2px 1px #173e3610;display:inline-flex;flex-direction:column;gap:0;background:#fff;line-height:1.2;font-weight:600}.tile b{font-size:21px}.tile small{font-size:11px;color:inherit}.tile.man{color:#994536}.tile.pin{color:#315f91}.tile.sou{color:#327755}.tile.honor{color:#2a4038}.tile.winning{outline:2px solid var(--accent)}.tile.selected{background:#dceadf;outline:2px solid var(--ink)}.palette{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}.palette .tile{width:100%;min-width:0}.tabs{display:flex;gap:6px;overflow-x:auto;padding:4px 0}.tabs button{font-size:14px;white-space:nowrap;min-width:70px;flex-shrink:0}.tabs .active{background:var(--ink);color:white}.row{display:flex;gap:8px;align-items:center;justify-content:space-between}.row>*{min-width:0}.records{padding:0;list-style:none}.records li{border-top:1px solid var(--line);padding:12px 0}.payment{font-size:19px;font-weight:600;padding:12px 0;border-bottom:1px solid var(--line)}.payment span{color:var(--accent);font-variant-numeric:tabular-nums}.result-number{font-size:38px;font-weight:700;letter-spacing:-1px}.yaku{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.yaku span{background:#eaf0e9;padding:6px 10px;border-radius:6px;font-size:14px}details summary{cursor:pointer;padding:10px 0}footer{text-align:center;color:var(--muted);font-size:12px;padding:10px 16px 28px}#notice{position:fixed;bottom:max(20px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:20;background:#153b33;color:white;max-width:90vw;border-radius:10px;box-shadow:0 6px 30px #0003;padding:12px 20px;display:none}.hidden{display:none!important}a{color:var(--ink)}:focus-visible{outline:3px solid #c58642;outline-offset:3px}.sticky{position:sticky;bottom:0;background:var(--paper);padding:12px 0 env(safe-area-inset-bottom);border-top:1px solid var(--line);z-index:5}.list-button{width:100%;justify-content:space-between;text-align:left;margin:6px 0}.ranking td,.ranking th{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line)}.ranking{width:100%;border-collapse:collapse}.compact{margin:0}.loading{opacity:.7;pointer-events:none}.selected-tools{padding:12px;background:#edf3ed;border-radius:10px}.section-head{margin-top:18px}code{font-size:13px}@media(min-width:600px){.palette{grid-template-columns:repeat(9,minmax(0,1fr))}}@media(min-width:700px){main{padding:32px}.table{grid-template-columns:repeat(4,minmax(0,1fr))}.palette .tile{min-height:64px}.hero{padding:36px}.checks{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:360px){main{padding:16px 10px}.card{padding:14px}.tile{min-width:38px}.brand span{display:none}.checks{grid-template-columns:1fr}}
.photo-card canvas{display:block;width:100%;height:auto;border-radius:12px;margin:14px 0;background:#e8ece9}.photo-candidates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0}.photo-candidate{border:1px solid #b8cec4;padding:10px;border-radius:10px}.photo-candidate.uncertain{border:2px solid #d97815;background:#fff7e8}.photo-guide{display:grid;gap:5px;border:2px dashed #477c69;padding:10px;margin:12px 0}.photo-guide div{padding:12px;background:#edf3ef;text-align:center}#photo-status{padding:10px 0;color:#975213}@media(min-width:600px){.photo-candidates{grid-template-columns:repeat(4,minmax(0,1fr))}}
