:root{--burgundy:#762d49;--deep:#541b32;--gold:#c5a15b;--ivory:#f7f3ed;--ink:#332832;--muted:#827780}*{box-sizing:border-box}body{font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:#f6f4f2}.topbar{background:linear-gradient(110deg,var(--deep),var(--burgundy));box-shadow:0 4px 18px #35101f26;border-bottom:2px solid var(--gold)}.navbar-brand{letter-spacing:.08em}.navbar-brand span,.brand-mark span{color:var(--gold)}.sidebar{background:#fff;min-height:calc(100vh - 56px);border-right:1px solid #eee7e4}.sidebar a{display:block;color:#66545d;text-decoration:none;padding:12px 14px;border-radius:10px;margin-bottom:5px;font-weight:600}.sidebar a:hover{background:#f7edf1;color:var(--burgundy)}.page-heading h1{font-size:1.7rem;font-weight:750;color:var(--deep);margin:4px 0}.eyebrow{font-size:.68rem;letter-spacing:.18em;font-weight:800;color:var(--gold)}.stat-card,.content-card,.login-card,.public-card{background:#fff;border:1px solid #eee7e4;border-radius:18px;box-shadow:0 10px 32px #3913260b}.stat-card{padding:22px;height:100%;border-top:3px solid var(--gold)}.stat-label{color:var(--muted);font-size:.88rem}.stat-number{font-size:2.2rem;font-weight:800;color:var(--burgundy);margin-top:4px}.content-card{padding:24px}.content-card h5{font-weight:750;color:var(--deep)}.btn-burgundy{background:var(--burgundy);color:#fff;border:1px solid var(--burgundy)}.btn-burgundy:hover{background:var(--deep);color:#fff}.btn-gold{background:var(--gold);color:#2f2027;border:1px solid var(--gold);font-weight:700}.btn-outline-burgundy{border:1px solid var(--burgundy);color:var(--burgundy)}.btn-outline-burgundy:hover{background:var(--burgundy);color:#fff}.form-control,.form-select{border-color:#e5dce0;border-radius:10px;padding:.68rem .85rem}.form-control:focus,.form-select:focus{border-color:var(--gold);box-shadow:0 0 0 .2rem #c5a15b25}.login-bg,.public-bg{min-height:100vh;background:radial-gradient(ellipse at top right,#ead9df 0,transparent 42%),linear-gradient(135deg,#f8f4ef,#eee7e8);display:flex;align-items:center}.login-card,.public-card{width:min(100% - 30px,510px);margin:auto;padding:34px}.public-card{width:min(100% - 24px,650px)}.brand-mark{font-size:1.1rem;font-weight:900;letter-spacing:.12em;color:var(--deep)}.camera-view{width:100%;max-height:340px;object-fit:cover;background:#21151b;border-radius:14px;transform:scaleX(-1)}.selfie-preview{width:180px;max-width:100%;border-radius:12px;border:3px solid var(--gold)}.gps-status{padding:12px;border-radius:10px;background:var(--ivory);font-size:.9rem;color:#66545d}.table thead th{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:#806b75;border-bottom-color:#e8dce1}.table td{font-size:.9rem}.alert{border-radius:12px}@media(max-width:991px){.sidebar{min-height:auto;border-right:0;border-bottom:1px solid #eee;display:flex;gap:5px;overflow:auto;padding:10px!important}.sidebar a{white-space:nowrap;margin:0}.content-card{padding:18px}.page-heading h1{font-size:1.45rem}}@media print{.topbar,.sidebar,.btn,form{display:none!important}.content-card{box-shadow:none;border:0}}

/* Portal peserta */
.participant-card{width:min(100% - 24px,820px)}
.participant-profile{background:linear-gradient(115deg,var(--deep),var(--burgundy));color:#fff;border-radius:16px;padding:22px}
.profile-label{font-size:.66rem;letter-spacing:.16em;font-weight:800;color:var(--gold);margin-bottom:7px}
.profile-name{font-size:1.15rem;font-weight:800;margin-bottom:4px}
.participant-event{border:1px solid #eee4e8;border-radius:15px;padding:20px;background:#fff}
.participant-progress{height:9px;border-radius:20px;background:#f0e8eb}
.participant-progress .progress-bar{background:linear-gradient(90deg,var(--burgundy),var(--gold))}
.participant-card .table td,.participant-card .table th{padding:.7rem .5rem}
@media(max-width:575px){.participant-card{padding:22px 18px}.participant-profile{padding:18px}.participant-event{padding:15px}}


/* =========================================================
   PORTAL PESERTA - PREMIUM BURGUNDY & GOLD
   Hover lift, reveal motion, responsive participant dashboard
   ========================================================= */
.participant-bg{min-height:100vh;background:#f7f2ef;color:#332832}
.participant-shell{min-height:100vh;overflow:hidden}
.participant-top{position:relative;z-index:3;background:linear-gradient(110deg,#421226,#762d49);color:#fff;border-bottom:2px solid #c5a15b;padding:15px 0;box-shadow:0 5px 22px #2d0b1b25}
.participant-brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;letter-spacing:.09em}
.participant-brand strong{display:block;font-family:Georgia,serif;font-size:1.1rem;letter-spacing:.12em}
.participant-brand small{display:block;color:#e7d5d9;font-size:.63rem;letter-spacing:.18em;margin-top:3px}
.brand-seal{display:grid;place-items:center;width:43px;height:43px;border:1px solid #d4b66e;border-radius:50%;color:#f1d58b;font-family:Georgia,serif;font-weight:800;font-size:.75rem;box-shadow:inset 0 0 0 3px #ffffff12}
.top-meta{display:flex;align-items:center;gap:18px;color:#f4e9e9;font-size:.85rem}
.logout-btn{border-radius:9px;color:#5a1d36;border:1px solid #e5cf9b;font-weight:700}
.participant-hero{position:relative;color:#fff;background:radial-gradient(ellipse at 83% 12%,#9b5267 0,transparent 34%),linear-gradient(115deg,#421226 0%,#762d49 58%,#5b1d36 100%);min-height:245px;overflow:hidden}
.participant-hero:before{content:"";position:absolute;width:560px;height:560px;border:1px solid #d8bd7b55;border-radius:50%;right:-120px;top:-365px;box-shadow:0 0 0 22px #ffffff08,0 0 0 46px #ffffff06}
.participant-hero:after{content:"✦  ✧  ✦";position:absolute;right:7%;bottom:26px;color:#d7bd7c66;font-size:2.1rem;letter-spacing:1.3rem;transform:rotate(-12deg)}
.hero-inner{position:relative;display:flex;align-items:center;min-height:245px;padding-top:28px;padding-bottom:50px}
.hero-copy{position:relative;z-index:1;max-width:780px;animation:portalRise .7s ease both}
.hero-kicker,.section-kicker{font-size:.66rem;font-weight:850;letter-spacing:.18em;color:#c5a15b}
.hero-copy h1{font-family:Georgia,serif;font-weight:500;font-size:clamp(1.8rem,3vw,2.8rem);line-height:1.2;margin:13px 0 10px}
.hero-copy h1 span:first-child{color:#f3dfaa}
.hero-copy p{color:#f3e9eb;max-width:650px;margin:0;font-size:.98rem}
.wave{display:inline-block;color:#e7c978;font-size:1.2rem;animation:softWave 2.4s ease-in-out infinite}
.hero-ornament{position:absolute;right:13%;top:25px;width:190px;height:190px;border:1px solid #d5b66c55;border-radius:50%;display:grid;place-items:center;opacity:.6}
.ornament-ring{width:130px;height:130px;border:1px solid #d5b66c88;border-radius:50%;box-shadow:0 0 0 15px #ffffff08}
.ornament-star{position:absolute;color:#e2c77e;font-size:2rem}
.participant-main{position:relative;margin-top:-36px;padding-bottom:38px;z-index:2}
.overview-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(330px,1fr);gap:18px}
.identity-card,.progress-card,.quick-card,.schedule-card,.notice-card{background:#fff;border:1px solid #eee3e5;border-radius:17px;box-shadow:0 12px 35px #4b1b2b0d}
.identity-card{display:flex;align-items:center;gap:25px;padding:27px;min-height:218px;animation:portalRise .65s .05s ease both}
.identity-emblem{flex:0 0 112px;height:112px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle,#8a3b55,#541b32);border:5px solid #f2e8e9;outline:1px solid #d8c18b;color:#f3d98e;box-shadow:0 8px 20px #541b3225}
.identity-emblem span{font-family:Georgia,serif;font-size:1.55rem;font-weight:bold}
.identity-emblem small{font-size:.48rem;letter-spacing:.15em}
.identity-content{min-width:0}
.identity-content h2{font-size:1.25rem;font-weight:800;color:#381627;margin:7px 0}
.identity-nip{font-size:.88rem;color:#6e5c65;margin-bottom:13px}
.identity-detail{display:flex;align-items:flex-start;gap:10px;color:#5d4c55;font-size:.88rem;margin-top:7px}
.detail-icon{color:#8a3652;font-size:1rem;min-width:17px}
.progress-card{padding:24px 25px;animation:portalRise .65s .13s ease both}
.progress-summary{display:flex;align-items:center;gap:20px;margin:17px 0}
.progress-ring{--progress:0;flex:0 0 104px;width:104px;height:104px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#8a3652 calc(var(--progress)*1%),#eee8e9 0);position:relative}
.progress-ring:before{content:"";position:absolute;inset:9px;background:#fff;border-radius:50%}
.progress-ring>div{position:relative;text-align:center;display:flex;flex-direction:column}
.progress-ring strong{font-size:1.55rem;color:#39172a;line-height:1.2}
.progress-ring small{font-size:.68rem;color:#877780}
.progress-copy{flex:1;min-width:0;color:#4b3540}
.progress-copy>strong{font-size:.88rem}
.progress-numbers{font-size:1.05rem;font-weight:800;color:#4a1c31;margin:5px 0 9px}
.progress-numbers span{font-size:.8rem;font-weight:500;color:#796b72}
.progress-line{height:8px;border-radius:20px;background:#eee8ea;overflow:hidden}
.progress-line .progress-bar{background:linear-gradient(90deg,#762d49,#c5a15b);border-radius:20px;transition:width .9s ease}
.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.mini-stat{border-radius:11px;padding:10px 8px;text-align:center;border:1px solid #eee9e8;display:flex;flex-direction:column;gap:2px}
.mini-stat strong{font-size:1.15rem}
.mini-stat span{font-size:.7rem;color:#766b70}
.stat-present{background:#f1f8f2;color:#287449;border-color:#e0eee3}
.stat-late{background:#fff8eb;color:#a36a12;border-color:#f3e8d0}
.stat-pending{background:#f6f5f5;color:#665f65}
.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0}
.quick-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;text-decoration:none;color:#4a1b31;padding:18px 19px;min-height:130px;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;animation:portalRise .65s .2s ease both}
.quick-icon{display:grid;place-items:center;width:39px;height:39px;border-radius:12px;background:#f7e9ed;color:#762d49;font-size:1.25rem;margin-bottom:10px}
.quick-card strong{font-size:.91rem}
.quick-card small{font-size:.73rem;color:#81747a;margin-top:3px}
.quick-arrow{position:absolute;right:17px;top:23px;font-size:1.45rem;color:#9b6b7b}
.schedule-card{padding:24px;margin-top:18px;scroll-margin-top:20px;animation:portalRise .7s .25s ease both}
.schedule-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:17px}
.schedule-heading h2{font-size:1.22rem;font-weight:800;color:#45182e;margin:5px 0}
.schedule-heading p{font-size:.83rem;color:#83747c;margin:0}
.schedule-meta{display:flex;align-items:center;gap:10px;background:#faf6f3;border:1px solid #f0e7df;padding:10px 14px;border-radius:12px;white-space:nowrap}
.meta-calendar{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#f2e3e7;color:#762d49;font-size:1.2rem}
.schedule-meta strong,.schedule-meta small{display:block;font-size:.76rem}
.schedule-meta small{color:#887a80;margin-top:3px}
.schedule-progress{display:flex;justify-content:space-between;gap:10px;font-size:.78rem;color:#7c6e75;margin-bottom:7px}
.schedule-progress strong{color:#5a263e}
.schedule-table{min-width:850px}
.schedule-table thead th{background:#64233e;color:#fff;border:0;font-size:.7rem;letter-spacing:.05em;padding:12px 10px;white-space:nowrap}
.schedule-table thead th:first-child{border-radius:9px 0 0 9px}
.schedule-table thead th:last-child{border-radius:0 9px 9px 0}
.schedule-table tbody td{padding:11px 10px;border-bottom:1px solid #f0e9eb;font-size:.77rem;vertical-align:middle}
.schedule-table tbody tr{transition:background .2s ease}
.schedule-table tbody tr:hover{background:#fcf7f8}
.row-number{display:grid;place-items:center;width:29px;height:29px;border-radius:50%;background:#f5e7eb;color:#762d49;font-weight:800;font-size:.72rem}
.date-cell{white-space:nowrap;color:#6d6067}
.material-cell{font-weight:700;color:#402032;min-width:240px}
.time-cell{white-space:nowrap;color:#6d6067}
.status-pill{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border-radius:30px;font-size:.67rem;font-weight:700;white-space:nowrap}
.status-done{background:#eaf5ed;color:#287448}
.status-open{background:#fff5df;color:#9b6a13}
.status-wait{background:#f1eff0;color:#776c72}
.status-sub{display:block;font-size:.65rem;color:#82777d;margin:4px 0 0 2px}
.action-btn{font-size:.68rem;white-space:nowrap;border-radius:8px}
.action-muted{color:#b3aab0}
.notice-card{display:flex;align-items:flex-start;gap:17px;padding:21px 24px;margin-top:18px;background:linear-gradient(110deg,#fff,#fbf2f3);scroll-margin-top:20px}
.notice-symbol{display:grid;place-items:center;flex:0 0 43px;height:43px;border-radius:50%;background:#f3e1e7;color:#8a3652;font-size:1.5rem}
.notice-card .section-kicker{font-size:.8rem;color:#762d49;letter-spacing:.06em;margin:3px 0 7px}
.notice-card ul{padding-left:18px;margin:0;color:#6d5d65;font-size:.8rem;line-height:1.8}
.participant-footer{background:linear-gradient(110deg,#421226,#762d49);border-top:3px solid #c5a15b;color:#f4e8e9;text-align:center;padding:25px 15px;font-size:.78rem}
.footer-brand{font-family:Georgia,serif;font-size:1rem;letter-spacing:.16em;color:#e8ce8c;font-weight:bold;margin-bottom:5px}
.participant-footer small{display:block;color:#d6bdc5;margin-top:4px}
.login-stage{min-height:calc(100vh - 75px);display:grid;place-items:center;padding-top:45px;padding-bottom:45px}
.login-panel{width:min(100%,480px);background:#fff;border:1px solid #eee3e5;border-radius:20px;padding:36px;box-shadow:0 18px 55px #4b1b2b14;animation:portalRise .55s ease both}
.login-panel h1{font-family:Georgia,serif;color:#42172d;font-size:1.8rem;margin:9px 0}
.login-panel p{color:#80727a;font-size:.9rem}
.login-note{font-size:.75rem;color:#8b7d83;margin-top:18px}
.hover-lift{transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s ease,border-color .28s ease}
.hover-lift:hover{transform:translateY(-6px);box-shadow:0 18px 42px #4b1b2b19;border-color:#d9c18a}
@keyframes portalRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes softWave{0%,100%{transform:rotate(0)}50%{transform:rotate(12deg) translateY(-3px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:991px){.overview-grid{grid-template-columns:1fr}.quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-ornament{right:5%;opacity:.3}}
@media(max-width:575px){.participant-top{padding:12px 0}.participant-brand strong{font-size:.86rem}.participant-brand small{font-size:.52rem}.brand-seal{width:37px;height:37px}.top-meta{gap:7px;font-size:.7rem}.participant-hero,.hero-inner{min-height:225px}.hero-inner{padding-top:24px;padding-bottom:48px}.hero-copy h1{font-size:1.75rem}.hero-copy p{font-size:.85rem;max-width:90%}.hero-ornament{right:-60px;top:30px;transform:scale(.7)}.participant-main{margin-top:-28px}.identity-card{padding:20px;gap:15px;align-items:flex-start}.identity-emblem{flex-basis:70px;height:70px;border-width:3px}.identity-emblem span{font-size:1.1rem}.identity-emblem small{font-size:.36rem}.identity-content h2{font-size:1rem}.identity-nip,.identity-detail{font-size:.75rem}.progress-card{padding:19px}.progress-summary{gap:13px}.progress-ring{flex-basis:88px;width:88px;height:88px}.progress-ring strong{font-size:1.3rem}.mini-stat{padding:8px 4px}.mini-stat span{font-size:.63rem}.quick-grid{gap:9px}.quick-card{padding:14px;min-height:119px}.quick-card strong{font-size:.8rem}.quick-card small{font-size:.66rem}.quick-arrow{right:11px;top:18px}.schedule-card{padding:16px 12px}.schedule-heading{align-items:flex-start;flex-direction:column}.schedule-heading h2{font-size:1.05rem}.schedule-meta{white-space:normal}.schedule-progress{font-size:.7rem}.notice-card{padding:17px 15px;gap:12px}.notice-card ul{font-size:.73rem}.login-panel{padding:25px 21px}}


/* LOGIN PORTAL PESERTA - MATCHING PREMIUM DASHBOARD */
.login-stage{
  min-height:calc(100vh - 75px);
  padding:56px 18px;
  background:
    radial-gradient(ellipse at 15% 18%,#ead9df 0,transparent 32%),
    radial-gradient(ellipse at 88% 82%,#eee2d5 0,transparent 34%);
}
.login-panel{
  position:relative;
  width:min(100%,520px);
  padding:46px 46px 38px;
  border:1px solid #eadfe1;
  border-radius:24px;
  overflow:hidden;
  box-shadow:0 24px 70px #4b1b2b18,0 3px 12px #4b1b2b08;
  animation:portalRise .65s cubic-bezier(.2,.8,.2,1) both;
}
.login-panel:before{
  content:"";
  position:absolute;
  left:0;right:0;top:0;height:5px;
  background:linear-gradient(90deg,#541b32,#762d49 58%,#c5a15b);
}
.login-panel:after{
  content:"✦";
  position:absolute;
  right:28px;top:23px;
  color:#c5a15b;
  opacity:.45;
  font-size:1.5rem;
  pointer-events:none;
}
.login-panel .eyebrow{
  display:flex;align-items:center;gap:9px;
  margin-bottom:10px;
}
.login-panel .eyebrow:before{
  content:"";
  display:inline-block;width:25px;height:1px;background:#c5a15b;
}
.login-panel h1{
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(1.75rem,4vw,2.05rem);
  line-height:1.2;
  letter-spacing:-.02em;
  margin:10px 0 12px;
  color:#42172d;
}
.login-panel p{
  max-width:390px;
  font-size:.94rem;
  line-height:1.65;
  color:#786a72;
}
.login-panel .form-label{
  font-size:.86rem;
  font-weight:700;
  color:#503342;
  margin-bottom:8px;
}
.login-panel .form-control{
  min-height:52px;
  border-radius:12px;
  font-size:1rem;
  padding:13px 16px;
  background:#fffdfd;
}
.login-panel .btn-burgundy{
  min-height:52px;
  border-radius:12px;
  font-size:.98rem;
  font-weight:750;
  letter-spacing:.01em;
  box-shadow:0 7px 16px #762d4925;
  transition:transform .22s ease,box-shadow .22s ease,background .22s ease;
}
.login-panel .btn-burgundy:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 22px #762d4933;
}
.login-note{
  border-top:1px solid #f0e8e9;
  padding-top:15px;
  margin-top:21px;
  line-height:1.6;
  font-size:.78rem;
}
.login-panel .alert{font-size:.86rem}
@media(max-width:575px){
  .login-stage{min-height:calc(100vh - 65px);padding:30px 14px}
  .login-panel{padding:36px 25px 28px;border-radius:20px}
  .login-panel:after{right:20px;top:17px}
  .login-panel h1{font-size:1.7rem}
  .login-panel p{font-size:.86rem}
}


/* PREMIUM BUTTON HOVER / FOCUS / ACTIVE INTERACTIONS */
.btn,
button,
a.btn,
.login-panel .btn-burgundy,
.action-btn,
.logout-btn{
  position:relative;
  overflow:hidden;
  transform:translateZ(0);
  transition:
    transform .24s cubic-bezier(.2,.8,.2,1),
    box-shadow .24s ease,
    background-color .24s ease,
    border-color .24s ease,
    color .24s ease,
    filter .24s ease;
}
.btn:before,
button:before,
a.btn:before{
  content:"";
  position:absolute;
  top:-40%;
  left:-75%;
  width:45%;
  height:180%;
  transform:skewX(-22deg);
  background:linear-gradient(90deg,transparent,#ffffff55,transparent);
  transition:left .55s cubic-bezier(.2,.7,.2,1);
  pointer-events:none;
}
.btn:hover:before,
button:hover:before,
a.btn:hover:before{left:135%}
.btn:hover,
button:hover,
a.btn:hover{
  transform:translateY(-3px);
  filter:brightness(1.045);
  box-shadow:0 10px 22px #541b3228;
}
.btn:active,
button:active,
a.btn:active{
  transform:translateY(-1px) scale(.985);
  box-shadow:0 4px 10px #541b3220;
}
.btn:focus-visible,
button:focus-visible,
a.btn:focus-visible{
  outline:3px solid #c5a15b99;
  outline-offset:3px;
  box-shadow:0 0 0 5px #c5a15b22;
}
.btn-burgundy:hover,
.login-panel .btn-burgundy:hover{
  background:linear-gradient(105deg,#541b32,#8a3b57);
  border-color:#c5a15b;
  color:#fff;
}
.btn-outline-burgundy:hover,
.logout-btn:hover{
  color:#fff;
  background:#762d49;
  border-color:#c5a15b;
}
.quick-card:hover .quick-icon{
  transform:translateY(-2px) rotate(-5deg);
  background:#762d49;
  color:#f5dfa4;
}
.quick-icon{transition:transform .25s ease,background .25s ease,color .25s ease}
@media(prefers-reduced-motion:reduce){
  .btn,.btn:before,button,button:before,a.btn,a.btn:before,.quick-icon{
    transition:none!important;
    animation:none!important;
  }
  .btn:hover,button:hover,a.btn:hover{transform:none}
}
