:root{box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
*,*:before,*:after{box-sizing:inherit}
html,body{height:100%;margin:0}
body{font-family:"Segoe UI",Roboto,Arial,sans-serif;background:#bfe3f7;color:#fff;display:flex;flex-direction:column;height:100%}
header{display:flex;align-items:center;gap:12px;padding:12px 16px;background:rgba(0,0,0,.45)}
h1{flex:1;margin:0;text-align:center;font-size:clamp(1.4rem,4.5vw,3.2rem);letter-spacing:.04em;text-transform:uppercase;text-shadow:0 2px 8px #000}
button,label.btn{font:inherit;cursor:pointer;border:0;border-radius:8px;padding:8px 12px;background:#fff;color:#222}
.tools{display:flex;gap:8px;flex-wrap:wrap}
main{flex:1;min-height:0;display:flex;gap:16px;padding:16px}
#left{flex:2;min-width:0;display:flex;flex-direction:column;gap:10px}
#stage{flex:1;min-height:0;display:flex;justify-content:center;align-items:center}
#box{height:100%;max-width:100%;aspect-ratio:1;background:#fff;color:#111;border-radius:20px;box-shadow:0 8px 30px rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2cqmin;container-type:size}
#num{font-size:52cqmin;font-weight:800;line-height:1}
#phase{min-height:12cqmin;font-size:9cqmin;font-weight:800;color:#e0457b;text-transform:uppercase;letter-spacing:.05em;text-align:center}
#phases{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
#phases button{font-weight:700;font-size:1.1rem;padding:10px 18px}
#phases button.on{background:#e0457b;color:#fff}
#hist{min-height:34px;text-align:center;font-size:1.2rem;color:#1e3a5f}
#hist span{display:inline-block;background:rgba(0,0,0,.5);border-radius:14px;padding:2px 10px;margin:2px;color:#fff}
#grid{flex:none;width:min(100%,310px);align-self:center;min-width:0;display:grid;grid-template-columns:repeat(10,1fr);gap:3px;align-content:center;background:rgba(0,0,0,.4);padding:8px;border-radius:12px}
#grid button{padding:0;aspect-ratio:1;font-weight:700;font-size:clamp(.6rem,1.1vw,.95rem);background:#fff}
#grid button.done{background:#e0457b;color:#fff}
#right{flex:1;min-width:0;display:flex;flex-direction:column;gap:12px}
#lot{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:10px;background:#e0457b;color:#fff;border-radius:14px;padding:14px 16px;text-align:center;box-shadow:0 4px 14px rgba(0,0,0,.3)}
#lotLabel{font-size:1rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;opacity:.9}
#lotName{font-size:clamp(1.8rem,4.2vw,3.8rem);font-weight:800;line-height:1.15;outline:none;overflow-wrap:anywhere}
#lotName:empty:before{content:attr(data-ph);opacity:.65;font-weight:600;font-size:.6em}
#lotBar{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}
#lotBar button{padding:6px 12px;font-weight:700}
#lotPos{min-width:90px;font-weight:700}
button:disabled{opacity:.4;cursor:default}
dialog{border:0;border-radius:14px;padding:18px;width:min(520px,92vw);color:#222}
dialog::backdrop{background:rgba(0,0,0,.5)}
dialog h2{margin:0 0 6px}
dialog p{margin:0 0 10px;font-size:.9rem}
#lotText{width:100%;font:inherit;padding:8px;border:1px solid #aaa;border-radius:8px;resize:vertical}
.dlgbar{display:flex;gap:8px;align-items:center;margin-top:12px}
dialog .btn,dialog button{background:#e8eef5}
dialog button.ok{background:#e0457b;color:#fff}
@media(max-width:800px){main{flex-direction:column;overflow:auto}#left{flex:none;height:70vw;min-height:300px}#right{flex:none}#lot{flex:none;min-height:150px}#grid{flex:none;width:100%}}
