271 lines
No EOL
20 KiB
CSS
271 lines
No EOL
20 KiB
CSS
/* Quick nav */
|
|
.quick-nav{padding:var(--space-20) 0;background:var(--bg-primary);position:relative;content-visibility:auto;contain-intrinsic-size:1px 600px;}
|
|
.quick-nav-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-8);}
|
|
.quick-nav-card{
|
|
display:block;padding:var(--space-8);background:var(--bg-elevated);border:2px solid var(--border-primary);border-radius:var(--radius-2xl);
|
|
text-decoration:none;position:relative;overflow:hidden;box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
|
|
transition:background-color var(--transition-normal),border-color var(--transition-normal),transform var(--transition-normal),box-shadow var(--transition-normal),opacity var(--transition-normal);
|
|
content-visibility:auto;contain:content;
|
|
}
|
|
.quick-nav-card::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,var(--primary) 0%,transparent 100%);opacity:0;transition:opacity var(--transition-normal);z-index:0;}
|
|
.quick-nav-card:hover::before{opacity:.08;}
|
|
.quick-nav-card:hover{border-color:var(--primary);transform:translateY(-6px) scale(1.02);box-shadow:var(--shadow-lg);}
|
|
.quick-nav-card:focus-visible{box-shadow:var(--shadow-focus),var(--shadow-lg);}
|
|
.quick-nav-card>*{position:relative;z-index:1;}
|
|
.quick-nav-icon{font-size:var(--text-4xl);margin-bottom:var(--space-4);display:block;filter:drop-shadow(0 2px 4px rgb(0 0 0 / .1));transition:transform var(--transition-normal),filter var(--transition-normal);}
|
|
.quick-nav-card:hover .quick-nav-icon{transform:scale(1.1) rotate(-5deg);}
|
|
.quick-nav-card h3{margin:0 0 var(--space-3);font-size:var(--text-xl);font-weight:var(--font-bold);color:var(--text-primary);}
|
|
.quick-nav-card p{margin:0;color:var(--text-secondary);font-size:var(--text-base);line-height:1.6;}
|
|
.quick-nav-card a:hover{text-decoration:none;}
|
|
|
|
/* Sections */
|
|
.section{padding:var(--space-24) 0;position:relative;content-visibility:auto;contain-intrinsic-size:1px 800px;}
|
|
.section:nth-child(even){background:var(--bg-secondary);}
|
|
.section-header{text-align:center;margin-bottom:var(--space-20);animation:fadeInUp .6s ease-out;}
|
|
.section-title{font-size:clamp(var(--text-3xl),6vw,var(--text-5xl));font-weight:var(--font-extrabold);margin:0 0 var(--space-6);color:var(--text-primary);letter-spacing:-.02em;}
|
|
.section-description{font-size:clamp(var(--text-base),3vw,var(--text-xl));color:var(--text-secondary);margin:0;max-width:700px;margin-inline:auto;line-height:1.7;}
|
|
|
|
/* Tables */
|
|
.data-table-container{
|
|
background:var(--bg-elevated);border-radius:var(--radius-2xl);box-shadow:var(--shadow-lg);
|
|
border:1px solid var(--border-primary);margin:var(--space-8) 0;position:relative;overflow:hidden;
|
|
-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
|
|
}
|
|
.table-wrapper{
|
|
overflow-x:auto;overflow-y:visible;border-radius:var(--radius-2xl);-webkit-overflow-scrolling:touch;
|
|
scrollbar-width:thin;scrollbar-color:var(--primary) var(--bg-secondary);
|
|
}
|
|
.table-wrapper::-webkit-scrollbar{height:10px;}
|
|
.table-wrapper::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:var(--radius-md);}
|
|
.table-wrapper::-webkit-scrollbar-thumb{background:var(--primary);border-radius:var(--radius-md);border:2px solid var(--bg-secondary);}
|
|
.table-wrapper::-webkit-scrollbar-thumb:hover{background:var(--primary-hover);}
|
|
table{width:100%;border-collapse:collapse;font-size:var(--text-sm);min-width:600px;}
|
|
th,td{padding:var(--space-4) var(--space-6);text-align:left;border-bottom:1px solid var(--border-primary);white-space:nowrap;}
|
|
th{
|
|
background:var(--primary);color:#fff;font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.05em;font-size:var(--text-xs);
|
|
position:sticky;top:0;z-index:var(--z-sticky);
|
|
}
|
|
th:first-child{position:sticky;left:0;z-index:calc(var(--z-sticky) + 1);background:var(--primary);background-clip:padding-box;}
|
|
tr:hover{background:var(--bg-secondary);}
|
|
td{transition:background-color var(--transition-fast),color var(--transition-fast);}
|
|
td:first-child{
|
|
font-weight:var(--font-medium);position:sticky;left:0;background:var(--bg-primary);z-index:1;background-clip:padding-box;box-shadow:inset -1px 0 0 var(--border-primary);
|
|
}
|
|
tr:hover td:first-child{background:var(--bg-secondary);}
|
|
.status-cell{text-align:center!important;}
|
|
.status-indicator{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-full);transition:background-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast);}
|
|
.status-indicator.supported{background:rgb(14 236 162 / .1);color:var(--success);}
|
|
.status-indicator.not-supported{background:rgb(211 29 29 / .1);color:var(--error);}
|
|
.status-indicator svg{width:16px;height:16px;}
|
|
|
|
/* Search */
|
|
.search-section{margin-bottom:var(--space-8);}
|
|
.search-container.enhanced{position:relative;max-width:500px;margin:0 auto;}
|
|
.search-icon{position:absolute;left:var(--space-4);top:50%;transform:translateY(-50%);color:var(--text-tertiary);z-index:1;}
|
|
.search-input{
|
|
width:100%;padding:var(--space-4) var(--space-12) var(--space-4) var(--space-12);
|
|
border:2px solid var(--border-primary);border-radius:var(--radius-full);font-size:var(--text-base);
|
|
background:var(--bg-primary);color:var(--text-primary);outline:none;
|
|
transition:border-color var(--transition-fast),box-shadow var(--transition-fast),color var(--transition-fast),background-color var(--transition-fast);
|
|
}
|
|
.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgb(99 102 241 / .1);}
|
|
.clear-icon{
|
|
position:absolute;right:var(--space-4);top:50%;transform:translateY(-50%);background:none;border:none;color:var(--text-tertiary);
|
|
cursor:pointer;padding:var(--space-1);border-radius:var(--radius-md);opacity:0;visibility:hidden;
|
|
transition:opacity var(--transition-fast),color var(--transition-fast),background-color var(--transition-fast),transform var(--transition-fast);
|
|
}
|
|
.search-input:not(:placeholder-shown) + .clear-icon,.search-input:focus + .clear-icon{opacity:1;visibility:visible;}
|
|
.clear-icon:hover{background:var(--bg-secondary);color:var(--text-primary);}
|
|
.search-results{text-align:center;padding:var(--space-2) 0;color:var(--text-secondary);font-size:var(--text-sm);margin-bottom:var(--space-4);}
|
|
|
|
/* Compare controls */
|
|
.compare-controls{display:flex;align-items:end;gap:var(--space-6);margin-bottom:var(--space-12);flex-wrap:wrap;}
|
|
.compare-select-group{flex:1;min-width:200px;}
|
|
.compare-select-group label{display:block;margin-bottom:var(--space-2);font-weight:var(--font-medium);color:var(--text-primary);}
|
|
.select-wrapper{position:relative;}
|
|
.select-wrapper::after{
|
|
content:'';position:absolute;right:var(--space-4);top:50%;transform:translateY(-50%);
|
|
width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--text-tertiary);pointer-events:none;
|
|
}
|
|
select{
|
|
width:100%;padding:var(--space-3) var(--space-8) var(--space-3) var(--space-4);
|
|
border:2px solid var(--border-primary);border-radius:var(--radius-lg);background:var(--bg-primary);color:var(--text-primary);
|
|
font-size:var(--text-base);cursor:pointer;appearance:none;
|
|
transition:border-color var(--transition-fast),box-shadow var(--transition-fast),color var(--transition-fast),background-color var(--transition-fast);
|
|
}
|
|
select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgb(99 102 241 / .1);}
|
|
.compare-vs{flex-shrink:0;font-size:var(--text-lg);font-weight:var(--font-bold);color:var(--primary);background:var(--bg-secondary);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);border:2px solid var(--border-primary);margin-bottom:var(--space-2);}
|
|
|
|
/* Compare table container */
|
|
#compare-table-container{
|
|
position:relative;background:var(--bg-primary);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);border:1px solid var(--border-primary);margin-top:var(--space-6);display:none;
|
|
}
|
|
.comparison-visible{display:block!important;animation:slideIn .3s ease-out;}
|
|
.comparison-hiding{animation:slideOut .3s ease-in;}
|
|
@keyframes slideIn{from{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}
|
|
@keyframes slideOut{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-20px)}}
|
|
.comparison-header{padding:var(--space-6);border-bottom:1px solid var(--border-primary);background:var(--bg-secondary);border-radius:var(--radius-xl) var(--radius-xl) 0 0;}
|
|
.comparison-header h3{margin:0 0 var(--space-4);font-size:var(--text-2xl);font-weight:var(--font-bold);color:var(--text-primary);text-align:center;}
|
|
.comparison-stats{display:flex;gap:var(--space-6);justify-content:center;margin-bottom:var(--space-6);flex-wrap:wrap;}
|
|
.comparison-stats .stat{text-align:center;background:var(--bg-primary);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);border:1px solid var(--border-primary);min-width:100px;}
|
|
.stat-label{display:block;font-size:var(--text-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-1);}
|
|
.stat-value{display:block;font-size:var(--text-xl);font-weight:var(--font-bold);color:var(--primary);}
|
|
.comparison-actions{display:flex;justify-content:center;gap:var(--space-3);}
|
|
.comparison-filters{padding:var(--space-4) var(--space-6);background:var(--bg-tertiary);border-bottom:1px solid var(--border-primary);display:flex;gap:var(--space-6);justify-content:center;flex-wrap:wrap;}
|
|
.filter-option{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-primary);}
|
|
.filter-option input[type="radio"]{margin:0;}
|
|
.filter-results{text-align:center;padding:var(--space-2) 0;color:var(--text-secondary);font-size:var(--text-sm);background:var(--bg-secondary);border-bottom:1px solid var(--border-primary);}
|
|
|
|
/* Comparison table */
|
|
.comparison-table{width:100%;border-collapse:collapse;font-size:var(--text-sm);min-width:700px;}
|
|
.comparison-table th,.comparison-table td{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--border-primary);text-align:center;}
|
|
.comparison-table th:first-child,.comparison-table td:first-child{text-align:left;font-weight:var(--font-medium);}
|
|
.comparison-table th{background:var(--primary);color:#fff;font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.05em;font-size:var(--text-xs);position:sticky;top:0;z-index:var(--z-sticky);}
|
|
.provider-header{position:relative;}
|
|
.comparison-row.both-supported{background:rgb(16 185 129 / .05);}
|
|
.comparison-row.provider1-only{background:rgb(59 130 246 / .05);}
|
|
.comparison-row.provider2-only{background:rgb(168 85 247 / .05);}
|
|
.comparison-row.neither-supported{background:rgb(239 68 68 / .05);}
|
|
.status-badge{display:inline-block;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-medium);text-transform:uppercase;letter-spacing:.05em;}
|
|
.status-badge.both-supported{background:rgb(16 185 129 / .1);color:var(--success);}
|
|
.status-badge.provider1-only{background:rgb(59 130 246 / .1);color:var(--info);}
|
|
.status-badge.provider2-only{background:rgb(168 85 247 / .1);color:#8b5cf6;}
|
|
.status-badge.neither-supported{background:rgb(239 68 68 / .1);color:var(--error);}
|
|
|
|
#close-compare{
|
|
background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:var(--space-2) var(--space-4);
|
|
display:flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--text-sm);color:var(--text-primary);font-weight:var(--font-medium);
|
|
transition:color var(--transition-fast),background-color var(--transition-fast),border-color var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast);
|
|
}
|
|
#close-compare:hover{background:var(--error);color:#fff;border-color:var(--error);transform:translateY(-1px);}
|
|
|
|
/* Empty + warning + alerts */
|
|
.empty-state{text-align:center;padding:var(--space-16);}
|
|
.empty-state-icon{font-size:var(--text-5xl);margin-bottom:var(--space-4);}
|
|
.empty-state h3{margin:0 0 var(--space-2);font-size:var(--text-xl);color:var(--text-primary);}
|
|
.empty-state p{margin:0;color:var(--text-secondary);}
|
|
.warning-state{text-align:center;padding:var(--space-12);background:rgb(245 158 11 / .05);border-radius:var(--radius-lg);border:1px solid rgb(245 158 11 / .2);}
|
|
.warning-icon{font-size:var(--text-4xl);margin-bottom:var(--space-3);}
|
|
.warning-state h3{margin:0 0 var(--space-2);color:var(--warning);}
|
|
.warning-state p{margin:0;color:var(--text-secondary);}
|
|
.alert{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-lg);margin:var(--space-4) 0;}
|
|
.alert-info{background:rgb(59 130 246 / .1);border:1px solid rgb(59 130 246 / .2);color:var(--info);}
|
|
.alert-icon{flex-shrink:0;margin-top:2px;}
|
|
|
|
/* Referral */
|
|
.referral-section{margin-block:var(--space-16);padding:var(--space-8);background:var(--bg-secondary);border-radius:var(--radius-xl);border:1px solid var(--border-primary);text-align:center;content-visibility:auto;contain-intrinsic-size:1px 400px;}
|
|
.referral-header h3{margin:0 0 var(--space-2);color:var(--text-primary);font-size:var(--text-2xl);font-weight:var(--font-bold);}
|
|
.referral-header p{margin:0 auto var(--space-6);color:var(--text-secondary);max-width:var(--content-max-width);}
|
|
.referral-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-4);justify-items:center;}
|
|
.referral-card{
|
|
display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);
|
|
padding:var(--space-4) var(--space-3);background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);
|
|
text-decoration:none;width:100%;max-width:200px;box-shadow:var(--shadow-sm);
|
|
transition:background-color var(--transition-normal),border-color var(--transition-normal),transform var(--transition-normal),box-shadow var(--transition-normal),color var(--transition-normal);
|
|
}
|
|
.referral-card:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:var(--shadow-md);}
|
|
.service-name{font-weight:var(--font-semibold);color:var(--text-primary);font-size:var(--text-base);}
|
|
.referral-badge{font-size:var(--text-xs);color:var(--primary);background:rgb(99 102 241 / .1);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);font-weight:var(--font-medium);}
|
|
|
|
/* Status cards */
|
|
.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-6);}
|
|
.status-card{
|
|
display:block;padding:var(--space-6);background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:var(--radius-xl);text-decoration:none;
|
|
transition:background-color var(--transition-normal),border-color var(--transition-normal),transform var(--transition-normal),box-shadow var(--transition-normal);
|
|
content-visibility:auto;contain:content;
|
|
}
|
|
.status-card:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:var(--shadow-lg);}
|
|
.status-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3);}
|
|
.service-status-indicator{width:12px;height:12px;border-radius:var(--radius-full);background:var(--success);box-shadow:0 0 0 2px rgb(16 185 129 / .2);}
|
|
.status-card .status-indicator.online,
|
|
.service-status-indicator.online{background:var(--success);box-shadow:0 0 0 2px rgb(16 185 129 / .2);}
|
|
.status-card p{margin:0;color:var(--text-secondary);font-size:var(--text-sm);}
|
|
|
|
/* Loading */
|
|
.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12);color:var(--text-secondary);}
|
|
.loading-spinner{width:32px;height:32px;border:3px solid var(--border-primary);border-top:3px solid var(--primary);border-radius:var(--radius-full);animation:spin 1s linear infinite;margin-bottom:var(--space-4);}
|
|
@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}
|
|
.loading-overlay{
|
|
position:absolute;inset:0;background:rgb(255 255 255 / .9);
|
|
-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
|
|
display:flex;align-items:center;justify-content:center;z-index:1050;opacity:0;visibility:hidden;
|
|
transition:opacity var(--transition-normal);
|
|
}
|
|
[data-theme="dark"] .loading-overlay{background:rgb(15 23 42 / .9);}
|
|
.loading-overlay--visible{opacity:1;visibility:visible;}
|
|
.loading-overlay--hiding{opacity:0;}
|
|
.loading-content{text-align:center;color:var(--text-primary);}
|
|
.spinner-ring{width:40px;height:40px;border:4px solid var(--border-primary);border-top:4px solid var(--primary);border-radius:var(--radius-full);animation:spin 1s linear infinite;margin:0 auto var(--space-3);}
|
|
.loading-text{margin:0;font-size:var(--text-sm);color:var(--text-secondary);}
|
|
|
|
/* Footer */
|
|
.site-footer{background:var(--bg-secondary);border-top:1px solid var(--border-primary);padding:var(--space-16) 0 var(--space-8);margin-top:auto;content-visibility:auto;contain-intrinsic-size:1px 500px;}
|
|
.footer-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--space-8);margin-bottom:var(--space-8);}
|
|
.footer-section h4{margin:0 0 var(--space-4);font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--text-primary);}
|
|
.footer-section p{margin:0;color:var(--text-secondary);}
|
|
.footer-section ul{list-style:none;padding:0;margin:0;}
|
|
.footer-section li{margin-bottom:var(--space-2);}
|
|
.footer-section a{color:var(--text-secondary);text-decoration:none;transition:color var(--transition-fast);}
|
|
.footer-section a:hover{color:var(--primary);}
|
|
.footer-bottom{text-align:center;padding-top:var(--space-8);border-top:1px solid var(--border-primary);}
|
|
.footer-bottom p{margin:0;color:var(--text-tertiary);font-size:var(--text-sm);}
|
|
.footer-bottom a{color:var(--primary);text-decoration:none;}
|
|
|
|
/* Back to top */
|
|
.back-to-top{
|
|
position:fixed;bottom:var(--space-6);right:var(--space-6);width:48px;height:48px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-full);
|
|
cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);
|
|
transition:background-color var(--transition-normal),transform var(--transition-normal),box-shadow var(--transition-normal),opacity var(--transition-normal),visibility 0s linear .2s;
|
|
opacity:0;visibility:hidden;transform:translateY(20px);z-index:var(--z-docked);
|
|
}
|
|
.back-to-top.visible{opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s;}
|
|
.back-to-top:hover{background:var(--primary-hover);transform:translateY(-2px);box-shadow:var(--shadow-lg);}
|
|
|
|
/* Misc */
|
|
input,select,textarea,button{accent-color:var(--primary);}
|
|
|
|
/* Responsive (deferred parts) */
|
|
@media (width <= 768px){
|
|
.quick-nav-grid{grid-template-columns:1fr}
|
|
.footer-content{grid-template-columns:1fr;text-align:center}
|
|
.data-table-container{margin:var(--space-2) calc(-1 * var(--space-4));border-radius:0;border-left:none;border-right:none}
|
|
.table-wrapper{border-radius:0}
|
|
table{font-size:var(--text-xs);min-width:500px}
|
|
th,td{padding:var(--space-2) var(--space-3)}
|
|
th:first-child,td:first-child{min-width:120px;max-width:150px;white-space:normal;word-break:break-word}
|
|
.comparison-header{padding:var(--space-4)}
|
|
.comparison-header h3{font-size:var(--text-lg)}
|
|
.comparison-stats{flex-direction:column;gap:var(--space-3)}
|
|
.comparison-stats .stat{margin:0 auto;max-width:200px}
|
|
.comparison-filters{flex-direction:column;align-items:center;gap:var(--space-3)}
|
|
.comparison-table{min-width:500px}
|
|
.comparison-table th,.comparison-table td{padding:var(--space-2) var(--space-3);font-size:var(--text-xs)}
|
|
}
|
|
@media (width <= 640px){
|
|
.btn{width:100%;max-width:280px;padding:var(--space-4) var(--space-6)}
|
|
}
|
|
@media (width <= 480px){
|
|
.section{padding:var(--space-12) 0}
|
|
.comparison-stats{gap:var(--space-2)}
|
|
.comparison-stats .stat{min-width:60px;padding:var(--space-1) var(--space-2)}
|
|
.stat-value{font-size:var(--text-lg)}
|
|
.stat-label{font-size:10px}
|
|
table{min-width:400px}
|
|
th:first-child,td:first-child{min-width:100px;max-width:120px}
|
|
.stat-item:not(:last-child)::after{display:none}
|
|
}
|
|
|
|
/* Coarse pointer */
|
|
@media (pointer: coarse){
|
|
.nav-link:hover,.btn:hover,.quick-nav-card:hover,.status-card:hover{transform:none;box-shadow:none}
|
|
}
|
|
|
|
/* Print */
|
|
@media print{
|
|
.site-header,.hero-section,.quick-nav,.referral-section,.site-footer,.back-to-top,.dark-mode-toggle,.comparison-filters,.comparison-actions,#close-compare{display:none!important}
|
|
.section{page-break-inside:avoid}
|
|
.data-table-container{box-shadow:none;border:1px solid #000}
|
|
.table-wrapper{overflow:visible}
|
|
table{min-width:auto}
|
|
th,td{border:1px solid #000}
|
|
} |