/* The lamp is a physical fixture: no fit-to-window scaling while beads rest on it. */
html:has(.physical-v3),body:has(.physical-v3){overflow:hidden;overscroll-behavior:none;background:#000}
#guide:has(.physical-v3),#guide:has(.lamp-loading){position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:#000;overflow:hidden;color:#eef4e7}
.lamp-loading{min-height:100dvh;display:grid;place-content:center;gap:24px;text-align:center;color:#c1d1af;background:#000}.lamp-loading button{color:white;padding:14px}
.physical-v3{position:fixed;inset:0;width:100%;background:#000;color:#e6eddf;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;z-index:600;font-size:13px}
.physical-v3 [hidden]{display:none!important}.physical-v3 button{border-radius:9px;min-height:36px;background:#233020;color:#e4ecdd;border:1px solid #40503a;padding:8px 12px;display:inline-flex;align-items:center;justify-content:center;gap:5px;font-size:12px}.physical-v3 button:active{transform:none;background:#405437}.physical-v3 button:focus-visible{outline:2px solid #d5efb3;outline-offset:-3px}.physical-v3 button.lamp-primary{background:#c1d99f;color:#17210f;border-color:#c1d99f;font-weight:650;min-height:44px}.physical-v3 button.lamp-text{background:none;border:0;color:#aebca4;font-size:11px}
.lamp-grid{position:absolute;pointer-events:none;transform:none!important;transition:none!important}.physical-v3[data-phase=align] .lamp-grid{pointer-events:auto;cursor:move;touch-action:none}.lamp-grid canvas{display:block;width:100%;height:100%}
.lamp-hole{position:absolute;border:2px dashed #bbd998;background:#accd7c10;pointer-events:none;z-index:2}.lamp-hole:after{content:'镜头镂空 · 操作区';position:absolute;top:12px;left:0;right:0;text-align:center;font-size:11px;color:#b5cd9d}
.lamp-drawing{position:absolute;inset:0;width:100%;height:100%;z-index:3;touch-action:none;cursor:crosshair}
.lamp-sheet{position:absolute;z-index:4;width:min(440px,calc(100% - 24px));max-height:calc(100% - max(24px,env(safe-area-inset-top)) - max(16px,env(safe-area-inset-bottom)));overflow:auto;overscroll-behavior:contain;touch-action:pan-y;left:50%;transform:translateX(-50%);background:#152012f5;border:1px solid #3c5131;border-radius:18px;padding:22px;box-shadow:0 16px 55px #0009;line-height:1.6}
.lamp-sheet h2{font-size:19px;line-height:1.5;color:#f4f8ef;font-weight:600;margin:12px 0}.lamp-sheet p{font-size:12px;color:#adbda0;margin:9px 0;line-height:1.8}.lamp-sheet>.lamp-primary{width:100%;margin-top:14px}.lamp-sheet>.lamp-text{width:100%;margin-top:9px}.lamp-sheet-head{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:11px;letter-spacing:1px;color:#b8ce9d}.lamp-sheet-head button{background:none;border:0;min-height:30px;padding:0;width:30px}.lamp-scale{top:50%;transform:translate(-50%,-50%)}
.lamp-ruler-wrap{display:flex;justify-content:center;align-items:center;height:75px;background:#080d07;border:1px solid #30422a;border-radius:12px;margin:21px 0}.lamp-ruler{height:1px;background:#e7f4c7;display:flex;justify-content:space-between;align-items:center;position:relative;flex-shrink:0}.lamp-ruler>i{width:1px;height:23px;background:#e7f4c7}.lamp-ruler>span{position:absolute;left:50%;top:10px;transform:translateX(-50%);font-size:11px;color:#cad9b9;white-space:nowrap}.lamp-scale-label{display:flex;justify-content:space-between;font-size:11px;color:#c6d4ba}.lamp-scale-row{display:flex;gap:12px;align-items:center;margin:10px 0 15px}.lamp-scale-row button{width:40px;height:40px;padding:0;font-size:20px}.lamp-scale-row input{width:100%;min-width:0;accent-color:#bdd79a}.lamp-screen-note{background:#23301c;border-left:2px solid #a7c780;padding:11px 12px;font-size:11px;color:#bfd1ac;line-height:1.8;border-radius:3px}.lamp-method{display:flex;justify-content:space-between;align-items:center;gap:5px;font-size:10px;color:#9eaf90;margin-top:20px}.lamp-method i{font-style:normal;color:#54664a}
.lamp-align{top:max(16px,env(safe-area-inset-top));max-height:calc(100% - 32px)}.lamp-align.is-collapsed{display:none}.lamp-align-return{position:absolute;top:max(12px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:5}.lamp-eyebrow{font-size:10px;color:#b8ce9d;letter-spacing:1px}.lamp-nudge{display:flex;justify-content:center;gap:8px;margin:15px 0}.lamp-nudge button{width:48px;height:44px;font-size:20px}.lamp-inline{display:flex;justify-content:space-between;gap:6px;margin-top:9px}.lamp-inline button{border:0;background:transparent;font-size:10px;padding:8px 3px;color:#b6c5a6}
.lamp-align.in-hole{transform:none;max-height:none;border-radius:10px;padding:8px;box-shadow:none}.lamp-align.in-hole h2{font-size:14px;margin:3px 0;line-height:1.4}.lamp-align.in-hole p{font-size:10px;margin:3px 0;line-height:1.5}.lamp-align.in-hole .lamp-nudge{margin:5px 0;gap:5px}.lamp-align.in-hole .lamp-nudge button{height:36px;min-height:36px;width:42px}.lamp-align.in-hole>.lamp-primary{font-size:11px;margin-top:4px;min-height:36px}.lamp-align.in-hole .lamp-inline{margin-top:3px}.lamp-align.in-hole .lamp-inline button{font-size:9px;min-height:25px;padding:2px}
.lamp-aperture{bottom:max(12px,env(safe-area-inset-bottom));max-height:48%}.lamp-aperture.at-top{top:max(12px,env(safe-area-inset-top));bottom:auto}.lamp-aperture h2{font-size:16px;margin:7px 0}.lamp-aperture p{font-size:11px;margin:6px 0}.lamp-aperture-actions{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}.lamp-aperture-actions button{flex:1;padding:7px;font-size:10px}.lamp-aperture details{font-size:11px;color:#b9c9aa;margin:8px 0}.lamp-aperture summary{cursor:pointer;padding:8px 0}.lamp-aperture-fields{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.lamp-aperture-fields label{display:flex;flex-direction:column;font-size:10px;gap:5px}.lamp-aperture-fields label:first-child{grid-column:1/-1}.lamp-aperture-fields input,.lamp-aperture-fields select{width:100%;min-width:0;background:#0b1308;color:#eef4e4;padding:7px;border-radius:5px;border:1px solid #456036;font-size:12px}.lamp-confirm{display:flex;align-items:center;gap:8px;font-size:11px;color:#dbe9cb;margin:13px 0}.lamp-confirm input{accent-color:#bfd99b;width:18px;height:18px;flex-shrink:0}.physical-v3 .lamp-error{color:#f5c79b;font-size:11px}.lamp-error:empty{display:none}.physical-v3.is-drawing .lamp-sheet,.physical-v3.is-drawing .lamp-hole{visibility:hidden}
.lamp-work{position:absolute;z-index:5;background:#0c1309;overflow:hidden;box-shadow:inset 0 0 0 1px #455a34}.lamp-work-content{position:absolute;overflow:hidden;display:grid;align-items:center}.lamp-work-main{display:grid;grid-template-rows:14px 28px 12px 44px 24px;gap:2px;text-align:center;min-width:0}.lamp-work-main>small{font-size:10px;color:#aebf9c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lamp-work-main>strong{font-size:25px;line-height:28px;letter-spacing:.4px}.lamp-work-main>span{font-size:10px;line-height:12px;color:#c3d0b5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lamp-work-nav{display:flex;gap:4px;min-width:0}.lamp-work-nav button{padding:0;min-width:44px;height:44px;min-height:44px;border-radius:7px}.lamp-work-nav .lamp-primary{flex:1;font-size:11px;white-space:nowrap}.lamp-work-foot{display:flex;gap:5px}.lamp-work-foot button{flex:1;min-height:24px;height:24px;padding:0;font-size:10px;background:none;border:0;color:#a6bb92}.lamp-work-foot button[aria-pressed=true]{color:#e8f4d6;text-decoration:underline}.lamp-work-menu{display:grid;gap:3px;text-align:center;font-size:11px}.lamp-work-menu>strong{font-size:11px;color:#b7ce9e}.lamp-work-menu button{padding:0;min-height:25px;height:25px;font-size:10px;border:0}
@media(max-width:480px){.lamp-sheet{padding:18px}.lamp-sheet h2{font-size:18px}.lamp-aperture h2{font-size:15px}.lamp-aperture{padding:15px}.lamp-method{font-size:9px}.lamp-scale{max-height:calc(100% - 24px)}}
