:root{--primary: #4f46e5;--primary-hover: #4338ca;--bg: #f4f6f9;--card-bg: #ffffff;--text-dark: #111827;--text-light: #6b7280;--border: #e5e7eb;--error: #dc2626;--error-bg: #fef2f2;--success: #059669;--success-bg: #ecfdf5;--radius: 16px;--radius-sm: 12px;--shadow: 0 8px 30px rgba(0, 0, 0, .05);--shadow-hover: 0 12px 40px rgba(0, 0, 0, .08);--header-h: 64px;--sidebar-w: 240px;--space-1: 8px;--space-2: 16px;--space-3: 24px;--space-4: 32px}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:Poppins,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg);color:var(--text-dark)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-2)}.auth-card{width:100%;max-width:400px;background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--space-4);transition:box-shadow .2s ease}.auth-card:hover{box-shadow:var(--shadow-hover)}.auth-card h1{margin:0 0 var(--space-1);font-size:1.5rem;font-weight:600;color:var(--text-dark)}.auth-card .subtitle{margin:0 0 var(--space-3);font-size:.9375rem;color:var(--text-light)}.auth-form{display:flex;flex-direction:column;gap:var(--space-2)}.form-group{display:flex;flex-direction:column;gap:var(--space-1)}.form-group label{font-size:.875rem;font-weight:500;color:var(--text-dark)}.input{width:100%;padding:12px 16px;font-family:inherit;font-size:1rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card-bg);color:var(--text-dark);transition:border-color .2s ease,box-shadow .2s ease}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #4f46e526}.input::placeholder{color:var(--text-light)}.input.error{border-color:var(--error)}.form-error{font-size:.8125rem;color:var(--error);margin-top:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);font-family:inherit;font-size:1rem;font-weight:500;padding:12px 24px;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background .2s ease,transform .05s ease}.btn:disabled{opacity:.7;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-hover) 100%);color:#fff;width:100%;min-height:48px}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--primary-hover) 0%,#3730a3 100%)}.btn-primary:active:not(:disabled){transform:scale(.99)}.alert{padding:var(--space-2);border-radius:var(--radius-sm);font-size:.875rem}.alert-error{background:var(--error-bg);color:var(--error)}.alert-success{background:var(--success-bg);color:var(--success)}.auth-links{text-align:center;margin-top:var(--space-2)}.auth-links a{font-size:.875rem;color:var(--primary);text-decoration:none;font-weight:500}.auth-links a:hover{text-decoration:underline}.app-layout{display:flex;min-height:100vh}.header{position:fixed;top:0;left:0;right:0;height:var(--header-h);background:var(--card-bg);box-shadow:var(--shadow);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-2);z-index:100}.header-title{font-size:1.125rem;font-weight:600;color:var(--text-dark)}.header-user{font-size:.875rem;color:var(--text-light);display:none}@media(min-width:600px){.header-user{display:block}}.btn-icon{width:40px;height:40px;padding:0;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-dark)}.btn-icon:hover{background:var(--bg)}@media(min-width:768px){.btn-menu{display:none}}.sidebar{position:fixed;top:var(--header-h);left:0;width:var(--sidebar-w);height:calc(100vh - var(--header-h));background:var(--card-bg);border-right:1px solid var(--border);padding-top:var(--space-2);display:none;flex-direction:column}@media(min-width:768px){.sidebar{display:flex}}.sidebar-nav{list-style:none;margin:0;padding:0}.sidebar-nav a,.sidebar-nav button{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);font-family:inherit;font-size:.9375rem;color:var(--text-dark);text-decoration:none;background:none;border:none;cursor:pointer;text-align:left;transition:background .2s ease}.sidebar-nav a:hover,.sidebar-nav button:hover{background:var(--bg)}.sidebar-nav a.active{background:#4f46e51a;color:var(--primary);font-weight:500}.main{flex:1;margin-top:var(--header-h);padding:var(--space-3);width:100%}@media(min-width:768px){.main{width:calc(100% - var(--sidebar-w));margin-left:var(--sidebar-w)}}.main h1{margin:0 0 var(--space-1);font-size:1.5rem;font-weight:600;color:var(--text-dark)}.main .page-subtitle{margin:0 0 var(--space-3);font-size:.9375rem;color:var(--text-light)}.card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--space-3);margin-bottom:var(--space-3);border:1px solid transparent;transition:box-shadow .2s ease}.card:hover{box-shadow:var(--shadow-hover)}.card-title{margin:0 0 var(--space-2);font-size:1rem;font-weight:600;color:var(--text-dark)}.dropzone{border:2px dashed var(--border);border-radius:var(--radius-sm);padding:var(--space-4);text-align:center;cursor:pointer;transition:border-color .2s ease,background .2s ease}.dropzone:hover,.dropzone.drag-active{border-color:var(--primary);background:#4f46e50a}.dropzone-icon{font-size:2.5rem;color:var(--text-light);margin-bottom:var(--space-1)}.dropzone-text{font-size:.9375rem;color:var(--text-light)}.file-preview{display:flex;align-items:center;gap:var(--space-1);margin-top:var(--space-2)}.file-preview span{flex:1;font-size:.875rem;color:var(--text-dark);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-remove{padding:6px;border:none;background:transparent;color:var(--text-light);cursor:pointer;border-radius:6px;display:flex;align-items:center;justify-content:center}.btn-remove:hover{background:var(--error-bg);color:var(--error)}textarea.input{min-height:120px;resize:vertical}.btn-submit{min-height:48px;padding:14px 28px;font-size:1rem}.preview-btn{width:auto;min-width:120px}.spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.spinner-page{width:40px;height:40px;border-width:3px;border-color:var(--border);border-top-color:var(--primary)}.toast-container{position:fixed;top:var(--space-2);right:var(--space-2);z-index:9999;display:flex;flex-direction:column;gap:var(--space-1);max-width:360px}.toast{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:.9375rem;font-weight:500;box-shadow:var(--shadow-hover);display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);animation:toastIn .3s ease}@keyframes toastIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.toast.toast-exit{animation:toastOut .25s ease forwards}@keyframes toastOut{to{opacity:0;transform:translate(100%)}}.toast-success{background:var(--success);color:#fff}.toast-error{background:var(--error);color:#fff}.toast-warning{background:#d97706;color:#fff}.toast-info{background:var(--primary);color:#fff}.toast-close{background:none;border:none;color:inherit;opacity:.9;cursor:pointer;padding:4px;line-height:1;font-size:1.25rem}.toast-close:hover{opacity:1}.drawer-overlay{position:fixed;inset:0;background:#0006;z-index:98;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}.drawer-overlay.open{opacity:1;visibility:visible}@media(min-width:768px){.drawer-overlay{display:none}}.drawer-mobile{position:fixed;top:var(--header-h);left:0;bottom:0;width:var(--sidebar-w);background:var(--card-bg);border-right:1px solid var(--border);z-index:99;transform:translate(-100%);transition:transform .25s ease;padding-top:var(--space-2)}.drawer-mobile.open{transform:translate(0)}@media(min-width:768px){.drawer-mobile{display:none}}.preview-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--space-2)}.preview-backdrop{position:absolute;inset:0;background:#0009;cursor:pointer}.preview-container{position:relative;width:100%;max-width:1200px;max-height:100%;background:var(--card-bg);border-radius:var(--radius);box-shadow:0 24px 80px #0003;display:flex;flex-direction:column;overflow:hidden}.preview-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);flex-shrink:0}.preview-title{margin:0;font-size:1.125rem;font-weight:600;color:var(--text-dark)}.preview-close{width:40px;height:40px;padding:0;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;font-size:1.5rem;line-height:1;color:var(--text-light);display:flex;align-items:center;justify-content:center}.preview-close:hover{background:var(--bg);color:var(--text-dark)}.preview-body{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.preview-scroll{flex:1;overflow:auto;padding:var(--space-2)}.preview-table{width:100%;border-collapse:collapse;font-size:.875rem}.preview-table th,.preview-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border)}.preview-table th{background:var(--bg);font-weight:600;color:var(--text-dark);position:sticky;top:0;z-index:1}.preview-table td{color:var(--text-dark)}.preview-table tbody tr:hover{background:#4f46e50a}.preview-empty{margin:0;padding:var(--space-4);text-align:center;color:var(--text-light);font-size:.9375rem}
