*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#182230}body{margin:0}.app-body,.auth-body{min-height:100vh;background:#edf2f7;background-image:linear-gradient(rgba(14,26,40,.74),rgba(14,26,40,.74)),var(--custom-bg,linear-gradient(135deg,#193a57,#6c8ca5));background-size:cover;background-position:center;background-attachment:fixed}.app-shell{min-height:100vh;display:grid;grid-template-columns:245px 1fr}.sidebar{background:rgba(18,31,46,.92);backdrop-filter:blur(18px);color:white;padding:24px 18px;display:flex;flex-direction:column;border-right:1px solid #ffffff12}.brand{display:flex;gap:11px;align-items:center;text-decoration:none;color:white;margin-bottom:32px}.brand small{display:block;color:#aec0cf;margin-top:2px}.logo{width:42px;height:42px;border-radius:14px;background:linear-gradient(135deg,#65b6e8,#7c6fe8);display:grid;place-items:center;color:white;font-weight:900;box-shadow:0 8px 22px #0002}.logo.big{width:58px;height:58px;font-size:20px;margin:auto}.sidebar nav{display:grid;gap:7px}.sidebar nav a{color:#d8e2eb;text-decoration:none;padding:11px 12px;border-radius:10px;font-weight:650}.sidebar nav a:hover,.sidebar nav a.active{background:#ffffff16;color:white}.sidebar-user{margin-top:auto;display:grid;gap:5px;font-size:14px}.sidebar-user a{color:#a9c7de;text-decoration:none}.main-content{padding:34px;max-width:1500px;width:100%;background:rgba(244,247,251,.94);min-height:100vh}.page-head{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:22px}.page-head h1{margin:2px 0 5px;font-size:30px}.page-head p,.muted{margin:0;color:#657386}.eyebrow{text-transform:uppercase;letter-spacing:.07em;font-size:11px;color:#62809a;font-weight:800}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid #cdd8e2;background:white;color:#193a57;border-radius:10px;padding:10px 14px;text-decoration:none;font-weight:750;cursor:pointer}.btn.primary{border:0;background:linear-gradient(135deg,#297bb8,#6d69d8);color:white;box-shadow:0 8px 20px #386aa125}.btn.secondary{background:white}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:22px}.stats article,.panel,.howto-card{background:rgba(255,255,255,.96);border:1px solid #dfe7ef;border-radius:16px;box-shadow:0 8px 30px rgba(24,40,60,.06)}.stats article{padding:19px}.stats span{display:block;color:#6d7b8c;font-size:13px}.stats strong{display:block;font-size:29px;margin-top:5px}.progress{height:5px;background:#e8edf3;border-radius:5px;margin-top:9px;overflow:hidden}.progress i{display:block;height:100%;background:#5d74d8}.panel{padding:20px;margin-bottom:20px}.panel.narrow{max-width:800px}.panel h2{margin:0 0 7px}.panel p{color:#667487;line-height:1.5}.task-cards{display:grid;gap:9px}.task-card{display:grid;grid-template-columns:130px 1fr auto;gap:15px;align-items:center;padding:13px;border:1px solid #e4eaf0;border-radius:12px;background:white}.task-card.late{border-left:4px solid #d95858}.due small{display:block;color:#718093}.due b{display:block;margin-top:3px}.task-info h3{margin:0 0 4px;font-size:16px}.task-info p{margin:0;color:#718093;font-size:13px}.status,.pill{display:inline-flex;padding:6px 9px;border-radius:999px;font-size:12px;font-weight:800}.status.open{background:#fff1cc;color:#7c5b00}.status.doing{background:#e7f0fb;color:#245989}.status.done{background:#e2f2df;color:#316532}.month-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:18px}.month-tabs a{padding:8px 10px;border-radius:9px;text-decoration:none;color:#4e6072;background:#fff;border:1px solid #dce4ec;font-size:13px}.month-tabs a.active{background:#193a57;color:#fff}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.form-grid .wide{grid-column:1/-1}.stack{display:grid;gap:13px}label{display:grid;gap:6px;font-size:14px;font-weight:700}input,select,textarea{width:100%;border:1px solid #cbd6e0;border-radius:9px;background:white;padding:10px 11px;font:inherit;color:#182230}textarea{resize:vertical}.form-actions{display:flex;gap:9px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:11px 9px;border-bottom:1px solid #e8edf2;vertical-align:top}th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#718093}.completed{opacity:.6}.check{width:25px;height:25px;border:2px solid #bcc9d5;border-radius:7px;display:grid;place-items:center;text-decoration:none;font-weight:900;color:white}.check.checked{background:#54a45b;border-color:#54a45b}.howto-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.howto-card{padding:19px}.howto-card h3{margin:7px 0}.howto-card p{color:#536475;line-height:1.55}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.note{margin-top:16px;padding:12px;border-radius:10px;background:#edf4fa;color:#46647f}.alert{padding:12px 14px;border-radius:10px;margin-bottom:16px}.alert.success{background:#e5f4e5;color:#2e6634}.alert.error{background:#fdeaea;color:#9a2f2f}.empty{padding:20px;color:#708093}.auth-body{display:grid;place-items:center;padding:24px}.auth-card{width:min(430px,94vw);padding:30px;background:rgba(255,255,255,.95);border:1px solid #ffffff88;border-radius:22px;box-shadow:0 25px 80px rgba(0,0,0,.24);backdrop-filter:blur(18px)}.auth-card h1{text-align:center;margin:18px 0 5px}.auth-card>.muted{text-align:center}.auth-card .stack{margin-top:22px}.install-card{width:min(760px,96vw)}.install-card h1{text-align:left}.install-card>.muted{text-align:left}@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{position:static}.sidebar nav{grid-template-columns:repeat(3,1fr)}.sidebar-user{margin-top:16px}.main-content{padding:20px}.stats{grid-template-columns:1fr 1fr}.howto-grid,.choice-grid{grid-template-columns:1fr}.task-card{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.page-head{align-items:flex-start}.table-wrap{font-size:13px}}

.logo-new{background:linear-gradient(135deg,#2c8ac9,#6d69d8);font-size:22px;font-weight:900}.logo-new span{transform:translateY(-1px)}
.switch-year-form{display:flex;gap:10px;align-items:center;max-width:520px}.switch-year-form select{flex:1}
.login-page{min-height:100svh;display:flex;align-items:center;justify-content:center;padding:24px;margin:0}
.login-card{width:min(440px,100%);margin:auto;padding:34px 30px;text-align:left}
.login-logo{width:58px;height:58px;margin:0 auto 18px;font-size:25px}
.login-card h1{text-align:center;margin:0 0 8px;font-size:34px}
.login-tagline{margin:0;text-align:center;font-weight:800;font-size:16px;color:#27384a}
.login-access{margin:7px 0 24px;text-align:center;color:#6a7888;line-height:1.45}
.login-form{margin-top:0!important}.login-form .btn{width:100%;min-height:46px}
@media(max-width:700px){.switch-year-form{display:grid}}
@media(max-width:600px){.login-page{min-height:100svh;padding:18px;align-items:center;justify-content:center}.login-card{width:100%;max-width:390px;margin:auto;padding:28px 22px;border-radius:18px}.login-card h1{font-size:30px}.login-tagline{font-size:15px}}

.login-tagline{font-weight:400!important}
.login-page{
  background-image:
    linear-gradient(rgba(10,25,40,.45),rgba(10,25,40,.45)),
    var(--custom-bg,url('login-background.jpg'))!important;
  background-size:cover!important;
  background-position:center!important;
}

.site-footer{
  margin-top:auto;
  padding:24px 18px 18px;
  text-align:center;
  font-size:12px;
  line-height:1.6;
  color:#7b8794;
}
.site-footer a{
  color:inherit;
  text-decoration:none;
}
.site-footer a:hover{text-decoration:underline;}

.login-footer{
  position:fixed;
  left:0; right:0; bottom:12px;
  text-align:center;
  font-size:12px;
  line-height:1.6;
  color:rgba(255,255,255,.82);
  z-index:5;
}
.login-footer a{color:inherit;text-decoration:none}
.login-footer a:hover{text-decoration:underline}
@media(max-width:700px){
  .login-footer{position:static;margin:18px auto 12px;color:#667788}
}
