:root{--bg: #f2f4f7;--surface: #ffffff;--text: #1a2040;--muted: #5d6790;--primary: #1150c7;--secondary: #6a3df0;--gold: #ca9700;--success: #117a37;--danger: #b3261e;--border: #c9cfdb;--utfpr-orange: #ff6b35;--utfpr-yellow: #ffc947}*{box-sizing:border-box}body{margin:0;min-height:100vh;display:flex;flex-direction:column;font-family:Inter,sans-serif;color:var(--text);background:var(--bg)}.bg-decor{display:none}h1,h2,h3{margin:0 0 10px}.topbar{width:100%;padding:10px 0;display:flex;justify-content:center;background:linear-gradient(180deg,rgba(230,234,240,.95),rgba(210,218,226,.85),rgba(190,198,208,.95));backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:2px solid rgba(140,150,170,.9);box-shadow:0 10px 25px rgba(0,0,0,.1),inset 0 2px 8px #fff,inset 0 -4px 6px rgba(0,0,0,.08);position:relative;overflow:hidden}.topbar-content{max-width:1180px;width:100%;margin:0 auto;padding:0 16px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;position:relative;z-index:1}.topbar-left{display:none;align-items:center}.topbar-content #btn-home{justify-self:end}.brand-wrap{text-align:center;justify-self:center;grid-column:2}.brand-logo{width:150px;height:65px;object-fit:contain}.campus-info{display:flex;flex-direction:column;align-items:center;gap:4px}#campus-info-header{justify-self:end;grid-column:3}.campus-info-nome{font-size:1.1rem;font-weight:700;color:var(--text)}.campus-info-btn{font-size:.75rem;padding:4px 10px;border-radius:6px;background:rgba(255,255,255,.6);border:1px solid var(--border);color:var(--muted);cursor:pointer;transition:.2s;box-shadow:0 1px 2px rgba(0,0,0,.03)}.campus-info-btn:hover{border-color:var(--primary);color:var(--primary);background:#fff}#app-title{margin-bottom:0}.brand-title{max-width:min(560px,82vw);width:auto;max-height:110px;height:auto;object-fit:contain;display:block;margin:2px auto 10px;filter:drop-shadow(0px 2px 5px rgba(0,0,0,.1))}.app-shell{flex:1;max-width:1180px;width:100%;margin:0 auto;padding:10px 16px 24px}.view{display:none}.view.active{display:block}.grid{display:grid;gap:12px}.cards{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.modules{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.two-cols{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.panel,.card,.list-box,.result-box,#scanner-dialog,.modulo-switcher{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:0 6px 18px rgba(28,58,138,.06)}.panel{padding:18px;margin-bottom:16px}.colorful-panel{border-color:#cad4e8;background:#fff}.card{padding:20px 18px;text-align:center;cursor:pointer;transition:.3s;position:relative;overflow:hidden;background:linear-gradient(145deg,#fff,#f8f9ff);border:2px solid var(--border);display:flex;flex-direction:column;align-items:center;gap:12px;min-height:140px}.card:hover{border-color:var(--primary);transform:translateY(-4px);box-shadow:0 12px 24px rgba(17,80,199,.15);background:linear-gradient(145deg,#fff,#f0f4ff)}.card.active-choice,.campus-card.active-choice{border:2px solid var(--utfpr-orange);background:linear-gradient(145deg,#fff5e6,#ffe8cc);transform:translateY(-2px);box-shadow:0 8px 16px rgba(255,107,53,.2)}.card strong{display:block;font-size:1.1rem;font-weight:700;color:var(--text);text-align:center;margin:0}.card-icon{position:relative;width:48px;height:48px;background:linear-gradient(145deg,#f0f4ff,#e8f0ff);border-radius:12px;margin-bottom:4px;display:flex;align-items:center;justify-content:center}.card-icon .material-icons-round{font-size:24px;color:var(--primary);line-height:1}.card-title{text-align:center;line-height:1.3}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--primary),var(--secondary));opacity:0;transition:opacity .3s}.card:hover:before{opacity:1}.modulo-switcher{position:sticky;top:8px;z-index:20;display:flex;justify-content:center;gap:8px;padding:8px;margin-bottom:12px;overflow-x:auto;animation:moduloRise .24s ease-out}@keyframes moduloRise{0%{opacity:.4;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.modulo-chip{border:1px solid var(--border);background:#fff;border-radius:999px;padding:6px 12px;font-size:.86rem;font-weight:700;cursor:pointer;white-space:nowrap}.modulo-chip.active{background:linear-gradient(90deg,var(--primary),var(--secondary));color:#fff;border-color:transparent}@keyframes moduloCardSobe{0%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(-56px) scale(.5);opacity:0}}.modulos-slide-up{pointer-events:none}.modulos-slide-up .card:nth-child(1){animation:moduloCardSobe .24s cubic-bezier(.55,0,1,.45) 0s forwards}.modulos-slide-up .card:nth-child(2){animation:moduloCardSobe .24s cubic-bezier(.55,0,1,.45) .05s forwards}.modulos-slide-up .card:nth-child(3){animation:moduloCardSobe .24s cubic-bezier(.55,0,1,.45) .1s forwards}.modulos-slide-up .card:nth-child(4){animation:moduloCardSobe .24s cubic-bezier(.55,0,1,.45) .15s forwards}.modulos-slide-up .card:nth-child(5){animation:moduloCardSobe .24s cubic-bezier(.55,0,1,.45) .2s forwards}.modulos-slide-up .card:nth-child(6){animation:moduloCardSobe .24s cubic-bezier(.55,0,1,.45) .25s forwards}@keyframes chipPopIn{0%{opacity:0;transform:translateY(-10px) scale(.8)}to{opacity:1;transform:translateY(0) scale(1)}}.modulo-switcher .modulo-chip{animation:chipPopIn .2s ease-out both}.modulo-switcher .modulo-chip:nth-child(2){animation-delay:.06s}.modulo-switcher .modulo-chip:nth-child(3){animation-delay:.12s}.modulo-switcher .modulo-chip:nth-child(4){animation-delay:.18s}.campus-origem-alert{color:#b3261e;font-weight:700}#view-campus .panel-campus{background:#e9eaec;border-radius:20px;border:1px solid #ccd2dc;padding:18px}#view-campus h2{text-align:center;margin-bottom:16px}#view-modulos h2{text-align:center;margin-bottom:20px;font-size:1.8rem;font-weight:700;color:var(--text)}#titulo-campus{text-align:center!important}#campus-grid{grid-template-columns:repeat(4,minmax(126px,1fr))}.campus-card{min-height:54px;text-align:center;background:#f3f4f6;border-color:#c7ccd6;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:12px}.campus-card .campus-icon{color:var(--gold);font-size:30px;line-height:1}.campus-card .campus-photo{width:68px;height:42px;object-fit:cover;border-radius:8px;border:1px solid #cfd6e4}.campus-card strong{font-size:1.03rem;margin:0}@keyframes fly-to-header{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(25vw,-15vh) scale(.1);opacity:0}}.campus-card.fly-away{animation:fly-to-header .7s cubic-bezier(.5,0,.75,0) forwards;z-index:100;position:relative}.campus-grid-fading .campus-card:not(.fly-away){transition:opacity .3s ease-out;opacity:0;pointer-events:none}#sede-grid .card,#bloco-grid .card{min-height:54px;padding:12px;font-size:1.03rem;display:flex;align-items:center;justify-content:center;text-align:center}.home-extra{margin:14px auto 2px;max-width:640px;text-align:center}.apresentacao-item{text-align:left;border-top:1px solid #e5e9f3;padding-top:10px;margin-top:10px;opacity:0;transform:translate(-30px);transition:opacity .8s ease,transform .8s ease}.apresentacao-item.reveal{opacity:1;transform:translate(0)}.apresentacao-item:nth-child(1){transition-delay:.1s}.apresentacao-item:nth-child(2){transition-delay:.2s}.apresentacao-item:nth-child(3){transition-delay:.3s}.apresentacao-item:nth-child(4){transition-delay:.4s}.slide-down{animation:slideDown .35s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}body.compact-mode #home-extra{display:none}body:not(.home-view) #home-extra{display:none}.btn{border:1px solid var(--border);background:#fff;color:var(--text);border-radius:10px;padding:10px 14px;cursor:pointer;font-weight:600;display:inline-flex;gap:6px;align-items:center}.btn.primary{background:linear-gradient(90deg,var(--primary),var(--secondary));border-color:transparent;color:#fff}.btn.success{background:linear-gradient(90deg,#12833e,#0ea5a3);border-color:transparent;color:#fff}.btn.danger{background:linear-gradient(90deg,#b3261e,#d64e46);border-color:transparent;color:#fff}.btn.ghost{background:transparent}.btn.toggle.active-choice{background:linear-gradient(90deg,#1e40af,#7c3aed);color:#fff;border-color:transparent}.hidden{display:none!important}.row-between{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}.field{display:flex;flex-direction:column;gap:6px;margin:10px 0}.field span{font-size:.9rem;font-weight:600;color:#334155}input,select,textarea{border:1px solid var(--border);border-radius:10px;padding:10px;font:inherit;background:#fff}input[readonly]{background:#f2f4f8}.inline-actions{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px}.align-end{align-items:end}.result-box,.list-box{padding:12px;margin-top:10px}.gradient-box{background:linear-gradient(120deg,#e8f0ff,#e6fffb,#f3e8ff);border-color:#b9cdfd}.list-item{padding:10px;border-bottom:1px solid #edf2fa}.list-item:last-child{border-bottom:none}#scanner-dialog{width:min(90vw,560px);padding:16px;border:none}@media (max-width: 640px){.topbar{padding:12px 0 8px}.topbar-content{display:flex;flex-direction:column;align-items:center;gap:10px}.brand-wrap{order:1;text-align:center}.topbar-left{order:2;justify-content:center}#campus-info-header{order:3}#app-subtitle{display:none}.brand-title{max-width:min(380px,88vw);max-height:90px;margin:2px auto}.campus-info{width:100%;flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px}#sede-grid.cards,#bloco-grid.cards{grid-template-columns:repeat(auto-fit,minmax(min(40%,220px),1fr));justify-items:stretch}#sede-grid .card,#bloco-grid .card{width:100%}}@media (max-width: 360px){#sede-grid.cards,#bloco-grid.cards{grid-template-columns:1fr}}#scanner-video{width:100%;border-radius:12px;background:#000;min-height:280px}.mt16{margin-top:16px}.hint{color:var(--muted)}.footer{text-align:center;color:#fff;font-size:.96rem;line-height:1.5;padding:22px 12px;background:linear-gradient(180deg,#4a7bc7,#3a6bb8 45%,#2a5ba9);box-shadow:0 -4px 12px rgba(42,91,169,.25),inset 0 1px rgba(255,255,255,.15)}@media (max-width: 980px){#campus-grid{grid-template-columns:repeat(3,minmax(112px,1fr))}}@media (max-width: 700px){.topbar,.app-shell{padding-left:12px;padding-right:12px}.topbar{grid-template-columns:1fr auto}.brand-wrap{grid-column:1 / -1;order:3}.topbar #btn-home{justify-self:end}#campus-grid{grid-template-columns:repeat(2,minmax(84px,1fr))}}.loading-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(26,32,64,.7);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .2s ease}.loading-spinner{background:var(--surface);padding:32px 48px;border-radius:16px;text-align:center;box-shadow:0 12px 40px rgba(0,0,0,.2)}.spinner{width:48px;height:48px;border:4px solid var(--border);border-top-color:var(--primary);border-radius:50%;margin:0 auto 16px;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.toast-container{position:fixed;top:80px;right:16px;z-index:10000;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{background:var(--surface);color:var(--text);padding:12px 20px;border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.15);display:flex;align-items:center;gap:12px;min-width:280px;max-width:400px;transform:translate(120%);transition:transform .3s ease;pointer-events:auto;border-left:4px solid var(--primary)}.toast.show{transform:translate(0)}.toast-icon{font-size:20px;font-weight:700}.toast-success{border-left-color:var(--success);background:#e8f5e9}.toast-success .toast-icon{color:var(--success)}.toast-error{border-left-color:var(--danger);background:#ffebee}.toast-error .toast-icon{color:var(--danger)}.toast-warning{border-left-color:var(--gold);background:#fff8e1}.toast-warning .toast-icon{color:var(--gold)}.toast-info{border-left-color:var(--primary);background:#e3f2fd}.toast-info .toast-icon{color:var(--primary)}.confirm-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(26,32,64,.6);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .2s ease}.confirm-dialog{background:var(--surface);padding:24px;border-radius:16px;max-width:400px;width:90%;box-shadow:0 12px 40px rgba(0,0,0,.2)}.confirm-dialog h3{margin:0 0 12px;color:var(--text)}.confirm-dialog p{margin:0 0 24px;color:var(--muted);line-height:1.5}.confirm-actions{display:flex;gap:8px;justify-content:flex-end}.offline-indicator{position:fixed;top:72px;left:50%;transform:translate(-50%) translateY(-100px);background:linear-gradient(135deg,#ff6b6b,#ee5a6f);color:#fff;padding:10px 20px;border-radius:24px;display:flex;align-items:center;gap:8px;box-shadow:0 4px 16px rgba(238,90,111,.4);z-index:9998;transition:transform .3s ease;font-size:14px;font-weight:500}.offline-indicator.show{transform:translate(-50%) translateY(0)}.offline-indicator.syncing{background:linear-gradient(135deg,var(--primary) 0%,var(--secondary) 100%)}.offline-indicator .material-icons-round{font-size:20px}.offline-indicator.syncing .material-icons-round{animation:spin 1s linear infinite}.offline-indicator .badge{background:rgba(255,255,255,.3);padding:2px 8px;border-radius:12px;font-size:12px;font-weight:600;display:none}.empty-state{text-align:center;padding:48px 24px;color:var(--muted)}.empty-state .material-icons-round{font-size:64px;opacity:.3;display:block;margin-bottom:16px}.empty-state p{margin:0;font-size:16px}.error-state{text-align:center;padding:48px 24px;color:var(--danger)}.error-state .material-icons-round{font-size:64px;opacity:.5;display:block;margin-bottom:16px}.error-state p{margin:0 0 24px;font-size:16px;color:var(--muted)}.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:8px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-line{height:16px;margin-bottom:8px;border-radius:4px}.skeleton-card{padding:16px;margin-bottom:12px}.skeleton-list-item{padding:12px;margin-bottom:8px}@media (max-width: 640px){.toast-container{left:16px;right:16px}.toast{min-width:auto;max-width:none}.offline-indicator{font-size:13px;padding:8px 16px}.confirm-dialog{margin:0 16px}}
