:root{--navy: #1E3A5F;--navy-dark: #142A45;--amber: #E8A33D;--amber-dark: #C9862A;--paper: #F7F5EF;--paper-raised: #FFFFFF;--ink: #2B2B2B;--ink-soft: #5A5A54;--line: #E4E0D6;--green: #3E7A4C;--red: #B23A32;--font-display: "Fraunces", serif;--font-body: "Inter", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-body);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);font-weight:600;margin:0;color:var(--navy-dark)}button{font-family:inherit;cursor:pointer}input{font-family:inherit}.screen-center{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--paper)}.loader{width:28px;height:28px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--navy);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(circle at 15% 10%,rgba(232,163,61,.1),transparent 40%),var(--paper)}.login-card{width:100%;max-width:400px;background:var(--paper-raised);border:1px solid var(--line);border-radius:16px;padding:36px 32px;box-shadow:0 20px 40px -20px #1e3a5f40}.brand{display:flex;align-items:flex-start;gap:14px;margin-bottom:28px}.brand-mark{flex:none;line-height:0}.eyebrow{margin:0 0 4px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--amber-dark);font-weight:600}.brand h1{font-size:20px;line-height:1.25}.login-form{display:flex;flex-direction:column;gap:16px}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:500;color:var(--ink-soft)}.field input{border:1px solid var(--line);border-radius:8px;padding:11px 12px;font-size:15px;color:var(--ink);background:var(--paper);transition:border-color .15s ease}.field input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px #1e3a5f1f}.btn-primary{margin-top:6px;background:var(--navy);color:#fff;border:none;border-radius:8px;padding:12px;font-size:15px;font-weight:600;transition:background .15s ease}.btn-primary:hover:not(:disabled){background:var(--navy-dark)}.btn-primary:disabled{opacity:.6;cursor:default}.form-error{margin:0;font-size:13px;color:var(--red)}.login-footnote{margin:24px 0 0;font-size:12px;color:var(--ink-soft);line-height:1.5;text-align:center}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:16px;padding:0 20px;height:60px;background:var(--navy);color:#fff;flex:none}.topbar-title{margin:0;font-family:var(--font-display);font-size:16px;font-weight:600;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-user{display:flex;align-items:center;gap:12px}.user-email{font-size:13px;opacity:.85;display:none}@media (min-width: 560px){.user-email{display:inline}}.btn-ghost{background:transparent;border:1px solid var(--navy);color:var(--navy);border-radius:6px;padding:6px 12px;font-size:13px;font-weight:500;cursor:pointer}.btn-ghost:hover{background:#1e3a5f12}.btn-ghost:disabled{opacity:.45;cursor:not-allowed}.btn-ghost:disabled:hover{background:transparent}.topbar .btn-ghost{border-color:#ffffff59;color:#fff}.topbar .btn-ghost:hover{background:#ffffff1a}.nav-toggle{display:flex;flex-direction:column;gap:4px;background:none;border:none;padding:8px;margin:-8px}.nav-toggle span{width:20px;height:2px;background:#fff;border-radius:2px}@media (min-width: 860px){.nav-toggle{display:none}}.app-body{flex:1;display:flex;min-height:0}.sidebar{width:220px;flex:none;background:var(--paper-raised);border-right:1px solid var(--line);padding:16px 10px;display:none;flex-direction:column;gap:2px}.sidebar-open{display:flex}@media (min-width: 860px){.sidebar{display:flex}}.nav-item{text-align:left;background:none;border:none;border-radius:8px;padding:10px 14px;font-size:14px;font-weight:500;color:var(--ink-soft)}.nav-item:hover{background:var(--paper);color:var(--ink)}.nav-item-active,.nav-item-active:hover{background:var(--navy);color:#fff}.content{flex:1;overflow-y:auto;padding:32px 28px 60px}.module{max-width:760px}.module-eyebrow{margin:0 0 6px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--amber-dark);font-weight:600}.module h2{font-size:26px;margin-bottom:12px}.module-lead{color:var(--ink-soft);line-height:1.6;font-size:15px;max-width:60ch}.module-note{margin-top:20px;font-size:13px;color:var(--ink-soft);font-style:italic}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:24px}.info-card{background:var(--paper-raised);border:1px solid var(--line);border-radius:12px;padding:18px}.info-card h3{font-size:15px;margin-bottom:6px}.info-card p{margin:0;font-size:13px;color:var(--ink-soft)}.placeholder-box{margin-top:24px;border:1px dashed var(--line);border-radius:12px;padding:24px;color:var(--ink-soft);font-size:14px}.roster{list-style:none;margin:24px 0 0;padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden}.roster-row{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--paper-raised)}.roster-row+.roster-row{border-top:1px solid var(--line)}.roster-name{font-size:14px;font-weight:500}.roster-actions{display:flex;gap:8px}.chip{border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:6px 14px;font-size:13px;font-weight:500;color:var(--ink-soft)}.chip-present{background:var(--green);border-color:var(--green);color:#fff}.chip-absent{background:var(--red);border-color:var(--red);color:#fff}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,label.btn-ghost:focus-within{outline:2px solid var(--navy);outline-offset:2px;border-radius:6px}@media (pointer: coarse){button,label.btn-ghost{min-height:40px}}.taula-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -4px;padding:0 4px}.taula-scroll>table{min-width:100%}.btn-perill{background:var(--red);color:#fff;border:none;border-radius:8px;padding:10px 16px;font-weight:600;cursor:pointer}.btn-perill:disabled{opacity:.5;cursor:not-allowed}.caixa{border:1px solid var(--line);border-radius:10px;padding:14px 16px}.caixa-discreta{border:1px dashed var(--line);border-radius:8px;padding:10px 12px}.nota{font-size:11px;color:var(--ink-soft);margin-top:4px}.nota-avis{color:var(--amber-dark)}.nota-error{color:var(--red)}
