.posture-grid{display:grid;grid-template-columns:1fr 1.1fr .9fr;gap:16px;align-items:start}.posture-grid h2{font-size:1.1rem;margin:16px}.photo-panel,.posture-controls{background:#18292e;border:1px solid #30464c;border-radius:12px;padding:16px}.photo-panel h2,.posture-controls h2{margin:0 0 16px}.photo-stage{height:410px;display:grid;place-items:center;background:#0e191d;border-radius:8px;margin:14px 0;overflow:hidden}.photo-stage img{width:100%;height:100%;object-fit:contain;min-height:0}.photo-stage p{text-align:center;color:#afc3c5;font-size:.875rem}.upload{display:block;background:#244b41;border:1px solid #6aaf99;padding:12px;border-radius:7px;cursor:pointer}.upload input{display:block;width:100%;font:inherit;font-size:.8rem;margin-top:8px}#photo-status{font-size:.8rem;color:#b4c9c9}#posture-canvas{height:470px}#load{text-align:center;font-size:.875rem}.visual{position:relative;top:0}.posture-grid button{background:#213c3d;color:#dceee8;border:1px solid #4b6969;border-radius:6px;padding:10px;min-height:44px}.preset{display:flex;gap:7px;flex-wrap:wrap}.preset button{font-size:.8rem}.pose-control{display:block;margin:22px 0}.pose-control>span{display:flex;justify-content:space-between;gap:10px;font-size:.9rem}.pose-control input{width:100%;margin:14px 0 0;accent-color:#8ae2c8;min-height:24px}.pose-control small{font-size:.75rem;color:#a9c0c2}.scope,.candidate p{font-size:.8rem;color:#aec7c5}.candidate{border-top:1px solid #45605f;margin-top:20px}.candidate h3{font-size:.95rem}.candidate ul{padding-left:20px;line-height:1.8;font-size:.9rem}input[type=checkbox]{accent-color:#8ae2c8}@media(max-width:1000px){.posture-grid{grid-template-columns:1fr 1fr}.posture-controls{grid-column:1/-1}}@media(max-width:600px){.posture-grid{grid-template-columns:1fr}.photo-stage{height:300px}#posture-canvas{height:390px}.posture-controls{grid-column:auto}} 

.position-picker{display:flex;gap:8px;margin-bottom:10px}.position-picker button{flex:1}.position-picker button[aria-pressed=true]{background:#8ae2c8;color:#102a26}#position-status{font-size:.875rem;color:#b4ceca}

.photo-stage{position:relative}#photo-overlay,#photo-marks{position:absolute;inset:0;pointer-events:none}#photo-overlay canvas{display:block;width:100%;height:100%}#photo-options{font-size:.85rem}#photo-measures{padding:12px;background:#102226;line-height:1.8}.photo-mark{position:absolute;transform:translate(-50%,-50%);background:#b82638;color:white;padding:3px 6px;border-radius:8px;font-size:12px}.photo-stage.marking{cursor:crosshair}#photo-marks{z-index:2}

#photo-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2;overflow:visible}#photo-lines line{stroke:#8ae2c8;stroke-width:2;opacity:.85}#photo-lines line.guess{stroke:#f3ad55;stroke-dasharray:5 4}#photo-landmarks{position:absolute;inset:0;z-index:3;pointer-events:none}.lm-dot{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;touch-action:none;width:12px;height:12px;min-height:0!important;padding:0!important;border-radius:50%!important;border:1.5px solid #0e191d!important;background:#8ae2c8!important;cursor:grab}.lm-dot.guess{background:transparent!important;border:1.5px dashed #f3ad55!important;box-shadow:0 0 0 2px #0e191d}.lm-dot.user{background:#7aa8ff!important}.lm-dot:focus-visible{outline:3px solid #fff}.lm-dot span{position:absolute;left:10px;top:-16px;white-space:nowrap;font-size:10px;background:#0e191dcc;color:#e6f4f0;padding:1px 5px;border-radius:5px;pointer-events:none}.lm-dot.dragging{cursor:grabbing}#photo-marks{z-index:4}#landmark-panel{border:1px solid #45605f;border-radius:8px;padding:10px 12px;margin:0 0 14px}#landmark-panel legend{padding:0 6px;font-weight:600}#landmark-panel label{display:block;margin:8px 0}#landmark-panel select{margin-left:8px;font:inherit;background:#102226;color:#e6f4f0;border:1px solid #4b6969;border-radius:5px;padding:4px}#lm-readout{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;background:#102226;padding:10px;border-radius:6px;margin:10px 0}#lm-readout dt{color:#aec7c5}#lm-readout dd{margin:0}#lm-readout dd.need{color:#f3ad55}.photo-stage.marking .lm-dot{pointer-events:none}
.lm-dot.label-left span{left:auto;right:10px}.lm-dot::before{content:"";position:absolute;inset:-16px;border-radius:50%}.photo-tabs{display:flex;gap:6px;margin-top:14px}.photo-tabs button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:48px}.photo-tabs button small{font-size:.72rem;color:#a9c0c2}.photo-tabs button[aria-selected=true]{background:#8ae2c8;color:#102a26}.photo-tabs button[aria-selected=true] small{color:#1d4a42}.photo-tabs+.photo-stage{margin-top:8px}.lm-dot.minor{width:8px;height:8px}.lm-dot.minor span{display:none}.lm-dot.minor:hover span,.lm-dot.minor:focus span,.lm-dot.minor.dragging span{display:block}#photo-lines line.ref{stroke:#ff6b9a;stroke-width:2;stroke-dasharray:8 5}.lm-dot.refpt{background:#ff6b9a!important}.shoot-tips{margin:10px 0 4px;font-size:.78rem;color:#b4c9c9;border:1px solid #30464c;border-radius:7px;padding:6px 10px}.shoot-tips summary{cursor:pointer;color:#dceee8;font-size:.82rem}.shoot-tips ul{margin:6px 0 2px;padding-left:18px;line-height:1.6}.exam{border-top:1px solid #45605f;margin-top:20px}.exam h3{font-size:.95rem}#exam-cards details{background:#102226;border:1px solid #30464c;border-radius:8px;padding:8px 10px;margin:8px 0}#exam-cards summary{cursor:pointer;font-size:.88rem;color:#dceee8}#exam-cards ul{list-style:none;padding:0;margin:8px 0 0}#exam-cards li{padding:6px 0;border-top:1px dashed #30464c}#exam-cards li b{font-size:.84rem;margin-left:6px}#exam-cards li p{margin:4px 0 0;font-size:.8rem;color:#b4c9c9;line-height:1.6}.exam-kind{font-size:.7rem;background:#244b41;color:#bfeee0;border-radius:4px;padding:1px 6px}.exam-caution{font-size:.78rem;color:#f3c58a;background:#2a2418;border-radius:6px;padding:6px 8px;margin:8px 0 0}.lr-badge{position:absolute;transform:translate(9px,5px);font-size:10.5px;font-weight:700;background:#ff6b9a;color:#fff;padding:1px 6px;border-radius:5px;white-space:nowrap;pointer-events:none;z-index:1;box-shadow:0 1px 3px #0008}.lr-badge.left{transform:translate(calc(-100% - 9px),5px)}.lr-badge.level{background:#3f6f64;transform:translate(-50%,6px)}.lr-badge.side{background:#7aa8ff}.lr-badge.center{transform:translate(-50%,0)}#photo-lines line.plumb{stroke:#fff;stroke-width:1.5;stroke-dasharray:4 4;opacity:.9}#photo-lines line.ahead{stroke:#7aa8ff;stroke-width:2.5}#landmark-panel input[type=number]{width:4.5em;font:inherit;background:#102226;color:#e6f4f0;border:1px solid #4b6969;border-radius:5px;padding:3px 5px}