:root{--ink:#101820;--muted:#667085;--line:#d8e0ea;--paper:#f7fafc;--brand:#0a5c55;--accent:#f0b429;--deep:#062d2a}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--ink);background:var(--paper);margin:0;font-family:Arial,Pretendard,Noto Sans KR,sans-serif}a{color:inherit;text-decoration:none}.site-header{z-index:10;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#f7fafceb;justify-content:space-between;align-items:center;gap:24px;padding:18px clamp(20px,5vw,72px);display:flex;position:sticky;top:0}.brand{letter-spacing:-.03em;align-items:center;gap:12px;font-weight:800;display:flex}.brand-mark{background:var(--deep);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:46px;height:46px;font-size:13px;display:inline-flex}nav{color:#344054;align-items:center;gap:10px 18px;font-size:15px;line-height:1;display:flex}nav>a{align-items:center;min-height:38px;display:inline-flex}main{min-height:72vh}.hero{color:#fff;background:linear-gradient(110deg,#062d2af5 0%,#062d2ac7 42%,#062d2a57 100%),radial-gradient(circle at 76% 28%,#f0b42973,#0000 28%),linear-gradient(145deg,#0a5c55,#0d333a 55%,#101820);align-items:center;min-height:calc(100svh - 83px);padding:clamp(56px,8vw,110px) clamp(20px,6vw,96px);display:grid}.hero-content{max-width:780px}.eyebrow{color:#f9d981;letter-spacing:.08em;text-transform:uppercase;font-size:13px;font-weight:800}h1{letter-spacing:-.075em;margin:16px 0;font-size:clamp(42px,7vw,96px);line-height:.96}h2{letter-spacing:-.055em;margin:0 0 18px;font-size:clamp(30px,4vw,56px)}h3{letter-spacing:-.035em;margin:0 0 10px;font-size:22px}p{line-height:1.7}.hero p{color:#ffffffd1;max-width:620px;font-size:18px}.actions{flex-wrap:wrap;gap:12px;margin-top:30px;display:flex}.button{background:var(--accent);min-height:48px;color:var(--ink);cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;padding:0 20px;font-weight:800;display:inline-flex}.button.secondary{color:#fff;background:#ffffff1f;border:1px solid #ffffff4d}.section{padding:clamp(54px,8vw,108px) clamp(20px,6vw,96px)}.section.dark{background:var(--deep);color:#fff}.grid{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;display:grid}.panel{background:#fff;padding:28px}.dark .panel{background:#ffffff0f}.meta{color:var(--muted);font-size:14px}.dark .meta{color:#ffffffad}.kpi{letter-spacing:-.06em;color:var(--brand);font-size:44px;font-weight:900}.list{gap:12px;display:grid}.row{border-bottom:1px solid var(--line);justify-content:space-between;gap:18px;padding:16px 0;display:flex}.status{color:var(--brand);background:#e6f4f1;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:800;display:inline-flex}.form{gap:16px;max-width:880px;display:grid}.field{gap:6px;display:grid}label{font-weight:800}input,select,textarea{border:1px solid var(--line);width:100%;min-height:46px;font:inherit;background:#fff;border-radius:12px;padding:12px 14px}.two-col{grid-template-columns:1fr 1fr;gap:16px;display:grid}.site-footer{color:#fff;background:#101820;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding:42px clamp(20px,6vw,96px);display:grid}.site-footer p{color:#ffffffb3;margin:6px 0 0;font-size:14px}.qr-box{aspect-ratio:1;background:repeating-linear-gradient(45deg,#0a5c55 0 12px,#fff 12px 24px);border:16px solid #fff;place-items:center;width:min(360px,90vw);display:grid;box-shadow:0 20px 60px #00000038}.qr-box span{background:#fff;padding:10px 14px;font-weight:900}@media (max-width:840px){.site-header{flex-direction:column;align-items:flex-start}nav{flex-wrap:wrap;align-items:center}.grid,.site-footer,.two-col{grid-template-columns:1fr}h1{font-size:48px}}.auth-nav{border-left:1px solid var(--line);align-items:center;gap:10px;min-height:38px;padding-left:6px;display:inline-flex}.auth-nav>a{align-items:center;min-height:38px;display:inline-flex}.auth-pill{background:var(--deep);color:#fff;border-radius:999px;min-height:38px;padding:0 12px;font-weight:800}.auth-user{min-height:38px;color:var(--brand);align-items:center;font-weight:900;display:inline-flex}.link-button{color:#344054;min-height:38px;font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;padding:0;line-height:1;display:inline-flex}.button.light{color:var(--ink);border:1px solid var(--line);background:#fff}.button.small{min-height:34px;padding:0 12px;font-size:12px}.button.danger{color:#b42318;background:#fee4e2}.actions.compact{gap:6px;margin-top:0}.status.muted{color:#667085;background:#f2f4f7}.terms-panel{gap:12px;display:grid}.terms-box{white-space:pre-wrap;border:1px solid var(--line);color:#344054;background:#fbfdff;border-radius:14px;max-height:220px;padding:16px;line-height:1.7;overflow:auto}.disabled-label{color:#98a2b3}.success-panel{gap:12px;max-width:820px;display:grid}.table-wrap{border:1px solid var(--line);background:#fff;width:100%;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;min-width:760px}.data-table th,.data-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:12px 14px;font-size:14px}.data-table th{color:var(--deep);background:#f2f7f6;font-weight:900}.section-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.inline-fields{grid-template-columns:120px 90px minmax(180px,1fr) auto;align-items:center;gap:8px;display:grid}.inline-fields input,.inline-fields select{border-radius:10px;min-height:38px;padding:8px 10px}.qr-box.real{background:#fff;border:10px solid #fff}.qr-box.real svg{width:100%;max-width:300px;height:auto}.qr-panel{text-align:center;align-items:center}.badge-success{color:#027a48;vertical-align:middle;background:#ecfdf3;border-radius:999px;margin-left:8px;padding:4px 8px;font-size:12px;display:inline-flex}.break-all{word-break:break-all}@media (max-width:840px){.auth-nav{border-left:0;padding-left:0}.data-table{min-width:680px}.section-heading{flex-direction:column}.inline-fields{grid-template-columns:1fr}}.button:disabled{opacity:.52;cursor:not-allowed;filter:grayscale(.25)}.course-card{flex-direction:column;gap:10px;display:flex}.course-actions{flex-wrap:wrap;gap:10px;margin-top:auto;padding-top:8px;display:flex}.card-feedback{border-radius:14px;padding:12px 14px;font-size:14px;font-weight:800;line-height:1.5}.card-feedback.info{color:#175cd3;background:#eef6ff}.card-feedback.success{color:#027a48;background:#ecfdf3}.card-feedback.warning{color:#b54708;background:#fffaeb}.card-feedback.error{color:#b42318;background:#fef3f2}.operator-qr-controls{gap:12px;padding-top:4px;display:grid}.compact-field input,.compact-field select{border-radius:10px;min-height:40px;padding:8px 10px}.qr-day-list{gap:12px;margin-top:4px;display:grid}.qr-day-row{border:1px solid var(--line);background:#fbfdff;border-radius:18px;gap:10px;padding:14px;display:grid}.qr-day-main{flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:14px;display:flex}.qr-day-main strong{color:var(--deep);font-size:16px}.qr-day-main span:not(.badge-success){color:#475467}.qr-day-sessions{color:var(--muted);gap:4px;font-size:12px;line-height:1.45;display:grid}.inline-qr-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.mini-qr-card{border:1px solid var(--line);background:#fbfdff;border-radius:18px;gap:10px;padding:14px;display:grid}.qr-box.mini{border-width:8px;justify-self:center;width:min(180px,100%);box-shadow:0 10px 30px #0000001f}.qr-box.mini svg{max-width:180px}.qr-fullscreen{z-index:100;color:#fff;background:radial-gradient(circle at 18% 10%,#f0b42938,#0000 30%),linear-gradient(145deg,#062d2a,#101820);grid-template-rows:auto 1fr;gap:24px;padding:clamp(18px,3vw,44px);display:grid;position:fixed;inset:0}.qr-fullscreen-topbar{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.qr-fullscreen-topbar h2{color:#fff;margin-top:10px}.qr-close-small{min-height:36px;padding:0 14px;font-size:12px}.qr-fullscreen-body{grid-template-columns:minmax(280px,560px) minmax(260px,1fr);justify-content:center;align-items:center;gap:clamp(20px,5vw,72px);min-height:0;display:grid}.fullscreen-qr{border-width:18px;justify-self:center;width:min(560px,80vmin);box-shadow:0 28px 90px #00000073}.fullscreen-qr svg{max-width:520px}.qr-fullscreen-info{max-width:640px}.qr-fullscreen-info h3{color:#fff;font-size:clamp(26px,3.6vw,48px)}.qr-fullscreen-info p{color:#ffffffd6;font-size:18px}.qr-fullscreen-info .meta{color:#ffffffa8;font-size:14px}.qr-warning{background:#fffaeb;border:1px solid #fdb0226b;border-radius:16px;padding:12px 14px;font-weight:900;color:#fdb022!important}.my-classroom,.my-course-list{gap:18px;display:grid}.my-course-card{border:1px solid var(--line);background:#fff;border-radius:28px;gap:16px;padding:clamp(20px,3vw,30px);display:grid;box-shadow:0 18px 45px #1018280f}.my-course-top{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.my-course-top h3{margin-top:10px}.rate-badge{width:88px;height:88px;color:var(--brand);background:#fbfdff;border:8px solid #e6f4f1;border-radius:50%;flex:none;place-items:center;display:grid}.rate-badge.pass{color:#027a48;border-color:#12b76a}.rate-badge strong{letter-spacing:-.05em;font-size:24px}.rate-badge span{color:var(--muted);font-size:12px;font-weight:900}.my-course-summary{border:1px solid var(--line);background:var(--line);border-radius:18px;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.my-course-summary div,.my-day-meta-grid div{background:#fbfdff;gap:6px;padding:14px;display:grid}.my-course-summary span,.my-day-meta-grid span{color:var(--muted);font-size:12px;font-weight:800}.my-course-summary strong,.my-day-meta-grid strong{color:var(--deep);font-size:14px;line-height:1.45}.progress-track{background:#eef4f8;border-radius:999px;height:12px;overflow:hidden}.progress-track span{border-radius:inherit;background:linear-gradient(90deg, var(--brand), var(--accent));height:100%;display:block}.my-day-list{gap:12px;padding-top:4px;display:grid}.my-day-card{border:1px solid var(--line);background:#fbfdff;border-radius:20px;gap:12px;padding:16px;display:grid}.my-day-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.my-day-head strong{color:var(--deep);font-size:17px}.day-attendance{white-space:nowrap;border-radius:999px;align-items:center;min-height:30px;padding:0 10px;font-size:12px;font-weight:900;display:inline-flex}.day-attendance.success{color:#027a48;background:#ecfdf3}.day-attendance.warning{color:#b54708;background:#fffaeb}.day-attendance.muted{color:#667085;background:#f2f4f7}.my-day-meta-grid{border:1px solid var(--line);background:var(--line);border-radius:16px;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.my-session-list{color:#475467;gap:6px;font-size:13px;line-height:1.5;display:grid}.my-detail-modal{z-index:96;color:var(--ink);background:radial-gradient(circle at 18% 10%,#f0b4292e,#0000 32%),linear-gradient(145deg,#f7fafc,#eef6f5);grid-template-rows:auto minmax(0,1fr);gap:18px;padding:clamp(18px,3vw,44px);display:grid;position:fixed;inset:0}.my-detail-topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:18px;padding-bottom:18px;display:flex}.my-detail-topbar h2{max-width:960px;margin:10px 0 8px}.my-detail-topbar .meta{margin:0}.my-detail-close{flex:none}.my-detail-body{align-content:start;justify-self:center;gap:16px;width:min(1180px,100%);min-height:0;padding-right:4px;display:grid;overflow-y:auto}.my-detail-summary{border:1px solid var(--line);background:var(--line);border-radius:18px;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.my-detail-summary div{background:#fff;gap:6px;padding:16px;display:grid}.my-detail-summary span{color:var(--muted);font-size:12px;font-weight:800}.my-detail-summary strong{color:var(--deep);font-size:15px}@media (max-width:840px){.course-actions .button{width:100%}.inline-qr-grid{grid-template-columns:1fr}.qr-fullscreen{padding:18px}.qr-fullscreen-topbar{flex-direction:column;align-items:stretch}.qr-fullscreen-body{grid-template-columns:1fr;align-content:start}.fullscreen-qr{width:min(100%,76vh)}.my-course-top{flex-direction:column}.rate-badge{border-width:6px;width:76px;height:76px}.my-course-summary,.my-day-meta-grid{grid-template-columns:1fr}.my-day-head{flex-direction:column}.my-detail-modal{padding:18px}.my-detail-topbar{flex-direction:column}.my-detail-close{align-self:flex-start}.my-detail-summary{grid-template-columns:1fr}}.qr-result-card{border:1px solid var(--line);border-radius:30px;gap:16px;max-width:840px;display:grid;box-shadow:0 20px 60px #10182814}.qr-result-card.success{background:linear-gradient(#fff,#f0fdf6);border-color:#12b76a73}.qr-result-card.warning,.qr-result-card.loading,.qr-result-card.idle{background:linear-gradient(#fff,#fffbeb);border-color:#f0b4297a}.qr-result-card.error{background:linear-gradient(#fff,#fff5f4);border-color:#f0443861}.qr-result-card h3{letter-spacing:-.055em;color:var(--deep);margin:0;font-size:clamp(25px,4vw,42px)}.qr-result-icon{background:var(--deep);color:#fff;border-radius:24px;place-items:center;width:76px;height:76px;font-size:42px;font-weight:900;line-height:1;display:grid}.qr-result-card.success .qr-result-icon{background:#12b76a}.qr-result-card.warning .qr-result-icon,.qr-result-card.loading .qr-result-icon,.qr-result-card.idle .qr-result-icon{color:var(--ink);background:#f0b429}.qr-result-card.error .qr-result-icon{background:#f04438}.qr-result-message{color:#344054;max-width:720px;margin:0;font-size:clamp(17px,2.3vw,21px);font-weight:800;line-height:1.55}.qr-result-detail{border:1px solid var(--line);background:var(--line);border-radius:18px;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.qr-result-detail div{background:#ffffffd1;gap:7px;padding:15px;display:grid}.qr-result-detail span{color:var(--muted);font-size:12px;font-weight:900}.qr-result-detail strong{color:var(--deep);font-size:14px;line-height:1.45}.course-attendance-alert{border:1px solid var(--line);background:#fbfdff;border-radius:18px;gap:6px;padding:14px 16px;display:grid}.course-attendance-alert span{color:var(--muted);font-size:12px;font-weight:900}.course-attendance-alert strong{color:var(--deep);letter-spacing:-.03em;font-size:18px}.course-attendance-alert p{color:#475467;margin:0;font-size:13px;line-height:1.55}.course-attendance-alert.success{background:#ecfdf3;border-color:#12b76a6b}.course-attendance-alert.success strong{color:#027a48}.course-attendance-alert.warning{background:#fffaeb;border-color:#f0b4297a}.course-attendance-alert.warning strong{color:#b54708}.course-attendance-alert.muted{background:#f9fafb;border-color:#e4e7ec}.course-attendance-alert.muted strong{color:#667085}@media (max-width:840px){.qr-result-card{border-radius:22px}.qr-result-icon{border-radius:20px;width:64px;height:64px;font-size:34px}.qr-result-detail{grid-template-columns:1fr}}.preview-banner{z-index:9;color:#93370d;background:#fffaeb;border-bottom:1px solid #fedf89;padding:10px clamp(20px,5vw,72px);font-size:13px;font-weight:900;position:sticky;top:83px}.demo-login-panel{background:linear-gradient(#fff,#fffbeb);border:1px solid #fedf89;gap:12px;display:grid}.demo-login-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.demo-login-button{text-align:left;border-radius:18px;flex-direction:column;align-items:flex-start;gap:6px;min-height:86px}.demo-login-button span{color:var(--muted);font-size:12px;font-weight:700;line-height:1.4}@media (max-width:840px){.preview-banner{position:static}.demo-login-grid{grid-template-columns:1fr}}
