.student-profile-layout{grid-template-columns:minmax(0,1.3fr) minmax(300px,1fr)}
.card-editor{margin-top:22px;padding:18px;border:1px solid var(--line);border-radius:14px}.card-editor h3{font-size:17px}.card-editor>p{font-size:13px}.card-editor .form-grid{grid-template-columns:1fr 1fr}.card-editor label{min-width:0}.card-editor input[type=file]{width:100%;min-width:0}.card-editor .card-logo-remove{grid-column:1/-1;display:flex;align-items:center;gap:8px}.card-editor .card-logo-remove input{width:18px;height:18px;min-height:0;accent-color:var(--blue)}.card-editor .form-note{margin:14px 0 0}.card-editor .form-actions .btn{white-space:normal}
.card-designer{min-width:0}.card-designer h2{margin-top:14px}.card-controls{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:22px 0}.card-controls label{display:grid;gap:8px;font-weight:700;font-size:14px}.card-controls select{width:100%;min-width:0;border:1px solid var(--line);border-radius:10px;padding:12px;color:var(--ink);background:var(--bg)}
.card-preview{min-height:230px;display:flex;align-items:center;justify-content:center;padding:24px;border-radius:18px;background:radial-gradient(circle at 20% 20%,#bddbd94d,transparent 55%),linear-gradient(130deg,#e8eef8,#e2e3f2);overflow:hidden}
.card-preview canvas{display:block;width:100%;height:auto;border-radius:12px;box-shadow:0 16px 35px #162c5c30;max-width:560px}.card-preview canvas[data-orientation=portrait]{width:min(100%,300px)}
.card-dimensions{text-align:center;font-size:13px;margin:14px 0;direction:rtl}.card-downloads{display:flex;flex-wrap:wrap;gap:10px}.card-downloads .btn{flex:1}.card-designer [data-card-status]{margin:14px 0 0;min-height:25px}
.card-scanner{grid-column:1/-1;min-width:0;padding:14px;border:1px dashed var(--line);border-radius:12px}.scanner-actions{display:flex;gap:8px;flex-wrap:wrap}.card-scanner .scanner-image{display:grid;gap:6px;margin-top:14px}.card-scanner input[type=file]{width:100%;min-width:0}.card-scanner video{display:block;width:100%;max-height:320px;object-fit:contain;background:#17243b;border-radius:12px;margin-top:14px}.card-scanner [hidden]{display:none!important}.card-scanner [data-scan-status]{margin:12px 0 0;white-space:normal;overflow-wrap:anywhere}
html[data-theme=dark] .card-preview{background:radial-gradient(circle at 20% 20%,#174943,transparent 65%),linear-gradient(130deg,#1e293f,#30324e)}
@media(max-width:1100px){.student-profile-layout{grid-template-columns:1fr}.card-designer{width:100%}}
@media(max-width:560px){.card-controls,.card-editor .form-grid{grid-template-columns:1fr}.card-editor{padding:12px}.card-preview{padding:15px}.card-downloads{flex-direction:column}.card-scanner .btn{white-space:normal}}

/* Fast continuous QR attendance */
.card-scanner-fast{position:relative;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}
.card-scanner-fast .scan-fast-counter{display:inline-flex;align-items:center;min-height:38px;padding:0 12px;border-radius:999px;background:var(--soft,#eef3fb);font-weight:800;font-size:.88rem}
.card-scanner-fast.scan-fast-busy{opacity:.9}
.card-scanner-fast.scan-fast-ok{animation:qonScanAccepted .58s ease}
.card-scanner-fast.scan-fast-error{animation:qonScanRejected .45s ease}
@keyframes qonScanAccepted{0%{box-shadow:0 0 0 0 rgba(28,170,103,.35);transform:scale(1)}45%{box-shadow:0 0 0 8px rgba(28,170,103,.08);transform:scale(1.006)}100%{box-shadow:0 0 0 0 rgba(28,170,103,0);transform:scale(1)}}
@keyframes qonScanRejected{0%,100%{transform:translateX(0)}30%{transform:translateX(4px)}60%{transform:translateX(-4px)}}
@media(prefers-reduced-motion:reduce){.card-scanner-fast.scan-fast-ok,.card-scanner-fast.scan-fast-error{animation:none}}

/* Fast QR: clear visual confirmation + short recent log */
.card-scanner-fast .scan-fast-feedback{display:flex;align-items:center;gap:14px;margin-top:14px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--bg);box-shadow:0 8px 24px rgba(15,23,42,.06);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease,background .2s ease}
.card-scanner-fast .scan-fast-feedback-icon{display:grid;place-items:center;flex:0 0 46px;width:46px;height:46px;border-radius:50%;font-weight:900;font-size:1.2rem;background:var(--soft,#eef3fb)}
.card-scanner-fast .scan-fast-feedback-copy{display:grid;gap:4px;min-width:0}
.card-scanner-fast .scan-fast-feedback-copy strong{font-size:1.18rem;line-height:1.35;overflow-wrap:anywhere}
.card-scanner-fast .scan-fast-feedback-copy span{font-size:.9rem;opacity:.82;overflow-wrap:anywhere}
.card-scanner-fast .scan-fast-feedback-ok{border-color:rgba(22,163,74,.42);background:linear-gradient(135deg,rgba(22,163,74,.12),rgba(22,163,74,.04));transform:scale(1.01);box-shadow:0 10px 28px rgba(22,163,74,.13)}
.card-scanner-fast .scan-fast-feedback-ok .scan-fast-feedback-icon{background:#16a34a;color:#fff}
.card-scanner-fast .scan-fast-feedback-error{border-color:rgba(220,38,38,.42);background:linear-gradient(135deg,rgba(220,38,38,.11),rgba(220,38,38,.035));box-shadow:0 10px 28px rgba(220,38,38,.1)}
.card-scanner-fast .scan-fast-feedback-error .scan-fast-feedback-icon{background:#dc2626;color:#fff}
.card-scanner-fast .scan-fast-feedback-busy{border-color:rgba(37,99,235,.28);background:rgba(37,99,235,.06)}
.card-scanner-fast .scan-fast-feedback-busy .scan-fast-feedback-icon{background:#2563eb;color:#fff;animation:qonFastQrPulse .8s ease-in-out infinite alternate}
.card-scanner-fast .scan-fast-feedback-settled{transform:none;box-shadow:0 5px 16px rgba(15,23,42,.05)}
.card-scanner-fast .scan-fast-history{display:grid;gap:8px;margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--soft,#f8fafc)}
.card-scanner-fast .scan-fast-history>strong{font-size:.92rem}
.card-scanner-fast .scan-fast-history-list{display:grid;gap:6px}
.card-scanner-fast .scan-fast-history-empty{font-size:.85rem;opacity:.65}
.card-scanner-fast .scan-fast-history-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;background:var(--bg)}
.card-scanner-fast .scan-fast-history-row b{font-size:.8rem;padding:4px 8px;border-radius:999px;background:rgba(22,163,74,.12);color:#15803d;white-space:nowrap}
.card-scanner-fast .scan-fast-history-row span{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card-scanner-fast .scan-fast-history-row small{opacity:.65;white-space:nowrap}
@keyframes qonFastQrPulse{from{transform:scale(.93);opacity:.8}to{transform:scale(1.05);opacity:1}}
@media(max-width:560px){.card-scanner-fast .scan-fast-feedback{padding:12px}.card-scanner-fast .scan-fast-feedback-copy strong{font-size:1.05rem}.card-scanner-fast .scan-fast-history-row{grid-template-columns:auto minmax(0,1fr)}.card-scanner-fast .scan-fast-history-row small{grid-column:2}}
@media(prefers-reduced-motion:reduce){.card-scanner-fast .scan-fast-feedback,.card-scanner-fast .scan-fast-feedback-busy .scan-fast-feedback-icon{transition:none;animation:none}}


/* Dark mode explicit colors for QR fast widgets */
html[data-theme=dark] .card-scanner-fast .scan-fast-feedback-copy strong{color:#e5ecfa}
html[data-theme=dark] .card-scanner-fast .scan-fast-feedback-copy span{color:#acbad1;opacity:1}
html[data-theme=dark] .card-scanner-fast .scan-fast-history>strong{color:#e5ecfa}
html[data-theme=dark] .card-scanner-fast .scan-fast-history-row span{color:#e5ecfa}
html[data-theme=dark] .card-scanner-fast .scan-fast-history-row small{color:#acbad1;opacity:1}
html[data-theme=dark] .card-scanner-fast .scan-fast-history-empty{color:#acbad1;opacity:1}

.card-scanner-fast .scan-fast-feedback-warning{border-color:#f59e0b;background:#fffbeb;box-shadow:0 0 0 3px #f59e0b22}.card-scanner-fast .scan-fast-feedback-warning .scan-fast-feedback-icon{background:#f59e0b;color:#fff}.card-scanner-fast .scan-fast-feedback-warning .scan-fast-feedback-copy strong{color:#92400e}.card-scanner-fast .scan-fast-feedback-warning .scan-fast-feedback-copy span{color:#78350f;opacity:1}

html[data-theme=dark] .card-scanner-fast .scan-fast-feedback-warning .scan-fast-feedback-copy strong{color:#92400e}html[data-theme=dark] .card-scanner-fast .scan-fast-feedback-warning .scan-fast-feedback-copy span{color:#78350f}
