Spaces:
Sleeping
Sleeping
File size: 9,095 Bytes
70520f0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | .page { min-height: 100%; display: flex; flex-direction: column; }
/* ββ Nav ββ */
.nav {
display: flex; align-items: center; gap: 14px;
padding: 16px 28px; border-bottom: 1px solid var(--line);
background: rgba(17, 20, 27, 0.7); backdrop-filter: blur(8px);
position: sticky; top: 0; z-index: 10;
}
.brand { font-size: 18px; font-weight: 700; color: var(--head); letter-spacing: -0.2px; }
.brand-mark { margin-right: 4px; }
.brand-sub { font-size: 13px; color: var(--dim); }
.nav-badge {
margin-left: auto; font-size: 11px; font-weight: 600; color: var(--brand);
background: var(--brand-soft); border: 1px solid rgba(99,102,241,.3);
padding: 4px 10px; border-radius: 99px;
}
/* ββ Layout ββ */
.wrap { flex: 1; width: 100%; max-width: 980px; margin: 0 auto; padding: 56px 24px; }
.foot { text-align: center; padding: 26px 24px; border-top: 1px solid var(--line);
display: flex; flex-direction: column; align-items: center; gap: 7px; }
.foot-dev { font-size: 14px; color: var(--text); }
.foot-name { color: var(--head); font-weight: 700; }
.foot-links { display: flex; flex-wrap: wrap; gap: 18px; justify-content: center; }
.foot-link { color: var(--brand); text-decoration: none; font-weight: 600; font-size: 13px; }
.foot-link:hover { text-decoration: underline; }
.foot-meta { font-size: 11.5px; color: var(--dim); margin-top: 2px; }
.fade { animation: fade .45s ease both; }
@keyframes fade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
/* ββ Intro ββ */
.intro { text-align: center; display: flex; flex-direction: column; align-items: center; }
.pill {
font-size: 12px; font-weight: 600; letter-spacing: .4px; text-transform: uppercase;
color: var(--brand); background: var(--brand-soft); border: 1px solid rgba(99,102,241,.25);
padding: 5px 14px; border-radius: 99px; margin-bottom: 18px;
}
.intro h1 {
font-size: 42px; font-weight: 800; margin: 0 0 12px; letter-spacing: -1.2px;
background: linear-gradient(180deg, #fff, #aab); -webkit-background-clip: text;
background-clip: text; color: transparent;
}
.intro p { max-width: 540px; color: var(--dim); margin: 0 0 30px; }
.trust-row {
display: flex; flex-wrap: wrap; gap: 10px 18px; justify-content: center;
margin-top: 26px; font-size: 12.5px; color: var(--dim);
}
.trust-row span { white-space: nowrap; }
/* ββ Dropzone ββ */
.drop {
width: 100%; max-width: 520px; padding: 48px 24px; cursor: pointer;
background: linear-gradient(180deg, var(--card), var(--bg-soft));
border: 1.5px dashed var(--line); border-radius: 18px;
display: flex; flex-direction: column; align-items: center; gap: 6px;
transition: border-color .18s, background .18s, transform .18s, box-shadow .18s;
}
.drop:hover, .drop.drag {
border-color: var(--brand); background: var(--brand-soft);
transform: translateY(-2px); box-shadow: 0 12px 40px -12px rgba(99,102,241,.5);
}
.drop-icon {
width: 50px; height: 50px; display: grid; place-items: center; border-radius: 14px;
background: var(--brand-soft); color: var(--brand); font-size: 22px; margin-bottom: 10px;
}
.drop-title { font-size: 16px; font-weight: 600; color: var(--head); }
.drop-sub { font-size: 13px; color: var(--dim); }
.drop-cta {
margin-top: 14px; font-size: 13px; font-weight: 600; color: #fff;
background: var(--brand); padding: 8px 20px; border-radius: 9px;
}
/* ββ Status ββ */
.status { display: flex; flex-direction: column; align-items: center; gap: 12px; padding-top: 56px; text-align: center; }
.status-main { font-size: 17px; color: var(--head); margin: 6px 0 0; }
.status-sub { font-size: 14px; color: var(--dim); margin: 0; }
.status-bad { font-size: 40px; }
.ring { width: 46px; height: 46px; border: 3px solid var(--line); border-top-color: var(--brand);
border-radius: 50%; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
/* ββ Buttons ββ */
.btn { padding: 9px 18px; border: none; border-radius: 9px; cursor: pointer;
background: var(--brand); color: #fff; font-size: 14px; font-weight: 600; transition: opacity .15s, transform .1s; }
.btn:hover { opacity: .9; }
.btn:active { transform: scale(.97); }
.btn.ghost { background: transparent; border: 1px solid var(--line); color: var(--text); }
.btn.ghost:hover { border-color: var(--brand); color: #fff; opacity: 1; }
/* ββ Verdict banner ββ */
.verdict {
display: flex; align-items: center; gap: 20px; padding: 22px 24px;
border-radius: 16px; margin-bottom: 22px; border: 1px solid var(--line);
background: var(--card); box-shadow: 0 8px 30px -16px rgba(0,0,0,.6);
}
.verdict.good { border-color: rgba(34,197,94,.4); background: linear-gradient(100deg, rgba(34,197,94,.12), var(--card) 55%); }
.verdict.bad { border-color: rgba(239,68,68,.45); background: linear-gradient(100deg, rgba(239,68,68,.14), var(--card) 55%); }
.verdict.warn { border-color: rgba(245,158,11,.45);background: linear-gradient(100deg, rgba(245,158,11,.14), var(--card) 55%); }
/* circular gauge */
.gauge { position: relative; width: 84px; height: 84px; flex: none; }
.gauge-bg { fill: none; stroke: var(--bg-soft); stroke-width: 8; }
.gauge-fg { fill: none; stroke-width: 8; stroke-linecap: round; transition: stroke-dasharray .7s ease; }
.gauge-fg.good { stroke: var(--good); }
.gauge-fg.bad { stroke: var(--bad); }
.gauge-fg.warn { stroke: var(--warn); }
.gauge-label { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.gauge-num { font-size: 22px; font-weight: 800; color: var(--head); line-height: 1; }
.gauge-num small { font-size: 11px; font-weight: 600; }
.gauge-cap { font-size: 9px; text-transform: uppercase; letter-spacing: .5px; color: var(--dim); margin-top: 2px; }
.verdict-text { flex: 1; }
.verdict-row { display: flex; align-items: center; gap: 10px; }
.verdict-badge {
width: 26px; height: 26px; border-radius: 8px; display: grid; place-items: center;
font-size: 15px; font-weight: 800; color: #fff;
}
.verdict.good .verdict-badge { background: var(--good); }
.verdict.bad .verdict-badge { background: var(--bad); }
.verdict.warn .verdict-badge { background: var(--warn); }
.verdict-label { font-size: 23px; font-weight: 800; color: var(--head); letter-spacing: .3px; }
.verdict-note { font-size: 14px; color: var(--dim); margin-top: 4px; }
/* ββ Grid ββ */
.grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 760px) { .grid { grid-template-columns: 1fr; } }
/* ββ Card ββ */
.card {
background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 20px;
transition: border-color .2s, transform .2s;
}
.card:hover { border-color: #33384a; }
.card-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.card-head h2 { font-size: 14px; font-weight: 600; color: var(--head); margin: 0; }
.hint { font-size: 12px; color: var(--dim); text-align: center; margin: 12px 0 0; }
/* ββ Toggle ββ */
.toggle { display: flex; gap: 4px; background: var(--bg-soft); padding: 3px; border-radius: 9px; }
.toggle button { border: none; background: transparent; color: var(--dim); font-size: 12px; font-weight: 600;
padding: 5px 13px; border-radius: 7px; cursor: pointer; transition: background .15s, color .15s; }
.toggle button.on { background: var(--card-2); color: #fff; box-shadow: 0 1px 4px rgba(0,0,0,.3); }
/* ββ Image frame ββ */
.frame { position: relative; border-radius: 12px; overflow: hidden; background: var(--bg-soft);
min-height: 220px; display: grid; place-items: center; border: 1px solid var(--line); }
.frame-base { width: 100%; display: block; }
.frame-heat { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
mix-blend-mode: screen; opacity: .8; animation: fade .4s ease; }
/* ββ Bars ββ */
.bars { display: flex; flex-direction: column; gap: 12px; }
.bar { display: flex; align-items: center; gap: 10px; }
.bar-ico { width: 18px; text-align: center; font-size: 14px; }
.bar-name { width: 96px; font-size: 13px; color: var(--text); text-transform: capitalize; }
.bar-track { flex: 1; height: 8px; border-radius: 99px; background: var(--bg-soft); overflow: hidden; }
.bar-fill { height: 100%; border-radius: 99px; transition: width .7s cubic-bezier(.3,.8,.3,1); }
.bar-fill.good { background: linear-gradient(90deg, #16a34a, var(--good)); }
.bar-fill.warn { background: linear-gradient(90deg, #d97706, var(--warn)); }
.bar-fill.bad { background: linear-gradient(90deg, #dc2626, var(--bad)); }
.bar-pct { width: 38px; text-align: right; font-size: 12px; color: var(--dim); font-variant-numeric: tabular-nums; }
/* ββ Evidence ββ */
.evidence { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--line); }
.evidence h3 { font-size: 13px; font-weight: 600; color: var(--head); margin: 0 0 8px; }
.evidence ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 6px; }
.evidence li { font-size: 13px; color: var(--dim); }
|