:root{--bg:#f4f6f8;--panel:#fff;--border:#dfe4ea;--text:#2c3e50;--muted:#7f8c8d;--accent:#2980b9;--accent-hover:#2471a3;--warn:#e67e22;--danger:#c0392b;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-size:14px}#app{grid-template-rows:auto 1fr;height:100vh;display:grid}header.app-header{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:16px;padding:10px 16px;display:flex}header.app-header h1{white-space:nowrap;margin:0;font-size:16px}header.app-header .filename{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.mode-switch{border:1px solid var(--border);border-radius:6px;margin-left:auto;display:flex;overflow:hidden}.mode-switch-btn{width:auto;color:var(--muted);background:#fff;border:none;border-radius:0;margin:0;padding:6px 10px;font-size:12px}.mode-switch-btn.active{background:var(--accent);color:#fff}.btn-icon{vertical-align:-4px;margin-right:7px;font-size:22px}body.advanced-ui .btn-icon{font-size:26px}body.advanced-ui .btn-label{display:none}body.advanced-ui .btn-icon{margin-right:0}body.advanced-ui button{padding-left:8px;padding-right:8px}.layout{grid-template-columns:300px 1fr 300px;min-height:0;display:grid}aside.sidebar{background:var(--panel);flex-direction:column;width:100%;min-width:0;display:flex;overflow-y:hidden}aside.sidebar-left{border-right:1px solid var(--border)}aside.sidebar-right{border-left:1px solid var(--border)}aside.sidebar.collapsed .sidebar-content,aside.sidebar.collapsed .sidebar-header-main{display:none}.sidebar-header{border-bottom:1px solid var(--border);flex:none;align-items:center;gap:4px;padding:8px;display:flex}.sidebar-header-main{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.sidebar-right .sidebar-header-main{flex-direction:row-reverse}.sidebar-title{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;font-weight:600;overflow:hidden}.sidebar-right .sidebar-title{text-align:right}.icon-btn{width:auto;color:var(--muted);background:0 0;border:none;flex:none;margin:0;padding:4px 6px;font-size:13px}.icon-btn:hover{background:var(--bg);color:var(--text)}.icon-btn.active{color:var(--accent);border:1px solid var(--accent);background:#2980b91a;border-radius:4px}.sidebar-content{flex:1;padding:12px;overflow-y:auto}section.panel{border:1px solid var(--border);border-radius:8px;margin-bottom:12px;padding:10px 12px}section.panel h2{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 8px;font-size:12px}.field-row{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.field-row label{flex:1;font-size:13px}.field-row input[type=number]{border:1px solid var(--border);border-radius:4px;width:90px;padding:4px 6px;font-size:13px}.field-row select{border:1px solid var(--border);border-radius:4px;max-width:170px;padding:4px 6px;font-size:12px}.field-row input[type=checkbox]{width:16px;height:16px}.hint{color:var(--muted);margin:4px 0 8px;font-size:11px;line-height:1.4}.btn-row{gap:6px;display:flex}.btn-row button{margin-top:0}button{cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:6px;width:100%;margin-top:4px;padding:7px 10px;font-size:13px}button:hover{background:var(--accent-hover)}button.secondary{color:var(--accent);background:#fff}button.secondary:hover{background:#eaf3fa}button:disabled{opacity:.5;cursor:not-allowed}input[type=file]{width:100%;font-size:12px}.stat-line{justify-content:space-between;padding:2px 0;font-size:13px;display:flex}.warning-box{color:#935116;background:#fdf2e3;border:1px solid #f5cba7;border-radius:6px;max-height:120px;margin-top:6px;padding:6px 8px;font-size:12px;overflow-y:auto}.warning-box.error{color:var(--danger);background:#fdecea;border-color:#f5b7b1}.warning-box div{margin-bottom:3px}.tabs{gap:6px;margin-bottom:6px;display:flex}.tabs button{flex:1;width:auto}.tabs button.inactive{color:var(--accent);background:#fff}.sheet-nav{justify-content:center;align-items:center;gap:10px;margin-top:6px;display:flex}.sheet-nav button{width:auto;padding:5px 10px}.sheet-nav span{font-size:13px}.sheet-label-current{color:var(--accent);font-weight:700}.empty-sheet-row{color:#935116;background:#fdf2e3;border:1px solid #f5cba7;border-radius:6px;justify-content:space-between;align-items:center;gap:6px;margin-top:6px;padding:5px 8px;font-size:12px;display:flex}.empty-sheet-row button{width:auto;margin:0;padding:3px 8px;font-size:11px}main.viewport{background:repeating-conic-gradient(#eef1f4 0% 25%,#f7f9fb 0% 50%) 50%/24px 24px;position:relative;overflow:hidden}main.viewport svg{cursor:crosshair;width:100%;height:100%;display:block}main.viewport svg.panning{cursor:grabbing}.empty-hint{color:var(--muted);text-align:center;pointer-events:none;justify-content:center;align-items:center;padding:20px;font-size:14px;display:flex;position:absolute;inset:0}.sheet-diagram{background:repeating-conic-gradient(#eef1f4 0% 25%,#f7f9fb 0% 50%) 50%/12px 12px;border-radius:6px;width:100%;height:auto;margin-bottom:8px}.curve-row{border-bottom:1px solid var(--border);align-items:center;gap:6px;padding:3px 0;display:flex}.curve-row input[type=checkbox]{flex:none}.curve-preview{border:1px solid var(--border);background:#f7f9fb;border-radius:3px;flex:none;width:60px;height:24px}.curve-preview svg{width:100%;height:100%;display:block}.curve-label{text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.legend{border:1px solid var(--border);background:#ffffffe6;border-radius:6px;flex-wrap:wrap;gap:8px 12px;max-width:320px;padding:6px 10px;font-size:11px;display:flex;position:absolute;bottom:10px;left:10px}.legend span{white-space:nowrap;align-items:center;gap:4px;display:flex}.legend i{border-radius:2px;flex:none;width:10px;height:10px;display:inline-block}.select-rect{pointer-events:none;background:#2980b91f;border:1.5px dashed #2980b9;position:absolute}.angle-tooltip{color:#fff;pointer-events:none;white-space:nowrap;z-index:5;background:#2c3e50;border-radius:4px;padding:3px 7px;font-size:12px;font-weight:600;position:absolute;transform:translate(14px,-50%)}.text-add-form{background:var(--panel);border:1px solid var(--border);z-index:10;border-radius:8px;width:200px;padding:10px;position:absolute;box-shadow:0 4px 16px #0000002e}.text-add-form input[type=text]{border:1px solid var(--border);border-radius:4px;width:100%;margin-bottom:6px;padding:5px 6px;font-size:13px}.text-add-form select,.text-add-form input[type=number]{border:1px solid var(--border);border-radius:4px;padding:3px 5px;font-size:12px}.text-add-form input[type=color]{border:1px solid var(--border);border-radius:4px;width:40px;height:22px;padding:0}.text-add-form .field-row{margin-bottom:4px}.text-add-form .btn-row button{padding:5px 8px;font-size:12px}#add-text-tool.active{border-color:var(--accent);background:var(--accent);color:#fff}
