: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}.reset-button:hover,.icon-only:hover,.add-set-button:hover,.save-layout-button:hover,.history-item-actions button:hover{border-color:var(--green)}.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}.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}}
