.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.login-box{background:#fff;border-radius:16px;padding:48px 40px;max-width:440px;width:100%;box-shadow:0 20px 60px #0000004d;text-align:center}.login-logo{margin:0 auto 24px;width:60px;height:60px}.login-box h1{margin:0 0 8px;font-size:28px;font-weight:600;color:#1a1a1a}.login-subtitle{margin:0 0 32px;font-size:16px;color:#666}.login-error{background:#fee;border:1px solid #fcc;color:#c33;padding:12px;border-radius:8px;margin-bottom:24px;font-size:14px}.login-button{width:100%;padding:16px 24px;background:#873eff;color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:12px}.login-button:hover:not(:disabled){background:#7329e6;transform:translateY(-1px);box-shadow:0 4px 12px #873eff4d}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-button svg{width:24px;height:24px}.login-button .spinner{width:20px;height:20px;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)}}.login-footer{margin:24px 0 0;font-size:14px;color:#999}.dashboard{min-height:100vh;display:flex;flex-direction:column}.header{background:linear-gradient(135deg,#1a2843,#1a2843);color:#fff;padding:1rem;box-shadow:0 2px 8px #0000001a}.header-content{max-width:1600px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.header h1{font-size:1.5rem;font-weight:700}.subtitle{font-size:1rem;opacity:.9}.main-content{flex:1;max-width:1600px;width:100%;margin:0 auto;padding:2rem 1rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{background:#fff;padding:1.5rem;border-radius:12px;box-shadow:0 2px 8px #00000014;transition:transform .2s,box-shadow .2s}.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001f}.stat-label{font-size:.875rem;color:#666;text-transform:uppercase;letter-spacing:.5px;margin-bottom:.5rem}.stat-value{font-size:2rem;font-weight:700;color:#0166ff;margin-bottom:.25rem}.stat-trend{font-size:.875rem;color:#999}.section{background:#fff;padding:1.5rem;border-radius:12px;box-shadow:0 2px 8px #00000014;margin-bottom:2rem}.section h2{font-size:1.5rem;margin-bottom:1rem;color:#1d1d1f}.transactions-list{min-height:200px;display:flex;align-items:center;justify-content:center}.empty-state{color:#999;text-align:center}.footer{background:#fff;border-top:1px solid #e5e5e7;padding:1.5rem;text-align:center;color:#666;font-size:.875rem}.error-banner{background:#fff3cd;border:1px solid #ffc107;border-radius:8px;padding:1rem;margin-bottom:2rem;color:#856404}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;color:#666}.spinner{width:50px;height:50px;border:4px solid #f3f3f3;border-top:4px solid #0166FF;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}.price-panel{background:#fff;border-radius:8px;padding:20px;box-shadow:0 1px 3px #0000001a;margin-bottom:24px}.price-panel.loading,.price-panel.error{display:flex;align-items:center;justify-content:center;gap:8px;color:#666;min-height:100px}.price-panel.error{color:#dc3545}.price-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.price-panel-header h2{margin:0;font-size:18px;font-weight:600;color:#1a1a1a}.btn-refresh{display:flex;align-items:center;gap:6px;padding:6px 12px;background:#f0f0f0;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;color:#333;transition:all .2s}.btn-refresh:hover:not(:disabled){background:#e5e5e5;border-color:#ccc}.btn-refresh:disabled{opacity:.6;cursor:not-allowed}.price-status{border-radius:6px;padding:12px;margin-bottom:16px;border:1px solid}.price-status.status-active{background:#d4edda;border-color:#c3e6cb;color:#155724}.price-status.status-warning{background:#fff3cd;border-color:#ffeaa7;color:#856404}.price-status.status-inactive{background:#f8f9fa;border-color:#dee2e6;color:#6c757d}.status-indicator{font-weight:600;margin-bottom:8px;font-size:14px}.status-details{display:flex;gap:20px;font-size:13px}.status-item{display:flex;gap:6px}.status-item .label{font-weight:500;opacity:.8}.status-item .value{font-weight:600}.price-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.price-card{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:12px;text-align:center}.token-name{font-size:12px;font-weight:600;color:#6c757d;margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}.token-price{font-size:16px;font-weight:700;color:#1a1a1a}.transactions-table{overflow-x:auto}.transactions-table table{width:100%;border-collapse:collapse}.transactions-table th{text-align:left;padding:.6rem .5rem;border-bottom:2px solid #e5e5e7;font-size:.7rem;font-weight:600;color:#666;text-transform:uppercase;letter-spacing:0px}.transactions-table td{padding:.6rem .5rem;border-bottom:1px solid #f5f5f7;font-size:.875rem}.transactions-table tr:hover{background:#f9f9fb}.merchant-cell{font-family:Monaco,Courier New,monospace;font-size:.75rem;color:#666;max-width:120px}.merchant-cell>div:hover{background:#f5f5f7;border-radius:4px}.token-cell{font-weight:600;color:#0166ff}.amount-cell{font-weight:600;color:#1d1d1f}.fee-cell{color:#28a745;font-weight:500}.tx-cell a{color:#0166ff;text-decoration:none}.tx-cell a:hover{text-decoration:underline}.filters select{padding:.5rem 1rem;border:1px solid #e5e5e7;border-radius:6px;font-size:.875rem;background:#fff;cursor:pointer;transition:border-color .2s}.filters select:hover{border-color:#0166ff}.filters select:focus{outline:none;border-color:#0166ff;box-shadow:0 0 0 3px #0166ff1a}.platform-badge,.token-badge,.status-badge{display:inline-block;padding:.2rem .5rem;border-radius:10px;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.platform-woocommerce{background:#f5edff;color:#873dff}.platform-shopify{background:#e8fff5;color:#00a86b}.platform-magento{background:#fff4e6;color:#f97316}.platform-prestashop{background:#ffe8f0;color:#ec4899}.token-icp{background:#f0f0ff;color:#4c1d95}.token-ckbtc{background:#fff7ed;color:#f97316}.token-cketh{background:#eff6ff;color:#3b82f6}.token-ckusdc,.token-ckusdt{background:#ecfdf5;color:#059669}.wallet-badge{display:inline-block;padding:.2rem .5rem;border-radius:10px;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.wallet-oisy{background:#e6f0ff;color:#0166ff}.wallet-plug{background:#ddd6fe;color:#5b21b6}.wallet-stoic{background:#e0e7ff;color:#3730a3}.wallet-nfid{background:#fce7f3;color:#9f1239}.wallet-bitfinity{background:#f0fdf4;color:#15803d}.status-confirmed{background:#dcfce7;color:#15803d}.status-pending{background:#fef3c7;color:#b45309}.status-recorded{background:#e0e7ff;color:#4338ca}.status-refunded{background:#fee2e2;color:#dc2626}.time-cell{color:#666;font-size:.8rem;min-width:60px;white-space:nowrap}.date-cell{color:#666;font-size:.75rem;font-family:Monaco,Courier New,monospace;white-space:nowrap;min-width:95px}.tabs{display:flex;gap:.5rem;margin-bottom:2rem;border-bottom:2px solid #e5e5e7}.tabs-mobile-menu{display:none}.tab{background:none;border:none;padding:1rem 1.5rem;font-size:1rem;font-weight:500;color:#666;cursor:pointer;position:relative;transition:color .2s;border-bottom:3px solid transparent;margin-bottom:-2px}.tab:hover{color:#0166ff}.tab.active{color:#0166ff;border-bottom-color:#0166ff}.refresh-button{background:transparent;color:#999;border:1px solid #e5e5e7;padding:.375rem .75rem;border-radius:6px;font-size:.8125rem;font-weight:400;cursor:pointer;transition:color .2s,border-color .2s;display:flex;align-items:center;gap:.25rem;position:relative;overflow:hidden}.refresh-button:hover:not(:disabled){color:#666;border-color:#ccc}.refresh-button:active:not(:disabled){transform:scale(.98)}.refresh-button:disabled{opacity:.6;cursor:not-allowed}.rotating{display:inline-flex;animation:rotate 1s linear infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.refresh-button-with-progress{transition:color .2s,border-color .2s}.transfer-button{background:transparent;color:#0166ff;border:1px solid #0166FF;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:.25rem}.transfer-button:hover:not(:disabled){background:#0166ff;color:#fff}.transfer-button:active:not(:disabled){transform:scale(.95)}.transfer-button:disabled{opacity:.6;cursor:not-allowed}.actions-cell{text-align:center}.delete-button{background:#f44;color:#fff;border:none;padding:6px 10px;border-radius:4px;font-size:.875rem;cursor:pointer;transition:background .2s;display:inline-flex;align-items:center;justify-content:center}.delete-button:hover:not(:disabled){background:#c00}.delete-button:active:not(:disabled){background:#a00}.delete-button:disabled{background:#f66;cursor:not-allowed;opacity:.7}.retry-button{background:#0166ff;color:#fff;border:none;padding:6px 12px;border-radius:4px;font-size:.8125rem;font-weight:500;cursor:pointer;transition:background .2s;display:inline-flex;align-items:center;justify-content:center;gap:.25rem}.retry-button:hover:not(:disabled){background:#05d}.retry-button:active:not(:disabled){background:#04b}.retry-button:disabled{opacity:.6;cursor:not-allowed}.logs-panel{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 4px #0000001a;margin-top:1.5rem}.logs-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.logs-panel-header h2{margin:0;font-size:1.25rem;font-weight:600}.logs-container{background:#f8f9fa;border-radius:6px;padding:1rem;max-height:600px;overflow-y:auto;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.875rem}.log-entry{padding:.5rem;margin-bottom:.5rem;background:#fff;border-radius:4px;border-left:3px solid #ddd;display:flex;gap:1rem;align-items:flex-start}.log-timestamp{color:#666;font-size:.75rem;white-space:nowrap;min-width:160px}.log-message{flex:1;word-break:break-word}.log-success{border-left-color:#22c55e}.log-error{border-left-color:#ef4444;background:#fef2f2}.log-warning{border-left-color:#f59e0b;background:#fffbeb}.log-info{border-left-color:#3b82f6}.log-default{border-left-color:#9ca3af}.cycles-panel{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 4px #0000001a;margin-top:1.5rem}.cycles-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.cycles-panel-header h2{margin:0;font-size:1.25rem;font-weight:600}@media(max-width:768px){.tabs{display:none!important}.tabs-mobile-menu{display:block!important;width:100%;padding:.75rem;font-size:.9375rem;border:1px solid #ddd;border-radius:8px;background:#fff;margin-bottom:1.5rem;cursor:pointer;font-weight:500;color:#212529;box-shadow:0 1px 3px #0000001a;transition:border-color .2s}.tabs-mobile-menu:hover{border-color:#0166ff}.tabs-mobile-menu:focus{outline:2px solid #0166FF;outline-offset:2px}.stats-grid{gap:1rem!important}.filters{flex-direction:column!important;gap:.5rem!important}.filters select,.filters input{width:100%!important}.header-content{gap:.75rem}.header button{flex-shrink:0;white-space:nowrap}.canister-stats{gap:1rem!important;font-size:.8125rem!important}.canister-id{font-size:.7rem!important}}@media(max-width:600px){.container{padding:.5rem}.header{padding:.75rem .5rem}.header h1{font-size:1.125rem}.header button{padding:.5rem .75rem!important;font-size:.875rem!important}.section{margin-bottom:1.5rem!important}.tabs-mobile-menu{font-size:1rem!important;padding:.875rem!important}.log-entry{flex-direction:column!important;align-items:flex-start!important;padding:.75rem .5rem!important}.log-timestamp{font-size:.75rem!important;margin-bottom:.25rem;width:100%}.log-message{font-size:.875rem!important;word-break:break-word;width:100%}.transactions-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.transactions-table table{min-width:800px}.canister-form-inputs{flex-direction:column!important}.canister-form-inputs input,.canister-form-inputs button{width:100%!important;flex:none!important}.admin-panel-form>div{flex-direction:column!important}.admin-panel-form input,.admin-panel-form button{width:100%!important}.cycles-panel{padding:.5rem}.cycles-panel-header{flex-direction:column!important;align-items:flex-start!important;gap:.75rem}.cycles-panel-header h2{font-size:1.125rem}.cycles-panel-header button{width:100%}.stats-grid{grid-template-columns:1fr!important;gap:.75rem!important;margin-bottom:1.5rem!important}.stat-card{padding:.75rem!important}.stat-card h3{font-size:.875rem!important;margin-bottom:.5rem!important}.stat-card .stat-value{font-size:1.5rem!important}.stat-card .stat-label{font-size:.75rem!important}.charts-grid{grid-template-columns:1fr!important;gap:1rem!important}.price-status{padding:.75rem!important}.status-indicator{font-size:.875rem!important;margin-bottom:.5rem!important}.status-details{flex-direction:column!important;gap:.5rem!important}.status-item{flex-direction:column!important;gap:.125rem!important}.status-item .label{font-size:.75rem!important}.status-item .value{font-size:.875rem!important}.price-grid{grid-template-columns:1fr!important}.canister-row{flex-direction:column!important;align-items:flex-start!important;padding:.75rem .5rem!important}.canister-header{flex-direction:column!important;align-items:flex-start!important;gap:.25rem!important;margin-bottom:.75rem!important}.canister-id{font-size:.7rem!important;word-break:break-all}.canister-stats{gap:.75rem!important;font-size:.8125rem!important}.canister-stats>div{display:flex;flex-direction:column;gap:.125rem}.canister-stats span:first-child{font-size:.75rem!important}.grip-handle{display:none!important}.canister-row button[title="Remove canister"]{margin-top:.5rem}.controllers-toggle{margin-top:.5rem!important;width:100%}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f5f7;color:#1d1d1f}#root{min-height:100vh}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
