*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--sidebar-w:380px;--radius:12px;--bg:#f5f5f7;--surface:#fff;--border:#0000000f;--text-primary:#1d1d1f;--text-secondary:#86868b;--text-tertiary:#aeaeb2;--accent:#0071e3;--accent-hover:#0077ed;--canvas-bg:#e8e8ed}body{background:var(--bg);color:var(--text-primary);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,system-ui,sans-serif}.app{height:100vh;display:flex}.canvas-panel{background:var(--canvas-bg);flex-direction:column;flex:1;align-items:center;padding:20px;display:flex;position:relative;overflow:auto}#pdf-canvas{transform-origin:top;border-radius:4px;box-shadow:0 1px 3px #00000014,0 8px 24px #0000001f}.zoom-bar{z-index:10;border:1px solid var(--border);-webkit-backdrop-filter:blur(20px);background:#ffffffb8;border-radius:10px;align-items:center;gap:2px;padding:4px;display:flex;position:absolute;bottom:16px;right:16px;box-shadow:0 1px 4px #00000014}.zoom-btn{all:unset;width:30px;height:30px;color:var(--text-primary);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;transition:background .15s;display:flex}.zoom-btn:hover{background:#0000000f}.zoom-btn:active{background:#0000001a}.zoom-label{color:var(--text-secondary);text-align:center;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;min-width:38px;font-size:12px;font-weight:500}.zoom-divider{background:var(--border);width:1px;height:18px;margin:0 2px}.sidebar{width:var(--sidebar-w);background:var(--surface);border-left:1px solid var(--border);flex-direction:column;height:100vh;display:flex}.sidebar-header{flex-shrink:0;padding:28px 24px 0}.sidebar-header h1{letter-spacing:-.02em;color:var(--text-primary);font-size:22px;font-weight:700}.sidebar-body{flex-direction:column;flex:1;gap:20px;padding:24px;display:flex;overflow-y:auto}.sidebar-footer{border-top:1px solid var(--border);flex-shrink:0;align-items:center;gap:10px;padding:16px 24px;display:flex}.form-group{flex-direction:column;gap:6px;display:flex}label{color:var(--text-secondary);letter-spacing:.01em;font-size:13px;font-weight:600}label .hint{color:var(--text-tertiary);font-size:11px;font-weight:400}.select-wrap{position:relative}.select-wrap:after{content:"";border-left:4px solid #0000;border-right:4px solid #0000;border-top:5px solid var(--text-tertiary);pointer-events:none;width:0;height:0;position:absolute;top:50%;right:12px;transform:translateY(-50%)}select{background:var(--surface);color:var(--text-primary);cursor:pointer;appearance:none;border:1px solid #0000001f;border-radius:10px;outline:none;width:100%;padding:10px 32px 10px 14px;font-family:inherit;font-size:14px;font-weight:400;transition:border-color .2s,box-shadow .2s}select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #0071e31f}textarea{background:var(--surface);color:var(--text-primary);resize:vertical;border:1px solid #0000001f;border-radius:10px;outline:none;width:100%;padding:10px 14px;font-family:inherit;font-size:14px;font-weight:400;line-height:1.5;transition:border-color .2s,box-shadow .2s}textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #0071e31f}textarea::placeholder{color:var(--text-tertiary)}.btn-primary{all:unset;color:#fff;background:var(--accent);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:500;transition:background .15s,transform .1s;display:inline-flex}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{background:var(--text-tertiary);cursor:not-allowed}.btn-secondary{color:var(--accent);cursor:pointer;white-space:nowrap;font-family:inherit;font-size:14px;font-weight:500;text-decoration:none;transition:opacity .15s}.btn-secondary:hover{opacity:.7}@media (width<=768px){.app{flex-direction:column;height:auto}.canvas-panel{min-height:50vh}.sidebar{border-left:none;border-top:1px solid var(--border);width:100%;height:auto}}
