:root{color:#14252a;background:#f4f1e8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--surface: #fffaf0;--line: #d6cdbc;--ink: #14252a;--muted: #6b746d;--green: #1e6f57;--teal: #123b43;--red: #a7262d;--shadow: 0 18px 48px rgba(18, 59, 67, .14)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100dvh;background:linear-gradient(135deg,rgba(30,111,87,.12),transparent 34%),linear-gradient(225deg,rgba(167,38,45,.08),transparent 30%),#f4f1e8}button{color:inherit;font:inherit}.app-shell{width:min(1180px,100%);min-height:100dvh;margin:0 auto;padding:24px;display:flex;flex-direction:column;gap:18px}.app-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:10px 2px 2px}.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.eyebrow{margin:0 0 4px;color:var(--green);font-size:.78rem;font-weight:800;letter-spacing:0;text-transform:uppercase}h1{margin:0;color:var(--teal);font-size:clamp(2rem,5vw,4.4rem);line-height:.96;letter-spacing:0}.icon-button,.icon-only,.save-layout-button{border:1px solid var(--line);background:#fffaf0db;box-shadow:0 8px 18px #14252a14;cursor:pointer}.icon-button{min-height:44px;padding:0 14px;border-radius:8px;display:inline-flex;align-items:center;gap:8px;font-weight:800}.icon-only{width:38px;height:38px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center}.icon-button:disabled,.save-layout-button:disabled{cursor:not-allowed;opacity:.48}.mode-pill{min-height:44px;padding:0 12px;border:1px solid rgba(18,59,67,.14);border-radius:8px;display:inline-flex;align-items:center;background:#fffaf0b8;color:var(--teal);font-size:.9rem;font-weight:900;white-space:nowrap}.mode-switch{min-height:44px;padding:3px;border:1px solid rgba(18,59,67,.14);border-radius:8px;display:inline-flex;align-items:center;gap:3px;background:#fffaf0b8}.mode-switch button{min-height:36px;padding:0 14px;border:0;border-radius:6px;background:transparent;color:var(--teal);cursor:pointer;font-weight:900}.mode-switch button.is-active{background:var(--teal);color:#fffaf0;box-shadow:0 8px 18px #123b432e}.reset-button:hover,.icon-only:hover,.add-set-button:hover,.save-layout-button:hover,.history-item-actions button:hover{border-color:var(--green)}.practice-shell{width:min(1120px,100%)}.practice-board{flex:1;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:14px}.practice-status{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:10px}.practice-status div{min-height:72px;padding:12px;border:1px solid rgba(18,59,67,.14);border-radius:8px;background:#fffaf0d1;box-shadow:0 10px 22px #14252a14;display:grid;align-content:center;gap:3px}.practice-status span{color:var(--muted);font-size:.78rem;font-weight:850}.practice-status strong{color:var(--teal);font-size:1.45rem;line-height:1}.practice-table{min-height:320px;padding:clamp(12px,2vw,22px);border:1px solid rgba(18,59,67,.18);border-radius:8px;background:linear-gradient(135deg,#1e6f57eb,#123b43f5),#123b43;box-shadow:var(--shadow);display:grid;grid-template-rows:auto auto minmax(120px,auto) auto;gap:18px;align-content:center}.meld-zone{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.meld-group{min-height:62px;padding:6px;border:1px solid rgba(255,250,240,.24);border-radius:8px;background:#fffaf01a;display:inline-flex;align-items:center;gap:2px}.claim-strip{width:min(460px,100%);justify-self:center;min-height:54px;padding:6px 12px;border:1px solid rgba(255,211,91,.46);border-radius:8px;background:#fffaf024;color:#fffaf0;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-weight:900}.practice-hand{min-width:0;display:flex;justify-content:center;gap:clamp(4px,.8vw,9px);flex-wrap:wrap}.practice-tile{width:clamp(42px,6.5vw,64px);height:clamp(60px,9vw,86px);border:2px solid transparent;border-radius:8px;background:transparent;padding:0;cursor:pointer;transition:transform .12s ease,border-color .12s ease,background .12s ease}.practice-tile:hover:not(:disabled){transform:translateY(-5px);border-color:#fffaf0c2}.practice-tile:disabled{cursor:default}.practice-tile .mahjong-tile{width:100%;height:100%}.practice-tile.is-selected{border-color:#ffd35b;background:#ffd35b24;transform:translateY(-6px)}.practice-tile.is-best{border-color:#8ff0c4;background:#8ff0c429}.practice-tile.is-drawn{box-shadow:0 0 0 3px #ffd35b4d}.practice-tile.is-missing{background:#a7262d29}.practice-result{min-height:92px;display:grid;place-items:center}.result-placeholder,.result-banner,.best-answer,.missing-choice,.claim-choice{width:min(680px,100%);border-radius:8px;display:grid;align-items:center}.result-placeholder{min-height:86px;border:1px dashed rgba(255,250,240,.38);color:#fffaf0db;place-items:center;gap:3px}.result-placeholder strong,.result-banner strong{font-size:1.2rem}.result-placeholder span,.result-banner span{font-weight:750}.missing-choice,.claim-choice{min-height:100px;padding:12px 14px;border:1px dashed rgba(255,250,240,.38);color:#fffaf0;justify-items:center;gap:10px}.missing-choice strong,.claim-choice strong{font-size:1.18rem}.missing-choice>div,.claim-choice>div{display:inline-flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.missing-choice button,.claim-choice button{min-height:38px;min-width:68px;padding:0 14px;border:1px solid rgba(255,250,240,.42);border-radius:8px;background:#fffaf024;color:#fffaf0;cursor:pointer;font-weight:950}.missing-choice button:hover:not(:disabled),.claim-choice button:hover:not(:disabled),.missing-choice button.is-selected{border-color:#ffd35b;background:#ffd35b2e}.missing-choice button:disabled,.claim-choice button:disabled{cursor:default;opacity:.72}.missing-choice span,.claim-choice span{color:#fffaf0c7;font-size:.9rem;font-weight:800;text-align:center}.result-banner{min-height:70px;padding:12px 16px;gap:3px;color:#fffaf0}.result-banner.is-correct{background:#146648b8;border:1px solid rgba(143,240,196,.42)}.result-banner.is-wrong{background:#a7262db8;border:1px solid rgba(255,250,240,.28)}.best-answer{margin-top:8px;min-height:52px;padding:9px 14px;grid-template-columns:auto 1fr auto;gap:12px;background:#fffaf0eb;color:var(--teal)}.best-answer span,.best-answer em{color:var(--muted);font-size:.84rem;font-style:normal;font-weight:850}.best-answer strong{font-size:1.08rem}.candidate-panel{display:grid;gap:8px}.candidate-row{min-height:48px;padding:8px 12px;border:1px solid rgba(18,59,67,.12);border-radius:8px;background:#fffaf0c2;display:grid;grid-template-columns:32px 72px minmax(0,1fr) 62px;align-items:center;gap:10px}.candidate-row.is-best{border-color:#1e6f5770;background:#dff6e9e6}.candidate-row.is-selected{box-shadow:inset 0 0 0 2px #ffd35bc2}.candidate-row.is-muted{opacity:.72}.candidate-rank{width:26px;height:26px;border-radius:999px;background:#123b431a;color:var(--teal);display:inline-flex;align-items:center;justify-content:center;font-weight:950}.candidate-row strong{color:var(--teal);font-size:1.02rem}.candidate-row span:not(.candidate-rank){min-width:0;color:var(--muted);font-weight:780;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.candidate-row em{color:var(--green);font-style:normal;font-weight:950;text-align:right}.practice-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.decision-log{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.decision-log article{min-height:54px;padding:8px 10px;border:1px solid rgba(18,59,67,.12);border-radius:8px;background:#fffaf0b8;display:grid;gap:2px}.decision-log article.is-correct{border-color:#1e6f5752}.decision-log article.is-wrong{border-color:#a7262d4d}.decision-log span,.decision-log em{color:var(--muted);font-size:.76rem;font-style:normal;font-weight:800}.decision-log strong{color:var(--teal);font-size:.98rem;line-height:1}.sets-grid{flex:1;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:auto auto auto;gap:clamp(8px,1.8vw,18px);align-content:center;align-items:center;min-height:clamp(340px,54dvh,560px);padding:clamp(12px,2.5vw,28px);border:1px solid rgba(18,59,67,.18);border-radius:8px;background:repeating-linear-gradient(135deg,rgba(255,255,255,.05) 0 2px,transparent 2px 22px),linear-gradient(135deg,#123b43,#183657 52%,#0f2b31);box-shadow:var(--shadow)}.tile-set{min-width:0;min-height:136px;border:1px solid rgba(244,241,232,.22);border-radius:8px;background:#fffaf014;box-shadow:0 14px 34px #00000029;display:flex;flex-direction:column;overflow:hidden;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);cursor:pointer}.sets-grid .tile-set:nth-child(1){grid-column:1 / 3;grid-row:1}.sets-grid .tile-set:nth-child(2){grid-column:3 / 5;grid-row:1}.sets-grid .tile-set:nth-child(3){grid-column:5 / 7;grid-row:1}.sets-grid.is-five .tile-set:nth-child(4){grid-column:2 / 4;grid-row:2}.sets-grid.is-five .tile-set:nth-child(5){grid-column:4 / 6;grid-row:2}.sets-grid.is-six .tile-set:nth-child(4){grid-column:1 / 3;grid-row:2}.sets-grid.is-six .tile-set:nth-child(5){grid-column:3 / 5;grid-row:2}.sets-grid.is-six .tile-set:nth-child(6){grid-column:5 / 7;grid-row:2}.add-set-slot{width:42px;height:42px;grid-column:4 / 6;grid-row:3;justify-self:center;align-self:start;border:1px solid rgba(244,241,232,.52);border-radius:999px;background:#fffaf029;color:#fffaf0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 10px 24px #00000038}.tile-set.is-over{outline:3px solid rgba(244,241,232,.32)}.tile-set.is-active{border-color:#ffd35be0;background:#fffaf024;box-shadow:0 0 0 3px #ffd35b2e,0 16px 36px #0000002e}.set-header{min-height:34px;padding:5px 7px;border-bottom:1px solid rgba(244,241,232,.12);display:flex;align-items:center;justify-content:space-between;gap:12px}.set-index{display:block;color:#fffaf0;font-weight:900;font-size:.9rem}.set-count{color:#fffaf0b3;font-size:.72rem;font-weight:700}.set-header .icon-only{width:28px;height:28px;border-color:#f4f1e842;background:#fffaf01f;color:#fffaf0;box-shadow:none}.set-dropzone{flex:1;min-height:88px;padding:8px;display:flex;align-items:center;align-content:center;gap:4px;flex-wrap:nowrap;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.set-dropzone::-webkit-scrollbar{display:none}.empty-set{width:100%;min-height:70px;border:1px dashed rgba(244,241,232,.34);border-radius:8px;background:#fffaf00f;color:#fffaf0b8;font-weight:800;font-size:.82rem;display:grid;place-items:center}.empty-set:hover{border-color:var(--green);color:var(--green)}.palette-panel{position:sticky;bottom:0;z-index:8;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;border:1px solid rgba(18,59,67,.18);border-radius:8px 8px 0 0;background:#f4f1e8f5;box-shadow:0 -16px 36px #123b431f;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:8px 10px 10px}.palette-heading{min-height:30px;display:contents;color:var(--teal);font-weight:900}.suit-switch{grid-column:1;grid-row:1;min-height:30px;padding:0 10px;border:1px solid rgba(30,111,87,.34);border-radius:8px;background:#fffaf0e6;color:var(--teal);cursor:pointer;font-weight:900}.active-set-pill{grid-column:3;grid-row:1;min-height:30px;padding:0 10px;border:1px solid rgba(30,111,87,.34);border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:#fffaf0e0;color:var(--green);font-size:.86rem;font-weight:800}.history-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#14252a57;display:flex;justify-content:flex-end;padding:12px}.history-panel{width:min(420px,100%);height:100%;border:1px solid rgba(18,59,67,.18);border-radius:8px;background:#f8f3e8;box-shadow:0 24px 70px #0a181c42;display:flex;flex-direction:column;overflow:hidden}.history-header{min-height:72px;padding:16px;border-bottom:1px solid rgba(18,59,67,.12);display:flex;align-items:center;justify-content:space-between;gap:12px}.history-header h2{margin:0;color:var(--teal);font-size:1.55rem;line-height:1;letter-spacing:0}.save-layout-button{min-height:58px;margin:14px;padding:0 14px;border-radius:8px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;color:var(--teal);font-weight:900;text-align:left}.save-layout-button strong{color:var(--green);font-size:.84rem;white-space:nowrap}.history-list{min-height:0;padding:0 14px 14px;display:grid;gap:10px;overflow:auto}.empty-history{min-height:120px;border:1px dashed rgba(18,59,67,.22);border-radius:8px;display:grid;place-items:center;color:var(--muted);font-weight:800}.history-item{border:1px solid rgba(18,59,67,.14);border-radius:8px;background:#fffaf0d1;display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:12px}.history-item-main{min-width:0;display:grid;gap:4px}.history-item-main strong{color:var(--teal);font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-item-main span{color:var(--muted);font-size:.84rem;font-weight:750}.history-item-actions{display:inline-flex;align-items:center;gap:6px}.history-item-actions button{min-height:34px;border:1px solid var(--line);border-radius:8px;background:#fffaf0e6;color:var(--teal);cursor:pointer;font-weight:850}.history-item-actions button:not(.danger-action){padding:0 12px}.history-item-actions .danger-action{width:34px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--red)}.palette-row{grid-column:2;grid-row:1;min-width:0;display:grid;gap:6px}.palette-tiles{display:grid;grid-template-columns:repeat(9,minmax(34px,1fr));gap:5px}.palette-tile,.placed-tile{border:0;background:transparent;padding:0;cursor:pointer;touch-action:none;position:relative}.palette-tile{border-radius:8px;outline:2px solid transparent}.palette-tile:hover{outline-color:#1e6f5780}.palette-tile.is-dragging,.placed-tile.is-dragging{opacity:.24}.placed-tile{width:44px;height:62px;flex:0 0 44px}.drag-handle{position:absolute;left:50%;bottom:3px;transform:translate(-50%);color:#14252a6b;pointer-events:none}.mahjong-tile{width:44px;height:58px;filter:drop-shadow(0 8px 14px rgba(20,37,42,.18));display:inline-flex;align-items:center;justify-content:center;position:relative;overflow:hidden;-webkit-user-select:none;user-select:none}.mahjong-tile.is-compact{width:100%;max-width:42px;height:54px}.mahjong-tile.is-floating{width:48px;height:64px;transform:rotate(2deg)}.mahjong-tile img{width:100%;height:100%;display:block;object-fit:contain;pointer-events:none}@media(max-width:780px){.app-shell{padding:12px 10px 0;gap:8px}.app-header{align-items:flex-start;flex-direction:column;gap:8px;padding-top:2px}.eyebrow{font-size:.68rem;margin-bottom:2px}h1{font-size:1.78rem}.header-actions{width:100%;justify-content:flex-start;gap:6px}.practice-status{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.practice-status div{min-height:58px;padding:9px}.practice-status strong{font-size:1.12rem}.practice-table{min-height:290px;gap:10px}.practice-tile{width:clamp(36px,11vw,46px);height:clamp(50px,14vw,62px)}.candidate-row{grid-template-columns:28px 58px minmax(0,1fr) 58px;gap:6px;padding:8px}.candidate-row strong,.candidate-row em{font-size:.86rem}.decision-log{grid-template-columns:repeat(2,minmax(0,1fr))}.mode-pill,.icon-button{min-height:36px;padding:0 10px;font-size:.86rem}.sets-grid{min-height:clamp(300px,52dvh,470px);padding:10px;gap:7px}.tile-set{min-height:116px}.set-dropzone{min-height:76px;padding:4px;gap:2px}.set-header{min-height:30px;padding:4px 5px}.set-index{font-size:.78rem}.set-count{font-size:.66rem}.set-header .icon-only{width:26px;height:26px}.empty-set{min-height:62px;font-size:.72rem}.add-set-slot{width:36px;height:36px}.palette-panel{grid-template-columns:auto minmax(0,1fr);margin:0 -10px;border-left:0;border-right:0;padding:7px 10px max(9px,env(safe-area-inset-bottom))}.palette-heading{min-height:28px}.suit-switch,.active-set-pill{min-height:28px;font-size:.78rem}.palette-panel .active-set-pill{display:none}.palette-row{gap:4px}.palette-tiles{grid-template-columns:repeat(9,minmax(28px,1fr));gap:3px}.mahjong-tile.is-compact{max-width:32px;height:42px}.mahjong-tile{width:30px;height:40px}.placed-tile{width:30px;height:44px;flex-basis:30px}.placed-tile .drag-handle{display:none}.history-backdrop{padding:0}.history-panel{border-radius:8px 8px 0 0}.history-item{grid-template-columns:1fr}.history-item-actions{justify-content:flex-end}}@media(min-width:1040px){.tile-set{min-height:156px}.set-dropzone{min-height:112px}.placed-tile{width:52px;height:72px}.mahjong-tile{width:52px;height:68px}.mahjong-tile.is-compact{max-width:44px;height:58px}}
