#floor-lab{--ink:#243c35;--cream:#fcfaf2;position:relative;isolation:isolate;height:100svh;min-height:600px;overflow:hidden;background:#e5e3d9;color:var(--ink);font:13px/1.65 "Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif}
#floor-lab *,#floor-lab *::before,#floor-lab *::after{box-sizing:border-box}
#floor-lab [hidden]{display:none!important}
#floor-lab p,#floor-lab h1{margin:0}
#floor-lab ruby{ruby-position:over}#floor-lab rt{font-size:.56em;line-height:1;font-weight:400;letter-spacing:0}
#floor-lab .lab-stage{position:absolute;inset:0}
#floor-lab .lab-stage canvas{display:block;width:100%;height:100%;touch-action:pan-y}
#floor-lab::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(#f6f3e9ed 0,transparent 25%,transparent 74%,#eee9dccc 100%)}
#floor-lab .lab-header{position:absolute;z-index:3;top:22px;left:clamp(18px,3.5vw,52px);right:clamp(18px,3.5vw,52px)}
#floor-lab .brand-line{display:flex;justify-content:space-between;gap:15px;font-size:11px;letter-spacing:.05em;color:#465d50}
#floor-lab .brand-line p span{margin-left:12px;font-size:8px;letter-spacing:.18em;opacity:.75}
#floor-lab .free{font-size:10px}
#floor-lab h1{font-size:clamp(19px,2.3vw,29px);font-weight:650;letter-spacing:.05em;margin:7px 0 12px}
#floor-lab nav{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
#floor-lab .title-line{display:flex;justify-content:space-between;align-items:center;gap:10px}
#floor-lab [data-entry] button{font-size:11px;min-height:36px;padding:5px 11px;border-radius:20px;background:#fffdf3b8}
#floor-lab .primary-choices{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;width:min(500px,100%)}
#floor-lab .more-choices{font-size:11px;position:relative}
#floor-lab .more-choices summary{min-height:40px;display:flex;align-items:center;padding:5px 10px;border-radius:18px;background:#fffdf3ab}
#floor-lab .more-choices summary::after{content:'⌄';margin-left:7px}
#floor-lab .more-choices[open] summary{background:#fffdf3}
#floor-lab [data-extra]{position:absolute;z-index:6;top:44px;right:0;min-width:170px;display:grid;gap:5px;background:#fffdf4;border:1px solid #d5dbcd;border-radius:15px;padding:9px;box-shadow:0 12px 32px #25392a26}
#floor-lab button,#floor-lab select,#floor-lab input{font:inherit;color:inherit}
#floor-lab button,#floor-lab summary{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
#floor-lab button{min-height:42px;border:1px solid #bdc6b8;border-radius:10px;padding:8px 13px;background:#fffdf4f0}
#floor-lab button:disabled{opacity:.45;cursor:default}
#floor-lab button:not(:disabled):hover{background:#e8efdf}
#floor-lab :is(button,input,select,summary):focus-visible{outline:3px solid #167189;outline-offset:3px}
#floor-lab nav button{min-height:44px;font-size:13px;background:#fffdf3e8;border-color:#fffdf3a0;padding:7px 12px;border-radius:14px}
#floor-lab nav button[aria-pressed="true"]{background:#355d4d;color:white;border-color:#355d4d}
#floor-lab nav button[aria-pressed="true"]:hover{background:#355d4d;color:white}
#floor-lab .lab-console{position:absolute;bottom:44px;left:50%;translate:-50% 0;z-index:3;width:min(720px,calc(100% - 40px));padding:16px 22px 13px;border-radius:20px;background:#fffdf3f2;border:1px solid #ffffffaa;box-shadow:0 12px 50px #293b2822}
#floor-lab .lesson-hint{font-size:11px;color:#556b5c;margin-bottom:11px}
#floor-lab .view-controls{display:flex;align-items:center;gap:5px;margin-bottom:11px;border-bottom:1px solid #dce1d3;padding-bottom:9px}
#floor-lab .view-controls>span{font-size:10px;margin-right:auto;color:#61715b}
#floor-lab .view-controls button{font-size:11px;min-height:36px;padding:4px 11px;background:transparent;border-color:transparent}
#floor-lab .view-controls button[aria-pressed="true"]{background:#e5ebdc;border-color:#becdb3}
#floor-lab[data-renderer="loading"] .view-controls{visibility:hidden}
#floor-lab .explanation{font-size:11px;color:#52634d}
#floor-lab .explanation summary{padding:4px 0;min-height:28px}
#floor-lab .explanation p{padding:6px 0;line-height:1.85}
#floor-lab .status:empty{display:none}
#floor-lab .settings{display:flex;gap:9px 12px;align-items:center;flex-wrap:wrap}
#floor-lab label{font-size:11px;display:flex;align-items:center;gap:7px}
#floor-lab input,#floor-lab select{min-height:40px;border:1px solid #bcc9b4;border-radius:8px;background:white;font-size:14px;font-variant-numeric:tabular-nums;padding:5px 8px}
#floor-lab input{width:88px}
#floor-lab select{min-width:65px}
#floor-lab .settings button{font-size:11px}
#floor-lab .settings .primary{background:#355f4b;color:white;border-color:#355f4b;font-weight:600;min-height:44px}
#floor-lab .settings .primary:hover{background:#274d3c}
#floor-lab .wide{flex-basis:100%;width:100%}
#floor-lab .setup-note{color:#73806c;font-size:10px}
#floor-lab .small-details{font-size:10px;position:relative}
#floor-lab .small-details summary{padding:8px 0;min-height:32px;color:#617056}
#floor-lab .small-details p{margin:5px 0;line-height:1.9}
#floor-lab .inline-actions{display:flex;gap:6px}
#floor-lab .wallet-totals,#floor-lab .shop-totals{font-size:12px;letter-spacing:.03em}
#floor-lab .recipient-list{display:flex;gap:6px;overflow-x:auto;padding:2px 0 5px}
#floor-lab .recipient-list button{min-width:58px;min-height:43px;padding:3px 8px;font-size:10px;display:flex;flex-direction:column;align-items:center}
#floor-lab .recipient-list button:disabled{opacity:1;background:#e9ecdf;color:#4b6050}
#floor-lab .recipient-list button[data-next="true"]{border:2px solid #3e7958;background:#ecf4dc}
#floor-lab .recipient-list strong{font-size:12px}
#floor-lab .person-list{display:flex;flex-wrap:wrap;gap:5px}
#floor-lab .person-list button{font-size:11px;min-width:54px;min-height:44px;padding:7px 8px}
#floor-lab .person-list button[aria-pressed="true"]{color:#fff;background:#3e6f9a;border-color:#3e6f9a}
#floor-lab .record-list{display:flex;gap:6px;overflow-x:auto;padding:3px 0}
#floor-lab .record-list button{min-width:70px;white-space:nowrap}
#floor-lab .black-button{background:#354541;color:white}
#floor-lab .red-button{background:#a24e44;color:white;border-color:#a24e44}
#floor-lab .black-button:hover,#floor-lab .red-button:hover{color:var(--ink)}
#floor-lab .settings .link-button{border:0;background:transparent;color:#416c51;font-size:11px;padding:2px;text-align:left;min-height:28px}
#floor-lab .result{border-top:1px solid #dde0d3;margin-top:11px;padding-top:9px}
#floor-lab .equation{font-size:22px;letter-spacing:.05em;line-height:1.45;font-variant-numeric:tabular-nums}
#floor-lab .result p+p{font-size:11px;color:#5d705d;margin-top:3px}
#floor-lab .console-bottom{display:flex;gap:10px;justify-content:space-between;align-items:center;margin-top:8px}
#floor-lab .status{font-size:10px;color:#617056;flex:1}
#floor-lab .utility{display:flex;gap:6px}
#floor-lab .utility button{font-size:10px;padding:5px 10px;min-height:38px;background:transparent}
#floor-lab .floor-places{position:absolute;inset:0;pointer-events:none;z-index:2}
#floor-lab .place-link{position:absolute;translate:-50% -50%;min-width:125px;min-height:56px;background:#fffdf3f5;box-shadow:0 5px 24px #223c3026;pointer-events:auto;text-align:left;font-size:12px}
#floor-lab .place-link span{display:block;font-size:9px;color:#6b7d67}
#floor-lab .world-label{position:absolute;translate:-50% -50%;white-space:nowrap;font-size:10px;background:#fffdf0e8;padding:3px 9px;border-radius:12px;color:#3f5e4e;pointer-events:none}
#floor-lab[data-mode="floor"] .lab-console{max-width:580px}
#floor-lab[data-mode="floor"] .result,#floor-lab[data-mode="floor"] .console-bottom{display:none}
#floor-lab[data-mode="floor"] .lesson-hint{margin:0;text-align:center;font-size:12px}
#floor-lab .lab-footer{position:absolute;z-index:4;left:20px;right:20px;bottom:10px;display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:9px;color:#566450}
#floor-lab .lab-footer summary{min-height:26px;padding:4px 0}
#floor-lab .lab-footer details div{position:absolute;bottom:34px;left:0;width:min(430px,calc(100vw - 40px));max-height:70svh;overflow:auto;padding:20px;background:#fffdf6;border:1px solid #d6dbcc;border-radius:14px;box-shadow:0 5px 40px #263b272b;font-size:12px;line-height:1.9}
#floor-lab .lab-footer p+p{margin-top:12px}
#floor-lab .loading{text-align:center;padding-top:35vh;color:#687763}
#floor-lab[data-renderer="fallback"] .floor-places{display:flex;gap:9px;flex-wrap:wrap;justify-content:center;align-content:center;padding:170px 20px 290px}
#floor-lab[data-renderer="fallback"] .place-link{position:static;translate:none}
@media(max-width:600px){
#floor-lab{min-height:840px}
#floor-lab .lab-header{top:17px;left:16px;right:16px}
#floor-lab .brand-line{font-size:10px}
#floor-lab .brand-line p span{display:none}
#floor-lab .free{font-size:10px}
#floor-lab h1{font-size:18px;margin:8px 0 10px}
#floor-lab nav{display:flex;gap:4px;justify-content:flex-end}
#floor-lab .primary-choices{gap:5px;width:100%}
#floor-lab nav button{font-size:13px;padding:5px 3px;min-height:44px}
#floor-lab .more-choices summary{min-height:30px;font-size:10px;padding:2px 8px}
#floor-lab [data-extra]{top:33px}
#floor-lab .title-line h1{font-size:17px}
#floor-lab [data-entry] button{font-size:10px;min-height:32px;padding:4px 9px}
#floor-lab .view-controls{gap:3px;margin-bottom:9px;padding-bottom:7px}
#floor-lab .view-controls button{font-size:11px;min-height:38px;padding:4px 8px}
#floor-lab .view-controls>span{font-size:9px}
#floor-lab .lab-console{width:calc(100% - 24px);padding:13px 14px 10px;bottom:53px;border-radius:17px}
#floor-lab .lesson-hint{font-size:11px;margin-bottom:8px}
#floor-lab .settings{gap:7px 8px}
#floor-lab label{font-size:11px;gap:5px}
#floor-lab input,#floor-lab select{font-size:13px;min-height:38px;padding:4px 6px}
#floor-lab input{width:70px}
#floor-lab select{min-width:55px}
#floor-lab .settings button{font-size:12px;padding:6px 9px}
#floor-lab .setup-note,#floor-lab .small-details{font-size:10px}
#floor-lab .equation{font-size:20px}
#floor-lab .result p+p{font-size:11px}
#floor-lab .console-bottom{gap:5px;margin-top:6px}
#floor-lab .status{font-size:10px}
#floor-lab .utility{gap:3px}
#floor-lab .utility button{padding:5px 7px;font-size:9px}
#floor-lab .person-list button{min-width:52px}
#floor-lab .recipient-list button{min-width:54px}
#floor-lab .lab-footer{font-size:8px;left:16px;right:16px;bottom:8px;align-items:flex-start;flex-direction:column;gap:0}
#floor-lab .lab-footer summary{min-height:20px;padding:0}
#floor-lab .place-link{min-width:110px;min-height:53px;font-size:11px;padding:7px 10px}
#floor-lab .place-link span{font-size:9px}
#floor-lab .world-label{font-size:9px;padding:2px 7px}
}
@media(prefers-reduced-motion:reduce){#floor-lab *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

@media(min-width:980px){
#floor-lab:not([data-mode="floor"]) .lab-console{left:auto;right:24px;translate:none;width:340px;bottom:55px;padding:17px 18px;max-height:calc(100% - 225px);overflow-y:auto}
#floor-lab:not([data-mode="floor"]) .lab-console .view-controls{gap:2px}
#floor-lab:not([data-mode="floor"]) .lab-console .view-controls button{padding:5px 8px}
#floor-lab .wallet-totals{flex-basis:100%}
}
#floor-lab{--ink:#34483f;--cream:#fffaf2}
#floor-lab .lab-console{background:#fffaf3f5;box-shadow:0 12px 45px #66503a1b;border-color:#fffaf3}
#floor-lab .setup-picker{font-size:13px;position:relative}
#floor-lab .setup-picker summary{padding:6px 0;min-height:35px;font-weight:600;cursor:pointer}
#floor-lab .setup-options{display:flex;flex-wrap:wrap;gap:10px;padding:9px 0 12px}
#floor-lab .recipient-details{font-size:11px;color:#5d705e}
#floor-lab .recipient-details summary{padding:4px 0;min-height:30px}
#floor-lab .settings .primary{min-height:48px;padding:9px 20px;border-radius:16px;box-shadow:0 3px 0 #244a38;font-size:14px}
#floor-lab .settings .primary:disabled{opacity:.7;box-shadow:none}
#floor-lab .settings .primary:active:not(:disabled){translate:0 2px;box-shadow:0 1px 0 #244a38}
#floor-lab .world-label{font-size:10px;padding:2px 6px}
#floor-lab .activity-menu{position:relative;display:inline-block;font-size:11px}
#floor-lab .activity-menu>summary{padding:6px 12px;background:#fffaf0dc;min-height:32px;border-radius:17px;cursor:pointer}
#floor-lab .activity-menu>nav{position:absolute;top:39px;left:0;width:min(500px,calc(100vw - 36px));padding:12px;background:#fffaf5;border-radius:18px;box-shadow:0 10px 30px #38483725;z-index:8}
#floor-lab .operation-help>summary{font-size:11px;padding:6px 0;min-height:34px;color:#65765e}
#floor-lab .operation-help[open]>.settings{padding:9px 0}
#floor-lab .lab-stage canvas{cursor:grab}
#floor-lab .lab-stage canvas[data-dragging="true"]{cursor:grabbing}
#floor-lab .lab-stage canvas[data-interactive="true"]:not([data-dragging="true"]){cursor:pointer}
#floor-lab .lesson-hint{font-size:13px;color:#3e5746;line-height:1.75}
#floor-lab .status{font-size:11px}
#floor-lab .place-link{min-width:100px;min-height:45px;border-radius:18px;text-align:center}
#floor-lab .place-link span{font-size:9px}
#floor-lab .booth-name{margin-top:8px;font-size:11px;color:#657560;letter-spacing:.05em}
#floor-lab .title-line h1{margin-top:3px}
#floor-lab[data-mode="fraction"] .booth-name,#floor-lab[data-mode="ledger"] .booth-name{color:#877293}

/* Keep the action beside the object; the same button works by touch and keyboard. */
#floor-lab .world-action{position:absolute;translate:-50% -50%;pointer-events:auto;min-height:46px;width:138px;padding:7px 10px;background:#fffdf3f5;border:1px solid #466d59;border-bottom-width:3px;border-radius:14px;box-shadow:0 5px 14px #243c3520;font-size:12px;font-weight:650;line-height:1.4;text-align:center;white-space:normal}
#floor-lab .world-action span{display:block;font-size:10px;font-weight:400;color:#50685b;margin-top:3px}
#floor-lab .world-action:active:not(:disabled){border-bottom-width:1px;margin-top:2px}
#floor-lab .world-action:disabled{opacity:.85;background:#e6eddf;border-color:#a6b59d;box-shadow:none}
#floor-lab .booth-modes{display:flex;gap:5px;margin-bottom:8px;flex-wrap:wrap}
#floor-lab .booth-modes button{font-size:12px;min-height:42px;padding:7px 14px;border-radius:22px;background:#fffaf3db}
#floor-lab .booth-modes button[aria-pressed="true"]{background:#355d4d;color:#fff;border-color:#355d4d}
#floor-lab:not([data-mode="floor"]) .activity-menu{display:none}
#floor-lab .table-task{font-size:15px;font-weight:650;margin-bottom:6px;line-height:1.6}
#floor-lab .setup-picker>p{font-size:12px;font-weight:600}
#floor-lab .lab-console{max-height:min(58svh,calc(100% - 260px));overflow-y:auto;overscroll-behavior:contain}
#floor-lab .view-controls button{min-height:42px}
#floor-lab .view-controls{margin-bottom:7px;padding-bottom:6px}
#floor-lab .result{margin-top:7px;padding-top:6px}
#floor-lab .console-bottom{margin-top:5px}
@media(max-width:600px){
  #floor-lab{min-height:600px}
  #floor-lab .world-action{font-size:11px;width:132px;padding:6px 7px}
  #floor-lab .world-action span{font-size:10px}
  #floor-lab .table-task{font-size:14px}
  #floor-lab .booth-modes button{min-height:42px;padding:6px 10px;font-size:11px}
  #floor-lab .lab-console{max-height:min(52svh,calc(100% - 270px))}
}
