/* UpyogiTools v90 — Exam Photo Kit, Batch Studio and installable PWA UI */
.pwa-install-btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 12px;border:1px solid #9dd7c7;border-radius:11px;background:linear-gradient(135deg,#ecfdf5,#eff6ff);color:#0759d9;font:inherit;font-size:13px;font-weight:850;cursor:pointer;white-space:nowrap}
.pwa-install-btn:hover{border-color:#0a9f6e;background:#e3f8f1}.pwa-install-btn[hidden]{display:none!important}
.offline-banner{position:sticky;top:0;z-index:1300;padding:8px 14px;background:#fff4d6;border-bottom:1px solid #f0c75e;color:#6c4a00;text-align:center;font-size:13px;font-weight:800}.offline-banner[hidden]{display:none}
.tool-badge{display:inline-flex;margin-bottom:12px;padding:6px 10px;border:1px solid #badfd5;border-radius:999px;background:#ecfdf5;color:#08765a;font-size:11px;font-weight:900;letter-spacing:.45px}
.guide-warning.compact{margin:8px 0 16px;padding:11px 12px;font-size:12px;line-height:1.5}
.file-note{min-height:20px;margin:7px 0 12px;color:#526b7d;font-size:12px;line-height:1.45}
.dimension-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.dimension-grid .field{min-width:0}.dimension-grid input{width:100%}
.privacy-inline{margin:0 0 12px;padding:11px 13px;border:1px solid #bfe4d7;border-radius:12px;background:linear-gradient(90deg,#ecfdf5,#eff6ff);color:#08765a;font-size:12px;font-weight:800;line-height:1.5}
.result-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:260px}
.result-grid>.empty{grid-column:1/-1;display:grid;place-items:center;min-height:260px;padding:30px;border:1px dashed #bad5ce;border-radius:16px;background:#f8fcfb;color:#64748b;text-align:center}
.processed-card{overflow:hidden;border:1px solid #d9e7e3;border-radius:16px;background:#fff;box-shadow:0 8px 20px rgba(15,48,65,.08)}
.processed-card>img{display:block;width:100%;height:250px;object-fit:contain;background:repeating-conic-gradient(#f0f3f5 0 25%,#fff 0 50%) 50%/18px 18px}
.processed-card>div{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:13px}.processed-card strong{color:#09233d}.processed-card span{color:#526b7d;font-size:12px}.processed-card .btn{width:auto;min-height:38px;margin-top:3px}
.validation-box{margin-top:14px;padding:13px;border:1px solid #d9e7e3;border-radius:12px;background:#f8fbff;color:#526b7d;font-size:13px;line-height:1.55}.validation-box.ok{border-color:#91d6bc;background:#ecfdf5;color:#08765a}.validation-box.warn{border-color:#f2ca70;background:#fff8e5;color:#765100}
.batch-progress{height:10px;margin:0 0 14px;overflow:hidden;border-radius:999px;background:#e8efed}.batch-progress span{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#0759d9,#0a9f6e);transition:width .25s ease}
.batch-results{display:flex;flex-direction:column;gap:10px;min-height:300px}.batch-results>.empty{display:grid;place-items:center;min-height:300px;padding:25px;border:1px dashed #bad5ce;border-radius:16px;background:#f8fcfb;color:#64748b;text-align:center}
.batch-file-list{display:flex;flex-wrap:wrap;gap:7px}.batch-file-list span{max-width:100%;padding:7px 10px;border:1px solid #d9e7e3;border-radius:999px;background:#fff;color:#526b7d;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.batch-result-row{display:grid;grid-template-columns:76px minmax(0,1fr);align-items:center;gap:12px;padding:10px;border:1px solid #d9e7e3;border-radius:14px;background:#fff}.batch-result-row img{width:76px;height:64px;object-fit:contain;border-radius:9px;background:#f2f6f5}.batch-result-row div{min-width:0}.batch-result-row strong,.batch-result-row span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.batch-result-row strong{color:#09233d;font-size:13px}.batch-result-row span{margin-top:4px;color:#526b7d;font-size:11.5px}
@media(max-width:1380px){.topnav-menu .pwa-install-btn{width:100%;min-height:44px}}
@media(max-width:760px){.dimension-grid{grid-template-columns:1fr 1fr}.dimension-grid .field:last-child{grid-column:1/-1}.result-grid{grid-template-columns:1fr}.processed-card>img{height:220px}}
@media(max-width:420px){.dimension-grid{grid-template-columns:1fr}.dimension-grid .field:last-child{grid-column:auto}.batch-result-row{grid-template-columns:58px minmax(0,1fr)}.batch-result-row img{width:58px;height:54px}}
