*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Segoe UI,Arial,sans-serif;background:#f0f4ff;min-height:100vh}.app-root{min-height:100vh}input,select,textarea{font-family:inherit;font-size:1em;padding:.7em .9em;border:1.5px solid #d1d5db;border-radius:8px;background:#f8fafc;width:100%;margin-bottom:1em;transition:border .2s}input:focus,select:focus{border-color:#6366f1;outline:none}label{font-size:.88em;font-weight:600;color:#475569;margin-bottom:.25em;display:block}textarea{font-family:inherit;font-size:1em;padding:.7em .9em;border:1.5px solid #d1d5db;border-radius:8px;background:#f8fafc;width:100%;margin-bottom:1em;resize:vertical;min-height:80px;transition:border .2s}textarea:focus{border-color:#6366f1;outline:none}.optional{font-weight:400;color:#94a3b8;font-size:.9em}.detail-modal{max-width:460px;padding:0;text-align:left;overflow:hidden}.detail-type-bar{padding:.65em 1.3em;color:#fff;font-weight:700;font-size:.95em;display:flex;align-items:center;justify-content:space-between}.detail-title{font-size:1.25em;font-weight:700;color:#1e293b;padding:1em 1.3em .4em}.detail-rows{padding:.2em 1.3em .8em;display:flex;flex-direction:column;gap:.55em}.detail-row{display:flex;gap:.7em;align-items:flex-start;font-size:.95em;line-height:1.5}.detail-label{min-width:90px;font-weight:600;color:#64748b;flex-shrink:0}.detail-desc .detail-label{padding-top:.1em}.detail-desc span:last-child{white-space:pre-wrap;color:#334155}.detail-actions{display:flex;gap:.6em;padding:.4em 1.3em .8em}.detail-close{display:block;width:calc(100% - 2.6em);margin:0 1.3em 1.2em;background:#f1f5f9;color:#475569;border:none;border-radius:8px;padding:.6em;font-size:.95em;font-weight:600;cursor:pointer}.detail-close:hover{background:#e2e8f0}.btn-main{background:linear-gradient(90deg,#6366f1,#2563eb);color:#fff;border:none;border-radius:8px;padding:.78em 1.5em;font-size:1em;font-weight:600;cursor:pointer;width:100%;margin-top:.4em;transition:opacity .15s}.btn-main:hover{opacity:.88}.btn-outline{background:transparent;color:#6366f1;border:2px solid #6366f1;border-radius:8px;padding:.72em 1.5em;font-size:1em;font-weight:600;cursor:pointer;width:100%;margin-top:.4em;transition:background .15s}.btn-outline:hover{background:#ede9fe}.btn-outline-sm{background:transparent;color:#6366f1;border:1.5px solid #6366f1;border-radius:7px;padding:.38em 1em;font-size:.9em;font-weight:600;cursor:pointer;transition:background .15s}.btn-outline-sm:hover{background:#ede9fe}.btn-logout{background:transparent;color:#ef4444;border:1.5px solid #ef4444;border-radius:7px;padding:.38em .9em;font-size:.9em;font-weight:600;cursor:pointer}.btn-logout:hover{background:#fef2f2}.btn-delete-account{background:transparent;color:#b45309;border:1.5px solid #b45309;border-radius:7px;padding:.38em .9em;font-size:.9em;font-weight:600;cursor:pointer}.btn-delete-account:hover{background:#fffbeb}.btn-validate{background:#10b981;color:#fff;border:none;border-radius:6px;padding:.38em .9em;font-size:.88em;cursor:pointer;font-weight:600;margin-right:.4em}.btn-delete{background:#ef4444;color:#fff;border:none;border-radius:6px;padding:.38em .9em;font-size:.88em;cursor:pointer;font-weight:600}.link{color:#6366f1;cursor:pointer;text-decoration:underline}.badge{background:#ef4444;color:#fff;border-radius:10px;padding:0 6px;font-size:.78em;margin-left:4px}.admin-badge{background:#f59e42;color:#fff;border-radius:6px;padding:2px 8px;font-size:.8em;margin-left:6px;font-weight:700}.popup-overlay{position:fixed;inset:0;background:#0005;display:flex;align-items:center;justify-content:center;z-index:1000}.popup{background:#fff;border-radius:14px;padding:2.2em 2.5em;max-width:400px;width:90%;text-align:center;box-shadow:0 8px 40px #0003}.popup p{font-size:1.05em;margin-bottom:1.3em;line-height:1.6;color:#334155}.popup-info{border-top:4px solid #6366f1}.popup-success{border-top:4px solid #10b981}.popup button{width:auto;padding:.6em 2em}.intro-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#e0e7ff,#f0fdf4 60%,#fff)}.intro-hero{text-align:center;padding:2em}.intro-logo{font-size:4em;margin-bottom:.2em}.intro-hero h1{font-size:2.8em;font-weight:800;color:#2d3a5a;margin-bottom:.3em}.intro-sub{font-size:1.15em;color:#64748b;margin-bottom:2em}.intro-actions{display:flex;gap:1em;justify-content:center;flex-wrap:wrap;margin-bottom:1.5em}.intro-actions .btn-main,.intro-actions .btn-outline{width:auto;min-width:200px}.intro-hint{color:#64748b;font-size:.97em}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#e0e7ff,#f7f7f7)}.auth-card{background:#fff;border-radius:16px;padding:2.5em 2.2em;max-width:380px;width:90%;box-shadow:0 4px 28px #0002}.auth-card h2{text-align:center;font-size:1.7em;color:#2d3a5a;margin-bottom:1.3em}.auth-error{background:#fef2f2;color:#ef4444;border-radius:7px;padding:.6em 1em;font-size:.92em;margin-bottom:.8em}.auth-switch{text-align:center;color:#64748b;margin-top:1em;font-size:.95em}.res-page{min-height:100vh;display:flex;align-items:flex-start;justify-content:center;background:#f0f4ff;padding:2em 1em}.res-card{background:#fff;border-radius:16px;padding:2em 2.2em;max-width:480px;width:100%;box-shadow:0 4px 24px #0001}.res-card h2{font-size:1.6em;color:#2d3a5a;margin-bottom:1.2em}.page-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.2em;font-size:.95em}.nav-user{color:#64748b;font-size:.9em}.date-time-row{display:flex;gap:.6em;margin-bottom:0}.date-time-row input{margin-bottom:1em}.date-time-row input[type=date]{flex:1.4}.time-input{flex:1;min-width:0}.allday-hint{font-size:.82em;color:#6366f1;margin:-.5em 0 .9em;background:#eef2ff;border-radius:6px;padding:.35em .7em}.type-selector{display:flex;flex-wrap:wrap;gap:.5em;margin-bottom:1em}.type-btn{border:2px solid var(--type-color, #6366f1);background:transparent;color:var(--type-color, #6366f1);border-radius:20px;padding:.35em 1em;font-size:.88em;font-weight:600;cursor:pointer;transition:background .15s,color .15s;width:auto;margin-bottom:0}.type-btn.active{background:var(--type-color, #6366f1);color:#fff}.cal-page{display:flex;flex-direction:column;min-height:100vh;background:#f0f4ff}.cal-header{display:flex;align-items:center;justify-content:space-between;background:#fff;padding:.8em 1.5em;box-shadow:0 1px 6px #0001;flex-shrink:0;flex-wrap:wrap;gap:.6em}.cal-header-left .cal-logo{font-size:1.15em;font-weight:700;color:#2d3a5a;cursor:pointer}.cal-header-right{display:flex;align-items:center;gap:.7em;flex-wrap:wrap}.cal-body{display:flex;flex:1}.cal-sidebar{width:25%;min-width:180px;max-width:280px;background:#fff;border-right:1px solid #e2e8f0;padding:1.2em 1em;overflow-y:auto}.cal-sidebar h3{font-size:1em;font-weight:700;color:#475569;margin-bottom:.9em}.empty-sidebar{color:#94a3b8;font-size:.9em}.sidebar-item{padding:.55em .8em;border-radius:7px;margin-bottom:.5em;background:#f8fafc}.sidebar-title{display:block;font-weight:600;font-size:.9em;color:#334155}.sidebar-meta{display:block;font-size:.78em;color:#94a3b8;margin-top:.15em}.cal-main{flex:1;padding:1.2em;overflow:hidden}.fc{background:#fff;border-radius:12px;box-shadow:0 2px 12px #0001}.fc .fc-toolbar{flex-wrap:wrap}.fc .fc-button{text-transform:capitalize}.fc-event{cursor:pointer}.fc .fc-col-header-cell-cushion,.fc .fc-daygrid-day-number{cursor:pointer;text-decoration:none!important}.fc .fc-col-header-cell-cushion:hover,.fc .fc-daygrid-day-number:hover{text-decoration:underline!important;color:#6366f1}.fc .fc-timegrid-axis,.fc .fc-week-number{color:#94a3b8;font-size:.78em}.fc .fc-daygrid-week-number,.fc .fc-timegrid-week-number{background:#f1f5f9;color:#6366f1;font-weight:700;font-size:.78em;border-radius:4px;padding:2px 5px;cursor:pointer}.fc .fc-daygrid-week-number:hover{background:#ede9fe}.admin-page{min-height:100vh;background:#f0f4ff;padding:2em 1em}.admin-card{background:#fff;border-radius:16px;padding:2em 2.2em;max-width:700px;margin:0 auto;box-shadow:0 4px 24px #0001}.admin-card h2{font-size:1.4em;color:#2d3a5a;margin-bottom:1em}.admin-item{display:flex;justify-content:space-between;align-items:center;padding:.8em 1em;border-radius:9px;margin-bottom:.7em;background:#f8fafc;gap:1em;flex-wrap:wrap}.admin-item-info{flex:1;font-size:.95em;line-height:1.6}.admin-item-actions{display:flex;gap:.5em}.status-badge{display:inline-block;border-radius:10px;padding:1px 10px;font-size:.79em;font-weight:700;margin-left:8px}.status-pending{background:#fef9c3;color:#ca8a04}.status-validated{background:#dcfce7;color:#16a34a}@media(max-width:700px){.cal-body{flex-direction:column}.cal-sidebar{width:100%;max-width:100%;border-right:none;border-bottom:1px solid #e2e8f0;max-height:180px}.cal-main{padding:.6em}.cal-header{padding:.6em .8em}.intro-hero h1{font-size:1.9em}.intro-actions{flex-direction:column;align-items:center}}
