
:root{font:16px/1.55 Arial,'Noto Sans KR',sans-serif;color:#203541;background:#f4f7f7}*{box-sizing:border-box}body{margin:0}header{background:#172c38;color:white;padding:18px max(18px,calc((100vw - 560px)/2))}header b{font-size:1.12rem}header small{display:block;color:#b7c9cd}main{max-width:560px;margin:auto;padding:18px 16px 100px}.card{background:white;border:1px solid #dfe8e9;border-radius:16px;padding:18px;margin:12px 0;box-shadow:0 3px 12px #16394308}.card h2{font-size:1.08rem;margin:0 0 10px}.big{font-size:1.45rem;font-weight:750}.muted{color:#687e87}.row{padding:12px 0;border-bottom:1px solid #e8eeee}.row:last-child{border-bottom:0}.row strong,.date{white-space:nowrap}nav{position:fixed;bottom:0;left:0;right:0;background:white;border-top:1px solid #dce6e6;display:flex;justify-content:center;z-index:3}nav button{width:min(20%,112px);border:0;background:white;padding:13px 4px;color:#536c76;font:inherit;font-size:.84rem}nav button.active{color:#1c6d7a;font-weight:800;border-top:3px solid #1c6d7a}.pill{background:#e8f4f1;color:#296b57;padding:4px 8px;border-radius:99px;font-size:.83rem}.preview{background:#fff2d7;color:#795011;padding:10px 16px;text-align:center;font-weight:700}.error{background:#fff1ed;color:#9a3e32;padding:15px;border-radius:10px}.checks{display:grid;gap:9px}.checks span{padding-left:8px}p{white-space:pre-wrap}button{cursor:pointer}input,select,textarea{width:100%;font:inherit;border:1px solid #cadbdc;border-radius:8px;padding:10px}.card button{font:inherit;background:#236879;color:white;border:0;border-radius:8px;padding:9px 14px;margin-top:7px}.kv{display:grid;grid-template-columns:95px minmax(0,1fr);gap:9px;border-bottom:1px solid #edf1f1;padding:7px 0}.kv span{color:#657e86}.kv strong{overflow-wrap:anywhere}.noticeImage{display:block;width:100%;height:auto;border-radius:10px;margin:10px 0}.messageForm{display:grid;gap:8px;margin-top:15px}.messageForm button{width:100%}.tabs{display:flex;gap:7px;overflow:auto}.tabs button{white-space:nowrap}.tabs button.active{background:#174e5d}.status{min-height:1.5em;color:#9a3e32}.lessonlog p{margin:0 0 10px}.lessonlog b{display:block;color:#657e86;font-size:.9rem}
 .install{max-width:560px;margin:10px auto 0;padding:0 16px}.install button,.install a{font:inherit;color:#fff;background:#236879;border:0;border-radius:8px;padding:8px 12px;text-decoration:none;margin-right:8px}.chatbubble{max-width:85%;padding:11px 14px;border-radius:13px;background:#eef4f5;margin:9px 0;overflow-wrap:anywhere}.chatbubble.mine{margin-left:auto;background:#dceef0}.chatbubble.theirs{margin-right:auto}.chatbubble p{margin:5px 0 0}.chatbubble small{color:#5e7780}@media(max-width:600px){.chatbubble{max-width:92%}}


.heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.heading h2{margin:0}.heading button,.backLink{border:0;background:transparent;color:#236879;padding:4px;font:inherit}.sessionRow{display:grid;gap:3px}.sessionRow>div{display:flex;align-items:center;gap:8px}.sessionRow small{display:block}.pill{display:inline-block;border-radius:16px;padding:2px 8px;background:#e8eef0;color:#375563;font-size:.78rem}.state-출석완료,.state-보강완료{background:#daf3e4;color:#12633c}.state-결석{background:#fbe4e2;color:#9e3935}.state-보강예정{background:#fff0d0;color:#805908}.state-일정변경{background:#e9e4f9;color:#57449b}.nextpill,.newdot{display:inline-block;background:#d54c37;color:white;border-radius:15px;padding:1px 6px;font-size:.7rem;font-style:normal}.quickLinks{display:flex;gap:8px;margin-top:12px}.quickLinks button{flex:1}.noticeLink,.menuLink{width:100%;border:0;border-bottom:1px solid #e6eeee;background:transparent;display:flex;justify-content:space-between;text-align:left;padding:13px 2px;color:inherit;font:inherit;gap:10px}.noticeLink small,.menuLink span{color:#55767d;white-space:nowrap}.subtabs{display:flex;gap:7px;overflow-x:auto;padding:4px 0 12px}.subtabs button{white-space:nowrap}.subtabs button.active{background:#236879;color:white}.checks{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}.progressItem{border:1px solid #dbe4e6;border-radius:7px;padding:5px 8px;background:#f7f9f9}.progressItem.done{background:#def3e5;border-color:#90d3a7;color:#155d38;font-weight:700}.emptyState{color:#687e87;text-align:center;padding:24px 10px}.chatScroll{max-height:55vh;overflow-y:auto}.messageForm textarea{width:100%}#nav button{position:relative;font-size:.88rem;white-space:nowrap}#nav button .newdot{font-size:.63rem}


:root{font-family:Arial,'Noto Sans KR',sans-serif;color:#302f2b;background:#f7f5f0}
body{background:#f7f5f0;color:#302f2b}
header{background:#f7f5f0;color:#2f302c;border-bottom:1px solid #e7e1d8;padding-top:17px;padding-bottom:17px}
header b{font-size:1.02rem;font-weight:750;letter-spacing:-.025em}
header small{color:#876f60;font-size:.7rem;letter-spacing:.075em;margin-top:1px}
main{max-width:600px;padding:20px 16px calc(106px + env(safe-area-inset-bottom))}
main h1{font-size:1.35rem;letter-spacing:-.035em;margin:4px 0 18px;line-height:1.35}
main h1.homeTitle{font-size:1.22rem;font-weight:700;margin:2px 0 17px}
.card{background:#fffefa;border-color:#e9e2d8;border-radius:17px;padding:19px;margin:12px 0;box-shadow:0 2px 10px rgba(65,45,28,.035)}
.card h2{font-size:1.04rem;letter-spacing:-.02em;color:#34302a;margin-bottom:10px}
.muted,.kv span,.emptyState{color:#766f67}
.row,.kv,.noticeLink,.menuLink{border-color:#eee8df}
.operationCaption{color:#8e523c;font-size:.84rem;font-weight:700;margin:-2px 0 8px}
.operationCaption small{display:block;color:#82786e;font-weight:400;margin-top:2px}
.card button,.subtabs button.active,.tabs button.active,.install button,.install a{background:#a85239;color:#fff}
.card button:hover,.install button:hover,.install a:hover{background:#91432f}
.card .noticeLink,.card .menuLink,.card .heading button,.backLink{background:transparent;color:#39342e}
.card .noticeLink:hover,.card .menuLink:hover{background:#f8f2eb}
.card .heading button,.backLink{color:#9b4c34}
.quickLinks button{min-height:44px}
.pill{background:#f1eee8;color:#5d554d}
.state-출석완료,.state-보강완료{background:#e2f1e6;color:#246842}
.state-결석{background:#f8e7e3;color:#a44133}
.state-보강예정{background:#f8eddb;color:#855a23}
.state-일정변경{background:#eee8f5;color:#625078}
.nextpill,.newdot{background:#b6533a}
nav{background:#fffefa;border-color:#e8e1d7;padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -3px 14px rgba(56,42,31,.045)}
nav button{background:#fffefa;color:#756d64;min-height:50px}
nav button.active{color:#a34c34;border-top-color:#a34c34}
input,select,textarea{border-color:#d9cfc2;background:#fffefa;color:#302f2b}
input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid #b95339;outline-offset:2px}
.chatbubble{background:#f3eee7}.chatbubble.mine{background:#f7e9dc}.chatbubble small{color:#776c62}
.progressCard{padding:21px 19px}.progressTitle{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:12px}.progressTitle h2{margin:0}.progressCount{color:#99624c;font-size:.82rem;font-weight:700;white-space:nowrap}.progressTrack{height:6px;background:#eee8df;border-radius:99px;overflow:hidden;margin:0 0 18px}.progressTrack span{display:block;height:100%;background:#b77b62;border-radius:99px}.progressPart{padding:15px 0;border-top:1px solid #eee8df}.progressPart:first-of-type{border-top:0}.progressPartHead{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.progressPartHead strong{font-size:.93rem;letter-spacing:-.02em}.progressPartHead small{color:#8b7d70;white-space:nowrap}.progressPart .checks{display:grid;grid-template-columns:1fr;gap:7px;margin-top:11px}.progressItem{display:flex;align-items:flex-start;gap:9px;border:1px solid #ece5db;border-radius:10px;padding:10px 11px;background:#fbf9f5;color:#776f66;font-size:.9rem;line-height:1.45}.progressMark{width:19px;height:19px;flex:none;border:1px solid #d8cec1;border-radius:50%;display:grid;place-items:center;color:transparent;font-size:.75rem;line-height:1;margin-top:1px}.progressItem.done{background:#f6eee8;border-color:#e8d5c6;color:#554239;font-weight:650}.progressItem.done .progressMark{background:#a85239;border-color:#a85239;color:#fff}
.pushIntroOverlay{position:fixed;inset:0;z-index:10;background:rgba(35,29,24,.48);display:grid;place-items:center;padding:20px}
.pushIntroDialog{width:min(100%,420px);background:#fffefa;border:1px solid #e9e2d8;border-radius:20px;padding:24px;box-shadow:0 20px 60px rgba(35,29,24,.24)}
.pushIntroDialog h2{font-size:1.23rem;margin:0 0 9px}.pushIntroDialog p{margin:0 0 16px;color:#62594f}
.pushIntroDialog button{font:inherit;border:0;border-radius:9px;padding:11px 16px;cursor:pointer;background:#a85239;color:white;min-height:44px}
.pushIntroDialog .pushLater{background:transparent;color:#765e50}.pushIntroDialog .pushActions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pushIntroDialog .pushActions button{margin:0}.pushIntroDialog .pushIntroNote{font-size:.86rem;color:#766f67;margin:13px 0 0}
@media(max-width:600px){main{padding-left:14px;padding-right:14px}.card{padding:17px}header{padding-left:18px;padding-right:18px}}
.attendanceHead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:3px 0 10px}.attendanceHead strong{font-size:1.08rem}.attendanceHead button{min-width:42px;min-height:42px;margin:0}.attendanceHead button:disabled{opacity:.35}.attendanceRange{margin:0 0 15px;color:#766f67;font-size:.88rem}.attendanceCalendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.attendanceWeekday{text-align:center;color:#87796d;font-size:.78rem;font-weight:700;padding:6px 0}.attendanceDay{min-height:76px;border:1px solid #ebe4da;border-radius:8px;padding:5px 3px;background:#fffefa;overflow:hidden}.attendanceDay.outside{opacity:.3}.attendanceDay.hasLesson{background:#faf5ed;border-color:#dec7b6}.attendanceDay.today{box-shadow:inset 0 0 0 1px #ad553a}.attendanceDay b{display:block;font-size:.78rem;margin-bottom:3px}.attendanceEntry{display:block;font-size:.68rem;line-height:1.25;padding:3px 2px;margin:2px 0;border-radius:4px;background:#eaf2ed;color:#306547;word-break:keep-all}.attendanceEntry.absent{background:#f9e9e7;color:#a34539}.attendanceEntry.makeup{background:#ecedf8;color:#535c96}.attendanceEntry.planned{background:#eeeae3;color:#6d6258}.attendanceEntry.moved{background:#f1eafa;color:#745396}.attendanceLegend{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px;font-size:.8rem;color:#766f67}.attendanceLegend span{border:1px solid #e6d9cd;border-radius:99px;padding:3px 8px}.attendanceNote{margin:12px 0 0;font-size:.84rem;color:#766f67}
@media(max-width:410px){.attendanceCalendar{gap:2px}.attendanceDay{min-height:66px;padding:3px 2px}.attendanceEntry{font-size:.61rem}}
.channelGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.channelLink{display:flex;align-items:center;gap:11px;border:1px solid #e9e2d8;background:#fbf8f3;color:#40352c;border-radius:12px;min-height:64px;padding:11px;text-decoration:none;font-size:.9rem;font-weight:650}.channelIcon{width:36px;height:36px;flex:none;border-radius:10px;background:#f0e4da;display:grid;place-items:center;font-weight:800;color:#9c5a41}.channelLink:hover{background:#f6eee6}.toolLink{display:block;border:1px solid #e9e2d8;background:#fbf8f3;border-radius:12px;padding:15px;text-decoration:none;color:#3d332d;margin:10px 0}.toolLink small{display:block;color:#766f67;margin-top:3px}.toolLink:focus-visible,.channelLink:focus-visible{outline:2px solid #a85239;outline-offset:2px}@media(max-width:360px){.channelGrid{gap:7px}.channelLink{padding:8px;gap:6px;font-size:.8rem}}


#phoneLogin.messageForm{display:grid!important;grid-template-columns:minmax(0,1fr)!important;align-items:stretch;gap:18px!important;padding:18px}
#phoneLogin>label{display:flex;flex-direction:column;gap:8px;min-width:0;width:100%;font-size:.95rem;color:#65584d}
#phoneLogin input{display:block;width:100%;min-width:0;max-width:100%;box-sizing:border-box;min-height:48px;font-size:16px;line-height:1.4;margin:0}
#phoneLogin>button{width:100%;min-height:48px;margin:0;grid-column:1/-1}#phoneLogin>.status{grid-column:1/-1;overflow-wrap:anywhere}
@media(max-width:400px){#phoneLogin.messageForm{padding:14px;gap:16px!important}}

.previewMode{display:inline-block;margin-left:12px;color:#795011;text-decoration:underline;text-underline-offset:3px;font-size:.88rem;white-space:nowrap}.labExperiment{background:#f8f0e5;border-color:#e8dac6;color:#74604d}.labExperiment strong{font-size:.95rem}.labExperiment p{margin:7px 0 0;font-size:.9rem;line-height:1.6}