:root{color-scheme:light;font-family:"Microsoft YaHei",sans-serif;color:#302c27;background:#f2efe9}*{box-sizing:border-box}body{margin:0}header{padding:36px 5vw 24px;border-bottom:1px solid #ddd7cd;background:#faf8f3}.eyebrow{font-size:12px;letter-spacing:3px;color:#8b775b}h1{font-size:27px;margin:14px 0}header p{color:#78716a;margin:0;font-size:14px}main{display:grid;grid-template-columns:260px 1fr;gap:28px;padding:28px 5vw}aside{background:#fffdf8;border:1px solid #e0d9ce;border-radius:14px;padding:22px;height:fit-content;position:sticky;top:20px}label{display:block;font-size:13px;font-weight:bold;margin-bottom:20px}select,input{display:block;width:100%;padding:12px;margin-top:9px;border:1px solid #d9d1c5;border-radius:8px;background:white;color:#302c27;font:inherit}button{cursor:pointer;border:0;border-radius:8px;background:#65543e;color:white;padding:13px 12px;width:100%;font:inherit;font-size:13px}button:hover{filter:brightness(1.08)}button:disabled{opacity:.5;cursor:wait}.secondary{margin-top:10px;background:#eae3d8;color:#514635}#status{font-size:12px;color:#716653;line-height:1.7}.notice{font-size:12px;line-height:1.9;padding:13px;background:#f3efe6;border-radius:8px;margin:18px 0}a{color:#746044;font-size:12px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:18px}.toolbar h2{font-size:18px;margin:0}.toolbar span{font-size:12px;color:#888}#gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.card{background:#fff;border:1px solid #e0d9ce;border-radius:12px;padding:12px;overflow:hidden}.card canvas{display:block;width:100%;height:auto;border-radius:5px}.card footer{display:flex;align-items:center;justify-content:space-between;padding-top:12px;gap:10px}.card footer span{font-size:12px;color:#776e61}.card button{width:auto;padding:8px 14px}@media(min-width:1600px){#gallery{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:760px){main{grid-template-columns:1fr;padding:20px}aside{position:static}.toolbar{display:block}.toolbar span{display:block;margin-top:8px}header{padding:25px 20px}h1{font-size:22px}#gallery{gap:12px}.card{padding:8px}}
@media(max-width:500px){#gallery{grid-template-columns:1fr}}
@media(max-width:500px){#gallery{grid-template-columns:1fr}}
details{background:#fffdf8;border:1px solid #e0d9ce;padding:20px;border-radius:12px;margin-bottom:24px}summary{cursor:pointer;font-weight:bold}details p{font-size:13px;line-height:1.8;color:#746a5d}.photo-actions{display:flex;flex-wrap:wrap;gap:10px}.photo-actions button,.file-button{width:auto;padding:10px 15px;font-size:12px}.file-button{background:#eae3d8;border-radius:8px;cursor:pointer;margin:0}.file-button input{display:none}#photoList{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}.photo-thumb{width:130px;padding:8px;background:#eee8dd;color:#514635}.photo-thumb img{width:100%;height:95px;object-fit:cover;border-radius:5px}.photo-thumb span{font-size:11px;display:block;overflow-wrap:anywhere;padding-top:7px}#calibrationCanvas{display:block;max-width:100%;max-height:650px;width:auto;height:auto;touch-action:none;cursor:crosshair}small{font-size:11px;line-height:1.7;display:block;font-weight:normal;color:#857b6e}.card footer{flex-wrap:wrap}.card footer .secondary{margin:0}aside{position:static}label:has(input[type=range]){margin-bottom:15px}

.card canvas{cursor:zoom-in}.card canvas:focus-visible{outline:3px solid #8b775b;outline-offset:3px}.viewer-open{overflow:hidden}#imageViewer{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;padding:0;margin:0;border:0;background:rgba(19,17,14,.93);color:white}#imageViewer::backdrop{background:rgba(0,0,0,.6)}.viewer-toolbar{height:64px;display:flex;align-items:center;gap:12px;padding:12px 20px;background:rgba(0,0,0,.4)}.viewer-toolbar span{flex:1;font-size:13px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.viewer-toolbar button{width:auto;background:#65543e;padding:9px 13px}#viewerStage{height:calc(100dvh - 108px);padding:18px;display:flex;align-items:center;justify-content:center;overflow:auto}#viewerImage{max-width:100%;max-height:100%;object-fit:contain;display:block}#imageViewer.original-size #viewerStage{display:block}#imageViewer.original-size #viewerImage{max-width:none;max-height:none;margin:auto}.viewer-hint{height:44px;margin:0;text-align:center;font-size:12px;color:#d4cbbc;padding:10px}#saveToast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);width:min(620px,calc(100vw - 32px));z-index:20;background:#365a42;color:white;border-radius:10px;box-shadow:0 8px 25px #0003;padding:14px 16px;display:flex;gap:12px;align-items:center;font-size:14px}#saveToast[hidden]{display:none}#saveToast.error{background:#8b3c38}#saveToast span{flex:1}#saveToast button{width:auto;background:transparent;padding:4px 8px;font-size:20px}

/* 手机功能封存时隐藏入口，保留代码和底图库。 */
[hidden]{display:none!important}

#personCount{display:block;font-weight:normal;color:#817461;margin-top:8px;font-size:12px}#applyPreset{margin:0 0 20px}

.card footer{flex-wrap:wrap}.card footer span{flex:1 1 100%}.card footer .secondary{margin-top:0}
