:root{color-scheme:light;--bg: #f4f6f8;--panel: #ffffff;--border: #dfe3e8;--text: #1f2933;--text-muted: #647184;--primary: #1f4b99;--primary-dark: #163a78;--danger: #b3261e;--success: #1e7a34;--warning: #a15c00;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:var(--primary)}.app-shell{display:flex;min-height:100vh}.sidebar{width:240px;background:#0f1f38;color:#e5ecf6;flex-shrink:0;display:flex;flex-direction:column;padding:16px 0}.sidebar h1{font-size:16px;padding:0 20px 16px;margin:0;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar nav{display:flex;flex-direction:column;margin-top:12px}.sidebar nav a{color:#cdd9ec;text-decoration:none;padding:10px 20px;font-size:14px}.sidebar nav a.active,.sidebar nav a:hover{background:#ffffff14;color:#fff}.sidebar .user-box{margin-top:auto;padding:16px 20px;border-top:1px solid rgba(255,255,255,.1);font-size:13px}.main{flex:1;padding:24px 32px;max-width:1200px}.card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:20px;margin-bottom:20px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.page-header h2{margin:0}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}th{color:var(--text-muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em}.btn{display:inline-block;border:none;border-radius:6px;padding:8px 14px;font-size:14px;cursor:pointer;background:var(--primary);color:#fff}.btn:hover{background:var(--primary-dark)}.btn.secondary{background:#fff;color:var(--text);border:1px solid var(--border)}.btn.danger{background:var(--danger)}.btn:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font-size:14px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;width:100%;background:#fff;color:var(--text)}label{display:block;font-size:13px;color:var(--text-muted);margin-bottom:4px;margin-top:12px}.actions{display:flex;align-items:center;gap:10px}form .actions{margin-top:20px}.error-banner{background:#fdecea;color:var(--danger);border:1px solid #f5c6c2;border-radius:6px;padding:10px 14px;margin-bottom:16px;font-size:14px}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.badge.pending{background:#fff4e0;color:var(--warning)}.badge.approved,.badge.posted{background:#e5f5e9;color:var(--success)}.badge.rejected{background:#fdecea;color:var(--danger)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-box{width:360px;background:#fff;border:1px solid var(--border);border-radius:10px;padding:32px}.muted{color:var(--text-muted);font-size:13px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.secret-input{display:flex;gap:6px}.secret-input input{flex:1}.secret-field-value{display:inline-flex;align-items:center;gap:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.eye-toggle{border:1px solid var(--border);background:#fff;border-radius:6px;width:32px;height:32px;flex-shrink:0;cursor:pointer;font-size:14px;line-height:1;padding:0}.eye-toggle:hover{background:var(--bg)}.section-title{margin:24px 0 4px;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.btn-link{border:none;background:none;color:var(--primary);cursor:pointer;font-size:13px;padding:0}.btn-link:hover{text-decoration:underline}.formula-bar{display:flex;align-items:stretch;margin-bottom:8px;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:#fff}.formula-bar-ref{flex-shrink:0;width:64px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--text-muted);background:var(--bg);border-right:1px solid var(--border)}.formula-bar input{flex:1;border:none;border-radius:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.formula-bar input:disabled{background:#fff;color:var(--text-muted)}.sheet-hidden-input{position:absolute;width:1px;height:1px;opacity:0;border:none;padding:0;resize:none;pointer-events:none}.sheet-wrap{overflow:auto;max-height:75vh;border:1px solid var(--border);border-radius:8px;background:#fff}.sheet-table{border-collapse:separate;border-spacing:0;font-size:13px}.sheet-table th,.sheet-table td{border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:0;height:28px;position:relative;overflow:hidden}.sheet-table thead th{position:sticky;top:0;background:var(--bg);z-index:2;text-align:center;font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.sheet-table thead th.corner{position:sticky;left:0;top:0;z-index:3;background:var(--bg);cursor:default}.sheet-table .row-head{position:sticky;left:0;background:var(--bg);z-index:1;text-align:center;font-size:12px;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.sheet-table thead th.header-active,.sheet-table .row-head.header-active{background:var(--primary);color:#fff}.sheet-td{cursor:cell}.sheet-td.selected{outline:2px solid var(--primary);outline-offset:-2px;z-index:1}.sheet-td.point-drag{outline:1px dashed var(--primary);outline-offset:-1px;background:#f0f5ff}.sheet-td.bulk-selected{background:#eaf1ff}.sheet-cell{display:block;width:100%;height:100%;padding:4px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px;box-sizing:border-box}.sheet-cell-input{width:100%;height:100%;border:none;outline:2px solid var(--primary);outline-offset:-2px;padding:4px 6px;font-size:13px;box-sizing:border-box;border-radius:0}.resize-handle{position:absolute;right:0;top:0;width:6px;height:100%;cursor:col-resize;z-index:4}.resize-handle:hover{background:var(--primary);opacity:.4}.row-resize-handle{position:absolute;left:0;bottom:0;width:100%;height:6px;cursor:row-resize;z-index:4}.row-resize-handle:hover{background:var(--primary);opacity:.4}.toolbar-sep{width:1px;align-self:stretch;background:var(--border);margin:0 2px}.swatch-label{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text);margin:0;cursor:pointer}.swatch-label input[type=color]{width:30px;height:30px;padding:2px;border-radius:6px;cursor:pointer}
