:root{color:#e9eaed;--bg-primary:#181818;--bg-secondary:#252525;--bg-elevated:#303030;--border:#424242;--accent:#4b9cff;--accent-action:#4b9cff;--text-secondary:#b8b8b8;--toolbar-height:54px;--bottom-bar-height:64px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);background:#181818;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,Noto Sans TC,sans-serif}*{box-sizing:border-box}body{background:var(--bg-primary);min-height:100dvh;margin:0;overflow:hidden}button,input{font:inherit}button{color:#f5f5f5;cursor:pointer;background:#3a3a3a;border:1px solid #0000;border-radius:4px;min-height:36px;padding:8px 12px;transition:background .14s,border-color .14s}button:hover{background:#4a4a4a}button:active{background:#222}button.primary{background:var(--accent-action);color:#071525}button.primary:hover{background:#75b5ff}button.active-tool{border-color:var(--accent);color:#dceeff;box-shadow:inset 0 -2px var(--accent);background:#1f3c5d}input{color:#f5f5f5;background:#181818;border:1px solid #535353;border-radius:3px;width:100%;padding:7px}.hidden{display:none!important}.mobile-only{display:none}.install-banner{z-index:1000;color:#191919;background:#efefef;border-radius:6px;align-items:center;gap:10px;padding:10px;display:flex;position:fixed;top:10px;bottom:auto;left:10px;right:10px;box-shadow:0 6px 22px #0008}.install-banner button:first-of-type{background:#4b9cff;margin-left:auto}.install-banner button:last-child{color:#222;background:0 0;padding:3px 8px}.toast{background:#353535f7;border:1px solid #595959;border-radius:4px;margin-top:8px;padding:10px 14px;box-shadow:0 6px 18px #0008}.toast-update{align-items:center;gap:10px;display:flex}.toast-update button{background:var(--accent);color:#111;min-height:30px;margin-left:auto;padding:4px 9px}.privacy{border-left:3px solid var(--accent);color:#d7e8ff;background:#222;padding:10px;font-size:.84rem;line-height:1.45}.tool-help{background:#202c38;border:1px solid #3d536a;padding:11px 12px}.tool-help span{color:#82c2ff;text-transform:uppercase;letter-spacing:.08em;font-size:.72rem}.tool-help p{color:#d5dde7;margin:5px 0 0;font-size:.82rem;line-height:1.4}.panel-section{border-bottom:1px solid var(--border);flex-direction:column;gap:10px;padding:2px 0 16px;display:flex}.panel-section h2{color:#cfcfcf;text-transform:uppercase;letter-spacing:.08em;margin:0;font-size:11px;line-height:1}.panel-hint{color:var(--text-secondary);margin:0;font-size:.79rem;line-height:1.4}.quiet-action{color:#aaa;text-align:left;background:0 0;border-color:#0000;padding-left:0;font-size:.8rem}.result-preview,.processing-overlay{z-index:900;background:#101010e8;place-items:center;padding:20px;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.preview-card{background:#282828;border:1px solid #505050;grid-template-rows:auto minmax(0,1fr) auto;width:min(980px,100%);height:min(90dvh,850px);display:grid;box-shadow:0 18px 52px #000}.preview-card header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.preview-card header div{flex-direction:column;gap:3px;display:flex}.preview-card header span{font-size:.94rem;font-weight:600}.preview-card header small{color:var(--text-secondary);font-size:.75rem}.preview-card header button{background:0 0;padding:4px 8px;font-size:1.25rem;line-height:1}.preview-card img{object-fit:contain;background:#111;width:100%;max-width:100%;height:100%;max-height:100%}.preview-card footer{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:12px;display:flex}.processing-overlay{z-index:1000}.processing-card{background:#303030;border:1px solid #555;flex-direction:column;align-items:center;gap:13px;width:min(330px,90vw);padding:26px;display:flex;box-shadow:0 12px 40px #000}.processing-card span{color:var(--text-secondary);font-size:.86rem}.spinner{border:3px solid #555;border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}.progress-track{background:#191919;width:100%;height:4px}.progress-track div{background:var(--accent);width:3%;height:100%;transition:width .12s}@keyframes spin{to{transform:rotate(360deg)}}.sheet-handle{background:#7a7a7a;border-radius:4px;width:40px;height:4px;margin:0 auto 13px}#toolbar{height:var(--toolbar-height);border-bottom:1px solid var(--border);background:#282828;align-items:center;gap:20px;padding:0 16px;display:flex}.brand{letter-spacing:.03em;white-space:nowrap;font-size:.9rem;font-weight:650}.brand span{color:#969696;letter-spacing:.08em;text-transform:uppercase;margin-left:5px;font-size:.68rem;font-weight:500}.tool-group,.toolbar-actions{align-items:center;gap:6px;display:flex}.toolbar-actions{margin-left:auto}.tool-group button,.toolbar-actions button{white-space:nowrap;padding:6px 10px;font-size:.82rem}#workspace{height:calc(100dvh - var(--toolbar-height));grid-template-columns:minmax(0,1fr) 320px;display:grid}#canvas-container{touch-action:none;background:#111;min-width:0;position:relative;overflow:hidden}#interaction-canvas[data-tool=corners]{cursor:crosshair}#interaction-canvas[data-tool=guideline]{cursor:cell}canvas{position:absolute;top:0;bottom:0;left:0;right:0}.upload-placeholder{text-align:center;color:#ddd;place-content:center;justify-items:center;gap:8px;display:grid;position:absolute;top:0;bottom:0;left:0;right:0}.upload-placeholder p{margin:0}.upload-placeholder .hint{max-width:290px;color:var(--text-secondary);font-size:.85rem;line-height:1.45}.upload-icon{color:var(--accent);font-size:3rem}#side-panel{background:var(--bg-secondary);border-left:1px solid var(--border);flex-direction:column;gap:16px;padding:16px;display:flex;overflow-y:auto}#side-panel label,.bottom-sheet label{color:#ddd;flex-direction:column;gap:6px;font-size:.84rem;display:flex}.dimensions{align-items:center;gap:6px;display:flex}.corner-list{flex-direction:column;gap:7px;display:flex}.corner-list label{grid-template-columns:30px 1fr 1fr;align-items:center;display:grid!important}.wide{width:100%}.export-row{gap:8px;display:flex}.export-row button{flex:1}#side-panel small{color:var(--text-secondary);line-height:1.4}.bottom-bar{display:none}.bottom-sheet{z-index:100;max-height:80dvh;padding:16px 16px calc(16px + var(--safe-bottom));background:var(--bg-secondary);border:1px solid var(--border);border-bottom:0;border-radius:12px 12px 0 0;transition:transform .25s;position:fixed;bottom:0;left:0;right:0;overflow:auto;transform:translateY(105%)}.bottom-sheet.open{transform:translateY(0)}.bottom-sheet>div:last-child{flex-direction:column;gap:16px;display:flex}.overlay{z-index:99;background:#0009;position:fixed;top:0;bottom:0;left:0;right:0}@media (max-width:767px){.desktop-only{display:none}.mobile-only{display:inline-flex}#toolbar{height:calc(var(--toolbar-height) + var(--safe-top));padding:var(--safe-top) 10px 0;gap:8px}.brand{font-size:.8rem}.brand span,.tool-group [data-action=upload],.tool-group [data-action=delete-guideline]{display:none}.tool-group{gap:4px;margin-left:auto}.tool-group button,.toolbar-actions button{padding:6px;font-size:.72rem}#workspace{height:calc(100dvh - var(--toolbar-height) - var(--safe-top) - var(--bottom-bar-height) - var(--safe-bottom));display:block}#side-panel{display:none}.bottom-bar{height:calc(var(--bottom-bar-height) + var(--safe-bottom));padding:8px 8px calc(8px + var(--safe-bottom));border-top:1px solid var(--border);background:#282828;grid-template-columns:repeat(5,1fr);gap:5px;display:grid}.bottom-bar button{padding:5px 2px;font-size:.67rem}.result-preview{padding:0;top:0;bottom:0;left:0;right:0}.preview-card{border:0;height:100dvh}.preview-card footer{justify-content:stretch}.preview-card footer button{flex:1}}@media (max-width:900px) and (orientation:landscape){#workspace{grid-template-columns:minmax(0,1fr) 220px;display:grid}#side-panel{font-size:12px;display:flex}.bottom-bar{display:none}}
