:root{color:#302a23;--sans:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono:ui-monospace, SFMono-Regular, Consolas, monospace;font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#eee8dc}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}button,select{font:inherit}.app-shell{--sidebar-width:min(25rem, 30vw);--waiting-color:#25844c;--waiting-soft:#e7f6e9;--draw-color:#c28a12;--draw-soft:#fff1b8;--pair-color:#7b4ca0;--pair-soft:#efe5f6;grid-template-columns:minmax(0, 1fr) var(--sidebar-width);background:radial-gradient(circle at 18% 5%,#cb944921,#0000 34rem),linear-gradient(135deg,#f8f4ec,#eee8dc);height:100dvh;display:grid;overflow:hidden}.workspace{--tile-width:clamp(1.24rem, 3.72vw, 3.1rem);--tile-height:calc(var(--tile-width) * 2457 / 1573);grid-template-rows:auto minmax(8rem,1fr);gap:clamp(.7rem,1.4vw,1.25rem);min-width:0;padding:clamp(1rem,2vw,2rem);display:grid;overflow:hidden}.view-card{background:#fffdf8a8;border:1px solid #4d3b242e;border-radius:1.1rem;min-height:0;overflow:hidden;box-shadow:0 .6rem 2.4rem #43342012}.mahjong-tile{width:var(--tile-width,clamp(2.35rem, 4.5vw, 4.55rem));aspect-ratio:1573/2457;-webkit-user-select:none;user-select:none;background:linear-gradient(135deg,#ffffffe0,#ece4d4db),#fffdf8;border:1px solid #705f4a;border-radius:clamp(.16rem,.32vw,.28rem);flex:none;place-items:center;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 0 .14rem #ffffffb3,0 .16rem .18rem #281c0d29}.tile-rank{color:#30271e;font:900 calc(var(--tile-width) * .39) / 1.05 "KaiTi", "STKaiti", serif;-webkit-text-stroke:.01em currentColor;position:absolute;top:15%}.tile-suit{color:#b52d28;font:900 calc(var(--tile-width) * .48) / 1 "KaiTi", "STKaiti", serif;-webkit-text-stroke:.01em currentColor;text-shadow:0 .04rem #6f151326;position:absolute;top:65%;transform:translateY(-50%)}.linear-scroll,.stacked-scroll{scrollbar-color:#7a582e73 transparent;scrollbar-width:thin;min-width:0}.linear-scroll{align-items:center;height:100%;padding:.7rem 1rem 1rem;display:flex;overflow:auto hidden}.linear-hand{align-items:center;column-gap:calc(var(--tile-width) * .05);width:max-content;min-width:min-content;margin-inline:auto;display:flex}.empty-hint{color:#a99c8a;font:.8rem var(--mono)}.stacked-scroll{place-items:safe center;height:100%;padding:.75rem 1rem;display:grid;overflow:auto}.stacked-grid{--grid-gap:calc(var(--tile-width) * .05);--stack-control-height:1.85rem;width:max-content;padding-top:var(--tile-height);grid-template-columns:repeat(var(--rank-count), var(--tile-width));grid-template-rows:repeat(var(--stack-level-count), var(--tile-height)) var(--stack-control-height);column-gap:var(--grid-gap);display:grid;position:relative}.stack-cell{width:var(--tile-width);height:var(--tile-height);position:relative;overflow:hidden}.stack-cell-empty{background:linear-gradient(135deg,#0000 48%,#7e633e12 49% 51%,#0000 52%),#fffdf847;border:1px solid #715b3b26}.stack-cell-target-waiting{border-color:var(--waiting-color);background:linear-gradient(#55c47861, #55c47840), repeating-linear-gradient(135deg, transparent 0 .28rem, #1769381f .28rem .56rem), var(--waiting-soft);box-shadow:inset 0 0 0 1px #ffffff94}.stack-cell-target-draw{border-color:var(--draw-color);background:linear-gradient(#f1c43e6b, #f1c43e42), repeating-linear-gradient(135deg, transparent 0 .28rem, #9766081f .28rem .56rem), var(--draw-soft);box-shadow:inset 0 0 0 1px #ffffff94}.stack-cell-virtual-target{top:0;left:calc(var(--rank-index) * (var(--tile-width) + var(--grid-gap)));position:absolute}.stack-cell-filled .mahjong-tile{width:100%;height:100%}.standard-tile-limit{z-index:2;top:calc((var(--over-limit-level-count) + 1) * var(--tile-height));pointer-events:none;border-top:2px dashed #ac352dc7;position:absolute;left:0;right:0}.decomposition-overlay{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.decomposition-line-outline,.decomposition-line{fill:none;stroke-linecap:round;stroke-linejoin:round}.decomposition-line-outline{stroke:#ffffffe0;stroke-width:clamp(.34rem,.62vw,.52rem)}.decomposition-line{stroke-width:clamp(.18rem,.33vw,.28rem);stroke:#ffffffdb}.decomposition-line-seq{stroke:#138a8a;filter:drop-shadow(0 0 .08rem #ffffffe6)}.decomposition-line-trip{stroke:#b87816;filter:drop-shadow(0 0 .08rem #ffffffe6)}.decomposition-line-pair{stroke:var(--pair-color);filter:drop-shadow(0 0 .08rem #ffffffe6)}.decomposition-endpoint{r:clamp(.17rem, .32vw, .27rem);stroke:#ffffffeb;stroke-width:clamp(.08rem,.14vw,.12rem)}.decomposition-endpoint-seq{fill:#138a8a}.decomposition-endpoint-trip{fill:#b87816}.decomposition-endpoint-pair{fill:var(--pair-color)}.stack-column-slider{z-index:3;cursor:ns-resize;touch-action:none;grid-row:1/-1;min-width:0}.stack-column-slider:focus-visible{outline-offset:.2rem;outline:2px solid #1f5a75}.stack-stepper{z-index:4;grid-template-rows:repeat(2,minmax(0,1fr));align-self:center;justify-items:center;display:grid;position:relative}.stack-stepper button{color:#705b3d75;cursor:pointer;width:100%;min-height:0;font:700 1rem / .76rem var(--sans);background:0 0;border:0;padding:0;transform:scale(1.32,.72)}.stack-stepper button:hover:not(:disabled),.stack-stepper button:focus-visible:not(:disabled){color:#a24d2b}.stack-stepper button:focus-visible{outline-offset:-.08rem;outline:1px solid #1f5a75}.stack-stepper button:disabled{color:#705b3d29;cursor:default}.sidebar{background:#fffcf5e0;border-left:1px solid #4d3b242e;min-width:0;transition:width .18s,background .18s;position:relative;box-shadow:-.6rem 0 2rem #4334200d}.sidebar-open{width:var(--sidebar-width)}.sidebar-closed{background:#fffcf5b8;width:2.6rem}.app-shell:has(.sidebar-closed){grid-template-columns:minmax(0,1fr) 2.6rem}.sidebar-toggle{z-index:2;color:#5e4834;cursor:pointer;width:2rem;height:4.1rem;font:400 2rem/1 var(--sans);background:#fffaf1;border:1px solid #4d3b2433;border-radius:.65rem 0 0 .65rem;transition:background .14s,color .14s;position:absolute;top:50%;left:auto;right:100%;transform:translateY(-50%);box-shadow:-.15rem .25rem .8rem #4334201a}.sidebar-toggle:hover,.sidebar-toggle:focus-visible{color:#9a4126;background:#fff3df}.sidebar-content{box-sizing:border-box;flex-direction:column;gap:1rem;height:100%;min-height:0;padding:clamp(1.25rem,2.3vw,2.3rem) clamp(1rem,2.3vw,2rem);display:flex;overflow:hidden}.brand-block{flex:none;justify-content:space-between;align-items:flex-start;gap:1.2rem;padding:.15rem .1rem;display:flex;position:relative}.brand-block h1{gap:0;margin:0;display:grid}.brand-name{color:#30271e;letter-spacing:-.035em;font:700 clamp(1.85rem,2.8vw,2.65rem)/.92 Palatino Linotype,Book Antiqua,Georgia,serif}.brand-subtitle{color:#a24d2b;font:700 .58rem / 1.2 var(--mono);letter-spacing:.2em;text-transform:uppercase}.order-panel,.hand-tools-panel,.info-panel{border-top:1px solid #4d3b2429;padding-top:1rem}.order-panel,.hand-tools-panel{flex:none}.order-control{gap:.4rem;display:grid}.order-control output{color:#463828;font:700 .88rem var(--mono)}.order-control input{accent-color:#a24d2b;cursor:pointer;width:100%;margin:0}.order-ticks{color:#8b7d6a;font:.68rem var(--mono);justify-content:space-between;display:flex}.hand-toolbar{grid-template-columns:repeat(5,minmax(0,1fr));gap:.4rem;display:grid;position:relative}.toolbar-icon-button{color:#5f4f3b;cursor:pointer;background:0 0;border:1px solid #4d3b2440;border-radius:.45rem;place-items:center;width:100%;min-width:0;height:2.2rem;padding:0;text-decoration:none;transition:color .14s,background .14s,border-color .14s;display:grid}.toolbar-icon-button:hover:not(:disabled),.toolbar-icon-button:focus-visible:not(:disabled){color:#9a4126;background:#fff3df;border-color:#9a41266b}.toolbar-icon-button:focus-visible{outline-offset:2px;outline:2px solid #1f5a75}.toolbar-icon-button:disabled{cursor:not-allowed;color:#b8ad9e;border-color:#4d3b241f}.toolbar-glyph{font:400 1.45rem/1 var(--sans)}.toolbar-input-glyph{font:700 .82rem/1 var(--mono)}.preset-legend{color:#756452;font:.68rem/1.35 var(--sans);gap:.75rem;display:flex}.preset-legend b{color:#fffdf8;width:1.15rem;height:1.15rem;font:800 .65rem/1 var(--sans);background:#2e7d60;border-radius:999px;place-items:center;margin-right:.18rem;display:inline-grid}.preset-legend span+span b{background:#9a6a23}.preset-group{gap:.4rem;padding-top:.8rem;display:grid}.preset-group h3{color:#776653;font:700 .7rem/1.4 var(--sans);margin:0}.preset-card-grid{grid-template-columns:repeat(auto-fill,minmax(7.6rem,1fr));gap:.42rem;display:grid}.preset-card{color:#5c4d3c;cursor:pointer;text-align:left;background:#fffefa;border:1px solid #6f563233;border-radius:.4rem;grid-template-rows:auto 1fr;gap:.25rem;min-width:0;min-height:4.5rem;padding:.36rem .42rem .42rem;display:grid;position:relative}.preset-card:hover,.preset-card:focus-visible{background:#fff6e7;border-color:#a36c30}.preset-card:focus-visible{outline-offset:1px;outline:2px solid #1f5a75}.preset-card-header{justify-content:space-between;align-items:center;min-height:1rem;display:flex}.preset-card-index{color:#897967;font:700 .63rem/1 var(--mono)}.preset-marker{color:#fffdf8;width:1.1rem;height:1.1rem;font:800 .65rem/1 var(--sans);background:#2e7d60;border-radius:999px;place-items:center;display:grid}.preset-marker-G{background:#9a6a23}.preset-thumbnail{grid-template-columns:repeat(var(--rank-count), minmax(0, 1fr));background:repeating-linear-gradient(0deg,#0000 0 calc(10% - 1px),#75624a1f calc(10% - 1px) 10%);border-bottom:1px solid #4c3e2f6b;align-items:end;gap:.12rem;height:3rem;padding:0 .08rem;display:grid;position:relative}.preset-thumbnail:after{content:"";border-top:1px dashed #ac352d9e;position:absolute;bottom:40%;left:0;right:0}.preset-thumbnail-bar{z-index:1;height:calc(var(--count) * 10%);background:linear-gradient(#b28a52,#795a35);border-radius:.1rem .1rem 0 0;min-height:1px}.preset-card-detail{z-index:3;color:#493c2f;font:.63rem/1.35 var(--sans);pointer-events:none;background:#fffdf8;border:1px solid #4c3e2f4d;border-radius:.35rem;gap:.18rem;padding:.42rem .5rem;display:grid;position:absolute;bottom:calc(100% + .3rem);left:-.3rem;right:-.3rem;box-shadow:0 .35rem .85rem #30241633}.preset-card-detail code{overflow-wrap:anywhere;color:#6c4830;font:.61rem/1.3 var(--mono)}.info-list{gap:.65rem;margin:0;display:grid}.info-panel{scrollbar-color:#7a582e73 transparent;scrollbar-width:thin;flex:1 1 0;min-height:0;padding-right:.3rem;overflow-y:auto}.info-tabs{z-index:1;background:#fffcf5f5;border-bottom:1px solid #4d3b2429;gap:.3rem;margin-bottom:.9rem;display:flex;position:sticky;top:0}.info-tab{color:#8b7d6a;cursor:pointer;min-height:2rem;font:700 .7rem var(--sans);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.2rem .35rem .45rem}.info-tab:hover,.info-tab:focus-visible{color:#9a4126}.info-tab:focus-visible{outline-offset:-1px;outline:1px solid #1f5a75}.info-tab-active{color:#463828;border-bottom-color:#a24d2b}.info-tabpanel{min-height:0}.draw-pair-panel{gap:.8rem;display:grid}.draw-pair-graph{aspect-ratio:32/35;width:100%;height:auto;display:block;overflow:visible}.draw-pair-background{fill:#0000}.draw-pair-edge{fill:none;stroke:#776b5c;stroke-width:1.45px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;transition:stroke .1s,stroke-width .1s}.draw-pair-arrow{fill:#776b5c;pointer-events:none;transition:fill .1s}.draw-pair-edge.draw-pair-edge-active{stroke:var(--draw-color);stroke-width:2.2px}.draw-pair-arrow.draw-pair-edge-active{fill:var(--draw-color)}.draw-pair-edge-hit{fill:none;stroke:#0000;stroke-width:14px;stroke-linecap:round;cursor:pointer;pointer-events:stroke}.draw-pair-edge-hit:focus,.draw-pair-edge-hit:focus-visible{stroke:#0000;box-shadow:none;outline:none}.draw-pair-node circle{fill:#fffdf8;stroke:#6d604f;stroke-width:1.5px;transition:fill .1s,stroke .1s,stroke-width .1s}.draw-pair-node text{fill:#382f25;font:700 12px var(--mono);text-anchor:middle;dominant-baseline:central;pointer-events:none}.draw-pair-node-waiting circle{fill:var(--waiting-soft);stroke:var(--waiting-color);stroke-width:2.3px}.draw-pair-node-draw circle{fill:var(--draw-soft);stroke:var(--draw-color);stroke-width:2.3px}.draw-pair-node-pair circle{fill:var(--pair-soft);stroke:var(--pair-color);stroke-width:2.3px}.draw-pair-node-draw.draw-pair-node-pair circle{fill:var(--draw-soft);stroke:var(--pair-color);stroke-width:3px}.draw-pair-group-label{fill:#8b7d6a;font:700 11px var(--mono);text-anchor:middle}.draw-pair-summary,.draw-pair-selection{gap:.55rem;margin:0;display:grid}.controls-list{color:#5f5344;font:.72rem/1.5 var(--mono);gap:.55rem;margin:0;padding-left:1.15rem;display:grid}.draw-pair-summary{border-block:1px solid #4d3b2424;grid-template-columns:repeat(3,minmax(0,1fr));padding-block:.65rem}.draw-pair-summary div,.draw-pair-selection div{gap:.16rem;min-width:0;display:grid}.draw-pair-summary dt,.draw-pair-selection dt{color:#8b7d6a;font:.66rem var(--sans)}.draw-pair-summary dd,.draw-pair-selection dd{color:#42382d;overflow-wrap:anywhere;font:.72rem/1.45 var(--mono);margin:0}.draw-pair-adjacency{color:#5f5344;font:.68rem/1.4 var(--mono);grid-template-columns:repeat(2,minmax(0,1fr));gap:.24rem .8rem;display:grid}.draw-pair-adjacency div{grid-template-columns:1.6em 1.3em minmax(0,1fr);min-width:0;display:grid}.draw-pair-adjacency span:last-child{overflow-wrap:anywhere}.draw-pair-selection{border-top:1px solid #4d3b2424;padding-top:.65rem}.info-list div{gap:.18rem;display:grid}.info-list dt{color:#8b7d6a;font-size:.7rem}.info-list dd{color:#42382d;overflow-wrap:anywhere;font:.75rem/1.55 var(--mono);margin:0}.analysis-warning{color:#b52d28;font-weight:700}.github-link{margin:0}.github-link svg{fill:currentColor;width:1rem;height:1rem}.preset-dialog,.hand-input-dialog{color:#302a23;background:#fffdf8;border:1px solid #4d3b2440;border-radius:.5rem;max-width:none;padding:0;box-shadow:0 1.2rem 3.5rem #30241642}.preset-dialog{width:min(76rem,100vw - 2rem)}.hand-input-dialog{width:min(40rem,100vw - 2rem)}.preset-dialog::backdrop,.hand-input-dialog::backdrop{background:#302a2357}.modal-dialog-content{gap:.8rem;padding:1rem;display:grid}.modal-dialog-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.modal-dialog-header h2{color:#42382d;font:700 .7rem var(--sans);margin:0}.preset-dialog-list{scrollbar-color:#7a582e73 transparent;scrollbar-width:thin;gap:.15rem;max-height:min(30rem,65dvh);padding-right:.2rem;display:grid;overflow-y:auto}.preset-dialog-list .preset-group:first-child{padding-top:0}.dialog-close{color:#6b5a46;cursor:pointer;width:2rem;height:2rem;font:400 1.45rem/1 var(--sans);background:0 0;border:0;border-radius:.4rem;place-items:center;padding:0;display:grid}.dialog-close:hover,.dialog-close:focus-visible{color:#9a4126;background:#fff3df}.hand-input-form{gap:.35rem;display:grid}.hand-input-form+.hand-input-form{border-top:1px solid #4d3b2424;padding-top:.8rem}.hand-input-form label{color:#8b7d6a;font:400 .7rem/1.4 var(--sans)}.hand-input-row{grid-template-columns:minmax(0,1fr) auto;gap:.5rem;display:grid}.hand-input-row input{color:#42382d;width:100%;min-width:0;height:2.35rem;font:.75rem/1.55 var(--mono);background:#fff;border:1px solid #4d3b2447;border-radius:.4rem;padding:0 .65rem}.hand-input-row input[aria-invalid=true]{border-color:#b52d28;outline-color:#b52d28}.hand-input-row button{color:#fffdf8;cursor:pointer;min-width:4.5rem;height:2.35rem;font:700 .74rem var(--sans);background:#895032;border:1px solid #895032;border-radius:.4rem;padding:0 .8rem}.hand-input-row button:hover,.hand-input-row button:focus-visible{background:#713d25}.hand-input-error{color:#b52d28;min-height:1rem;font:.68rem/1.4 var(--sans);margin:0}.hand-input-error-empty{visibility:hidden}@media (width<=760px){.app-shell{--sidebar-width:min(20rem, calc(100vw - 2.6rem))}.workspace{gap:.65rem;padding:.65rem}.linear-scroll,.stacked-scroll{padding-left:.7rem;padding-right:.7rem}.preset-dialog,.hand-input-dialog{width:calc(100vw - 1rem)}.preset-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hand-input-row{grid-template-columns:minmax(0,1fr) 4.2rem}}
