:root{--green:#217a45;--green-dark:#155d34;--green-soft:#edf6e8;--yellow:#f3c629;--yellow-soft:#fff7d7;--ink:#203126;--muted:#6d7c71;--line:#dfe9db;--white:#fff;--danger:#b63b36;--orange:#d89016;--shadow:0 16px 40px rgba(38,73,45,.10)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Pretendard,Apple SD Gothic Neo,Noto Sans KR,system-ui,sans-serif;color:var(--ink);background:linear-gradient(180deg,#f8fbf2,#f4f8ee 55%,#fff);min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}.app-shell{width:min(100%,620px);margin:0 auto;padding:18px 16px 50px}.brand-header{display:flex;justify-content:center;padding:8px 8px 17px}.myung-logo{width:min(74%,330px);height:auto;display:block}.hero-card,.panel{background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:28px;padding:26px;box-shadow:var(--shadow)}.hero-card{text-align:center}.ongi-logo{width:min(86%,390px);max-height:160px;object-fit:contain;margin:4px auto 13px;display:block}.eyebrow{margin:0 0 7px;color:var(--green);font-weight:800;font-size:13px}.hero-card h1{font-size:clamp(30px,8vw,43px);margin:0;letter-spacing:-1.8px;line-height:1.08}h2{font-size:26px;margin:0 0 9px;letter-spacing:-1px}h3{margin:0}.hero-subtitle,.panel-intro{color:var(--muted);line-height:1.65;margin:13px 0 20px}.hero-rule{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:7px;gap:7px;margin:18px 0}.hero-rule span{background:var(--green-soft);color:var(--green-dark);border-radius:999px;padding:9px 4px;font-weight:800;font-size:13px}.photo-notice{background:var(--yellow-soft);border:1px solid #f2dc7d;border-radius:19px;padding:16px 12px;display:grid;grid-gap:5px;gap:5px;margin:18px 0}.photo-notice strong{color:#685500}.photo-notice span{font-size:14px}.photo-notice small{color:#8b7a33}.status-card,.summary-card{background:#f7faf5;border-radius:18px;padding:9px 15px;margin:18px 0}.status-card div,.summary-card div{display:flex;justify-content:space-between;gap:14px;padding:8px 0;border-bottom:1px solid #e5ece2;align-items:center}.status-card div:last-child,.summary-card div:last-child{border-bottom:0}.status-card span,.summary-card span{color:var(--muted);font-size:13px;text-align:left}.status-card strong,.summary-card strong{text-align:right;font-size:14px}.home-message{color:var(--muted);font-size:14px;min-height:20px}.dev-badge,.pill{display:inline-block;font-size:12px;font-weight:800;padding:6px 10px;border-radius:999px}.dev-badge{color:#8b3c00;background:#fff0df;border:1px solid #f2bd85}.pill{background:var(--green-soft);color:var(--green-dark)}.button{width:100%;border-radius:15px;padding:15px 18px;border:0;font-weight:850;margin-top:9px;transition:.15s}.button:disabled{opacity:.45;cursor:not-allowed}.button:not(:disabled):active{transform:translateY(1px) scale(.995)}.primary{background:var(--green);color:#fff}.secondary{background:#fff;color:var(--green-dark);border:1.5px solid #8db799}.accent{background:var(--yellow);color:#3f3600}.danger{background:#fff0ef;color:#8e322f;border:1px solid #e8b5b2}.footer{text-align:center;color:#879188;font-size:12px;padding:22px 0 8px}.back-link,.text-button{border:0;background:transparent;color:var(--green-dark);font-weight:800}.back-link{padding:10px 5px 14px}.text-button{font-size:12px;padding:6px 0}.form-grid{display:grid;grid-gap:17px;gap:17px}.form-grid label{display:grid;grid-gap:7px;gap:7px;font-weight:750;font-size:14px}.form-grid b,legend b{color:#d64535}input,select,textarea{width:100%;border:1.5px solid #d8e2d5;border-radius:13px;background:#fff;padding:13px 14px;outline:none;color:var(--ink)}input:focus,select:focus,textarea:focus{border-color:#6ca17b;box-shadow:0 0 0 3px rgba(63,130,80,.1)}textarea{min-height:150px;resize:vertical;line-height:1.6}label small{color:var(--muted);font-weight:500;line-height:1.45}fieldset{border:0;padding:0;margin:0}legend{font-weight:750;font-size:14px;margin-bottom:9px}.course-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:8px;gap:8px}.choice input{position:absolute;opacity:0;pointer-events:none}.choice span{border:1.5px solid #dbe5d8;border-radius:14px;display:grid;padding:11px 6px;text-align:center;background:#fff;grid-gap:2px;gap:2px}.choice input:checked+span{border-color:var(--green);background:var(--green-soft);color:var(--green-dark)}.choice small{font-size:11px}.consent-box{grid-template-columns:24px 1fr!important;background:#f8faf7;border:1px solid var(--line);padding:14px;border-radius:15px;align-items:flex-start}.consent-box input{width:20px;height:20px;margin:2px 0 0}.consent-box span{display:grid;grid-gap:5px;gap:5px}.login-guide{padding:12px 14px;border-radius:14px;background:#f6f8ed;border:1px solid rgba(65,96,45,.15);color:#3f5134;font-size:.92rem;line-height:1.55}.center-panel{text-align:center;margin-top:60px}.big-icon{font-size:46px}.dashboard-title-row{display:flex;justify-content:space-between;gap:15px;align-items:flex-start}.progress-block{margin:19px 0}.progress-label{display:flex;justify-content:space-between;margin-bottom:8px;font-size:13px}.progress-track{height:13px;background:#edf1ea;border-radius:999px;overflow:hidden}.progress-bar{height:100%;background:linear-gradient(90deg,#70a64f,#2f854d);width:0;transition:width .3s}.today-card{border-radius:17px;background:var(--yellow-soft);border:1px solid #f0d978;padding:16px;text-align:center;margin:16px 0 9px}.today-card strong{color:#735e00}.today-card p{margin:7px 0 0;color:#726630;font-size:13px;line-height:1.55}.history-section{margin-top:26px}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.section-heading span{color:var(--muted);font-size:12px}.history-list{display:grid;grid-gap:9px;gap:9px}.history-item{border:1px solid var(--line);border-radius:15px;padding:13px 14px;background:#fff}.history-item summary{list-style:none;display:flex;justify-content:space-between;align-items:center;cursor:pointer;font-weight:800}.history-item summary::-webkit-details-marker{display:none}.history-body{margin-top:12px;color:#536258;font-size:13px;line-height:1.65;white-space:pre-wrap}.tag-row{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}.tag{font-size:11px;background:var(--green-soft);color:var(--green-dark);border-radius:999px;padding:5px 8px}.empty{color:var(--muted);font-size:13px;text-align:center;padding:25px 0}.action-list{display:grid;grid-gap:8px;gap:8px}.action-choice{display:grid;grid-template-columns:22px 1fr;align-items:center;grid-gap:9px;gap:9px;border:1px solid var(--line);border-radius:13px;padding:11px 12px;background:#fff;font-weight:650}.action-choice input{width:19px;height:19px}.completion-section{margin-top:20px;background:#fff9dc;border:1px solid #ecd777;padding:18px;border-radius:19px}.completion-section p{color:#70652e;font-size:13px;line-height:1.6}.photo-picker{display:grid;text-align:center;border:1.5px dashed #d4b72e;background:#fffef7;padding:17px 10px;border-radius:15px;cursor:pointer;grid-gap:5px;gap:5px}.photo-picker input{position:absolute;opacity:0;pointer-events:none}.photo-picker span{font-weight:850;color:#715f00}.photo-preview{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px;margin-top:10px}.photo-preview img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:12px;border:1px solid #e4dca9}.hidden{display:none!important}.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:24px;background:#26382d;color:#fff;padding:11px 15px;border-radius:999px;font-size:13px;z-index:100;opacity:0;pointer-events:none;transition:.2s;max-width:calc(100% - 30px);text-align:center}.toast.show{opacity:1}.toast.error{background:#8e322f}.loading{position:fixed;inset:0;z-index:99;background:rgba(248,251,244,.76);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-content:center;justify-items:center;color:var(--green-dark);font-weight:800}.spinner{width:34px;height:34px;border:4px solid #dce9d8;border-top:4px solid var(--green);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.admin-shell{width:min(1180px,100%);margin:0 auto;padding:24px 18px 60px}.admin-top{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:18px}.admin-title h1{font-size:28px;margin:4px 0}.admin-title p{margin:0;color:var(--muted);font-size:13px}.admin-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px}.admin-card,.stat-card{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.stat-card{padding:18px}.stat-card span{display:block;color:var(--muted);font-size:12px}.stat-card strong{display:block;font-size:28px;margin-top:6px}.admin-card{padding:20px;margin-top:14px}.admin-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.tab{border:1px solid #cfe0d0;background:#fff;color:var(--green-dark);padding:10px 14px;border-radius:999px;font-weight:800}.tab.active{background:var(--green);color:#fff}.toolbar{display:grid;grid-template-columns:2fr 1fr 1fr auto;grid-gap:8px;gap:8px;margin-bottom:12px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}table{width:100%;border-collapse:collapse;min-width:760px;background:#fff}td,th{padding:11px 12px;border-bottom:1px solid #edf1ea;text-align:left;font-size:13px;vertical-align:top}th{background:#f7faf5;color:#5f6d63;position:-webkit-sticky;position:sticky;top:0}.mini-button{border:1px solid #bcd2bf;background:#fff;color:var(--green-dark);padding:7px 10px;border-radius:10px;font-weight:800;font-size:12px}.site-bars{display:grid;grid-gap:12px;gap:12px}.site-row{padding:14px;border:1px solid var(--line);border-radius:14px}.site-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px}.site-head small{color:var(--muted)}.bar{height:10px;background:#edf1ea;border-radius:999px;overflow:hidden}.bar>span{display:block;height:100%;background:var(--green)}.two-col{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}.notice{padding:12px 14px;border-radius:13px;background:#fff7d7;color:#6d5c10;font-size:13px;line-height:1.55}.danger-text{color:var(--danger)}.muted{color:var(--muted)}@media(max-width:760px){.admin-grid{grid-template-columns:repeat(2,1fr)}.toolbar,.two-col{grid-template-columns:1fr}.admin-top{align-items:flex-start;flex-direction:column}}@media(max-width:430px){.app-shell{padding:13px 12px 40px}.hero-card,.panel{padding:21px 18px;border-radius:23px}.myung-logo{width:84%}.ongi-logo{width:94%}.course-grid{grid-template-columns:repeat(2,1fr)}.admin-grid{grid-template-columns:1fr 1fr}.stat-card strong{font-size:22px}}