@import url('https://fonts.googleapis.com/css2?family=Gowun+Dodum&family=Nanum+Myeongjo:wght@700&display=swap');
:root{--ink:#373a45;--muted:#9697a4;--line:#eee9e4;--cream:#fcfaf7}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:'Gowun Dodum',sans-serif}button{font:inherit;color:inherit}.shell{display:flex;min-height:100vh}.sidebar{width:250px;background:#fffdfb;border-right:1px solid var(--line);padding:34px 25px 24px;display:flex;flex-direction:column}.brand{display:flex;gap:10px;align-items:center;color:#41404a}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:12px;background:#f4d09c;color:#9b6d36;font-size:23px}.brand b{display:block;font-size:15px}.brand small,.profile small{display:block;color:var(--muted);font-size:11px;margin-top:3px}nav{margin-top:68px;display:grid;gap:8px}nav a{padding:13px 15px;border-radius:12px;color:#9999a3;font-size:14px}nav a span{display:inline-block;width:28px;font-size:17px}nav .active{color:#45434d;background:#f9eee8;font-weight:bold}.side-note{margin-top:auto;padding:17px;border-radius:16px;background:#fff6e7;color:#8d785a;font-size:12px}.side-note p{line-height:1.7;margin:12px 0 0;color:#a78f70}.profile{display:flex;gap:10px;align-items:center;padding-top:27px}.avatar{width:35px;height:35px;border-radius:50%;display:grid;place-items:center;background:#eab68f;color:white;font-weight:bold}.profile b{font-size:13px}.dots{margin-left:auto;color:#bbb}.content{width:min(100%,1060px);padding:40px 65px 70px}.topbar{display:flex;justify-content:space-between;align-items:flex-start}.eyebrow{font-size:12px;color:#a4a0a0;margin:0 0 8px}.topbar h1{font-family:'Nanum Myeongjo',serif;font-size:28px;margin:0;color:#353640}.parent-btn{border:1px solid #e6e1dc;background:#fff;border-radius:22px;padding:9px 16px;font-size:12px;color:#7f7d86}.hero{margin-top:38px;border-radius:22px;background:#f4e6d7;min-height:205px;padding:31px 38px;display:flex;justify-content:space-between;overflow:hidden}.pill{font-size:11px;color:#b27853;background:#fff2e3;border-radius:20px;padding:6px 10px}.hero h2{font-family:'Nanum Myeongjo',serif;font-size:27px;line-height:1.45;margin:16px 0 7px}.hero h2 em{color:#d77e5b;font-style:normal}.hero p{color:#a98d7d;font-size:13px}.plate{position:relative;width:250px;height:170px}.plate:before{content:'';position:absolute;width:190px;height:190px;border-radius:50%;background:#fff9f1;border:9px solid #ead6bd;right:2px;top:-18px;box-shadow:0 8px 0 #ddc7ac}.plate div{position:absolute;right:40px;top:51px;text-align:center;font-size:12px;color:#a89178;z-index:2}.plate b{color:#ce9471;font-size:14px}.plate span{position:absolute;font-size:32px;z-index:3}.plate span:nth-child(1){top:17px;left:14px}.plate span:nth-child(2){top:99px;left:20px}.plate span:nth-child(3){right:5px;top:6px}.plate span:nth-child(4){right:8px;bottom:1px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin:38px 0 18px}.section-heading.compact{margin:0 0 12px}.section-heading h3,.card-head h3{margin:0;font-size:18px}.section-heading p,.card-head p{color:var(--muted);font-size:12px;margin:6px 0 0}.count{font-size:12px;color:#d68160;background:#fff0e9;padding:7px 11px;border-radius:20px}.progress-wrap{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px 17px}.progress-label{display:flex;justify-content:space-between;font-size:11px;color:#999}.progress-label b{color:#db8667}.progress{height:7px;background:#f0e9e4;border-radius:9px;margin-top:9px;overflow:hidden}.progress span,.mini-progress span{display:block;height:100%;background:#e9936f;border-radius:9px;transition:width .3s}.subject-progress{margin-top:28px}.subject-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.subject-card{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:#fff;border-radius:14px;padding:11px}.subject-card .task-icon{width:34px;height:34px;font-size:15px}.subject-copy{min-width:0;flex:1}.subject-copy b{font-size:12px;display:block}.subject-copy small{display:block;color:#aaa;font-size:10px;margin-top:4px}.subject-card>strong{font-size:11px;color:#db8667}.mini-progress{height:5px;margin-top:7px;background:#f1ece8;border-radius:9px;overflow:hidden}.task-list{display:grid;gap:9px;margin-top:12px}.task{display:flex;align-items:center;gap:14px;width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:14px;padding:13px 15px;cursor:pointer;transition:.2s}.task:hover{transform:translateY(-1px);box-shadow:0 5px 18px #eadfd966}.task.completed{background:#fffdfa}.task-number{width:20px;color:#b8b0ac;font-size:11px;text-align:center}.completed .task-number{color:#e9936f}.task-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;font-size:19px;font-weight:bold}.peach{background:#fbe3d3;color:#de936d}.lavender{background:#e9e6f7;color:#8279b7}.mint{background:#dff1e9;color:#5d9b85}.yellow{background:#fff0c9;color:#d4a34b}.task-copy{display:grid;gap:5px;flex:1}.task-copy b{font-size:13px}.task-copy i{font-style:normal;color:#c8c2c0}.task-copy small{font-size:11px;color:#a4a0a0}.check{width:23px;height:23px;border-radius:50%;border:1px solid #dbd5d0;color:#fff;display:grid;place-items:center;font-size:13px}.completed .check{background:#e9936f;border-color:#e9936f}.completed .task-copy b{color:#858187}.bottom-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:13px;margin-top:13px}.week-card,.cheer-card{border:1px solid var(--line);background:#fff;border-radius:16px;padding:20px}.card-head{display:flex;justify-content:space-between}.week-percent{font-size:22px;color:#dd896a;font-family:'Nanum Myeongjo',serif}.week-days{display:flex;justify-content:space-around;margin:23px 0 13px}.day{text-align:center;color:#aaa;font-size:10px}.day i{font-style:normal;width:24px;height:24px;display:grid;place-items:center;border:1px dashed #dfd7d0;border-radius:50%;margin-top:8px;color:white;font-size:12px}.day i.filled{background:#ecad80;border-style:solid;border-color:#ecad80}.table-art{border-top:1px solid #f1ece8;padding-top:12px;text-align:center;font-size:22px}.cheer-card{background:#f5eee7;position:relative;overflow:hidden}.sparkle{color:#e7a66f;font-size:22px}.cheer-card h3{font-family:'Nanum Myeongjo',serif;font-size:17px;line-height:1.5;margin:10px 0}.cheer-card p{font-size:11px;line-height:1.7;color:#a69991}.mini-seed{position:absolute;right:22px;bottom:15px;font-size:32px;opacity:.8}@media(max-width:800px){.sidebar{width:74px;padding:24px 12px}.brand div,nav a:not(.active)::after,nav a{font-size:0}.brand-mark{margin:auto}nav{margin-top:50px}nav a{padding:13px 12px;text-align:center}nav a span{width:auto;font-size:20px}.side-note,.profile div:not(.avatar),.dots{display:none}.profile{justify-content:center}.content{padding:30px 20px}.hero{padding:25px}.plate{transform:scale(.75);margin-right:-45px}.bottom-grid{grid-template-columns:1fr}.subject-grid{grid-template-columns:repeat(2,1fr)}.topbar h1{font-size:23px}}
.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--cream)}
.auth-card{width:min(100%,420px);background:#fff;border:1px solid var(--line);border-radius:22px;padding:34px;box-shadow:0 12px 36px #eadfd944}
.auth-card h1{font-family:'Nanum Myeongjo',serif;font-size:28px;margin:0 0 10px}.auth-card>p:not(.eyebrow):not(.auth-note){color:var(--muted);font-size:13px;margin:0 0 26px}
.auth-form{display:grid;gap:16px}.auth-form label{display:grid;gap:7px;font-size:12px;color:#6f6b72}.auth-form input{width:100%;border:1px solid var(--line);border-radius:11px;padding:12px;background:#fffdfb;color:var(--ink);font:inherit}.auth-form button{border:0;border-radius:12px;padding:13px;background:#e9936f;color:white;cursor:pointer}.auth-note{font-size:11px;color:#aaa;margin:18px 0 0;line-height:1.6}
.module-shell{min-height:100vh;max-width:1100px;margin:0 auto;padding:52px 28px 80px}.module-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:30px}.module-header h1{font-family:'Nanum Myeongjo',serif;font-size:34px;margin:0 0 8px}.module-header>div>p:last-child{color:var(--muted);font-size:13px;margin:0}.module-header-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.module-link{white-space:nowrap;text-decoration:none;border:1px solid #e6e1dc;background:#fff;border-radius:22px;padding:10px 16px;color:#7f7d86;font-size:12px}.textbook-card,.lesson-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:30px}.module-card-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.card-kicker{color:#d68160;font-size:11px;margin:0 0 8px}.textbook-card h2,.lesson-card h2{font-family:'Nanum Myeongjo',serif;font-size:24px;margin:0}.status-chip{background:#eaf4ed;color:#5c9270;border-radius:20px;padding:7px 11px;font-size:11px}.module-muted{color:var(--muted);font-size:13px;line-height:1.7}.day-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:28px}.day-card{border:1px solid var(--line);border-radius:16px;padding:18px;min-height:175px;background:#fffdfb}.day-card.is-complete{background:#f6fbf6;border-color:#dceee0}.day-number{color:#d68160;font-size:11px}.day-card h3{font-size:16px;margin:22px 0 8px}.day-card p{color:var(--muted);font-size:12px;margin:0 0 18px}.day-card a,.disabled-link{font-size:12px;color:#b9795e;text-decoration:none}.disabled-link{color:#aaa}.lesson-shell{max-width:820px}.lesson-card{max-width:720px;margin:0 auto}.lesson-icon{width:56px;height:56px;border-radius:17px;background:#fbe3d3;color:#de936d;display:grid;place-items:center;font-weight:bold;font-size:22px;margin-bottom:24px}.lesson-example{background:#fff9f3;border:1px solid #f1e5d9;border-radius:16px;padding:20px;margin:24px 0}.lesson-example span{display:block;color:#a98d7d;font-size:11px;margin-bottom:8px}.lesson-example strong{display:block;font-size:15px;margin-bottom:16px}.lesson-example textarea{width:100%;resize:vertical;border:1px solid #e6ddd5;border-radius:11px;padding:12px;font:inherit;color:var(--ink);background:#fff}.lesson-actions{display:flex;justify-content:flex-end;gap:10px}.secondary-action,.primary-action{border-radius:12px;padding:11px 16px;font:inherit;font-size:12px;text-decoration:none;cursor:pointer}.secondary-action{border:1px solid var(--line);color:#8d8784;background:#fff}.primary-action{border:1px solid #e9936f;background:#e9936f;color:#fff}.success-notice{padding:12px 14px;background:#eef8f0;color:#5c9270;border-radius:12px;font-size:12px;line-height:1.6;margin:18px 0 0}@media(max-width:700px){.module-shell{padding:32px 18px 60px}.module-header{display:block}.module-header-links{justify-content:flex-start}.module-link{display:inline-block;margin-top:18px}.day-grid{grid-template-columns:repeat(2,1fr)}.textbook-card,.lesson-card{padding:22px}.module-header h1{font-size:28px}}
.admin-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.admin-summary>div,.admin-card,.empty-panel{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px}.admin-summary span,.admin-summary small{display:block;color:var(--muted);font-size:11px}.admin-summary strong{display:block;color:#d68160;font-family:'Nanum Myeongjo',serif;font-size:28px;margin:10px 0 5px}.admin-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.admin-card{display:block;min-height:180px;color:inherit;text-decoration:none;cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.admin-card:hover,.admin-card:focus-visible{transform:translateY(-2px);border-color:#d9a58d;box-shadow:0 10px 26px rgba(185,121,94,.14);outline:none}.admin-card h2{font-family:'Nanum Myeongjo',serif;font-size:21px;margin:28px 0 8px}.admin-card p,.empty-panel p{color:var(--muted);font-size:13px;line-height:1.7}.admin-card-open{color:#b9795e;font-size:12px}.empty-panel{max-width:720px}.empty-panel h2{font-family:'Nanum Myeongjo',serif;font-size:23px}@media(max-width:700px){.admin-summary{grid-template-columns:repeat(2,1fr)}.admin-grid{grid-template-columns:1fr}}
.auth-form select{width:100%;border:1px solid var(--line);border-radius:11px;padding:12px;background:#fffdfb;color:var(--ink);font:inherit}.auth-secondary-link{display:block;text-align:center;color:#b9795e;text-decoration:none;font-size:11px;margin-top:18px}
.role-choice-list{display:grid;gap:8px}.role-choice{display:flex!important;grid-template-columns:none!important;flex-direction:row;align-items:center;gap:10px;border:1px solid var(--line);border-radius:11px;padding:11px;cursor:pointer}.role-choice.selected{border-color:#e9936f;background:#fff8f2}.role-choice input{width:auto!important;accent-color:#e9936f}.role-choice span{display:grid;gap:3px}.role-choice strong{font-size:12px}.role-choice small{font-size:10px;color:var(--muted)}
.mode-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:24px 0}.mode-card{display:grid;gap:8px;border:1px solid var(--line);border-radius:16px;padding:18px;cursor:pointer}.mode-card.selected{border-color:#e9936f;background:#fff8f2}.mode-card input{accent-color:#e9936f}.mode-card strong{font-size:15px}.mode-card span{font-size:12px;color:var(--muted);line-height:1.6}.connection-field{display:grid;gap:8px;font-size:12px;color:#6f6b72;margin-bottom:18px}.connection-field input{border:1px solid var(--line);border-radius:11px;padding:12px;font:inherit}.student-row-card{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:16px}.student-row-copy{display:grid;gap:5px;flex:1}.student-row-copy strong{font-size:16px}.student-row-copy span{font-size:12px;color:var(--muted)}.student-row-card a{font-size:12px;color:#b9795e;text-decoration:none}@media(max-width:700px){.mode-grid{grid-template-columns:1fr}.student-row-card{flex-wrap:wrap}.student-row-card a{width:100%;margin-left:49px}}
.today-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}.today-summary>div{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}.today-summary span{display:block;color:var(--muted);font-size:11px}.today-summary strong{display:block;color:#d68160;font-family:'Nanum Myeongjo',serif;font-size:25px;margin-top:9px}.api-task-list{display:grid;gap:10px;margin-top:26px}.api-task{display:flex;justify-content:space-between;align-items:center;gap:16px;border:1px solid var(--line);border-radius:15px;padding:17px;background:#fffdfb}.api-task.is-complete{background:#f6fbf6;border-color:#dceee0}.api-task h3{font-size:15px;margin:8px 0 5px}.api-task p{color:var(--muted);font-size:12px;margin:0}.api-task-actions{display:grid;justify-items:end;gap:8px;white-space:nowrap}.api-task-actions a{font-size:11px;color:#b9795e;text-decoration:none}.done-label{font-size:12px;color:#5c9270}@media(max-width:700px){.today-summary{grid-template-columns:1fr}.api-task{display:block}.api-task-actions{display:flex;justify-content:space-between;align-items:center;margin-top:15px}}
.request-list{display:grid;gap:10px;margin-top:24px}.request-row{display:flex;justify-content:space-between;align-items:center;gap:14px;border:1px solid var(--line);border-radius:14px;padding:15px;background:#fffdfb}.request-row div{display:grid;gap:5px}.request-row span{color:var(--muted);font-size:11px}
.request-actions{display:flex;gap:7px;align-items:center}.request-actions .secondary-action{padding:9px 12px}
.content-form{display:grid;gap:15px;margin-top:22px}.content-form label{display:grid;gap:7px;font-size:12px;color:#6f6b72}.content-form input,.content-form textarea{border:1px solid var(--line);border-radius:11px;padding:12px;font:inherit;color:var(--ink);background:#fffdfb}.lesson-input-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.content-list-card{margin-top:16px}.content-list-row{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:15px 0}.content-list-row>div{display:grid;gap:5px}.content-list-row span:not(.status-chip){color:var(--muted);font-size:11px}@media(max-width:700px){.lesson-input-grid{grid-template-columns:repeat(2,1fr)}}
.code-grid-card{margin-bottom:16px}.code-grid-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:22px}.code-grid-controls label{display:grid;gap:7px;font-size:12px;color:#6f6b72}.code-grid-controls input{border:1px solid var(--line);border-radius:11px;padding:12px;font:inherit;color:var(--ink);background:#fffdfb}.code-grid-scroll{overflow:auto;margin-top:22px}.code-grid-table{width:100%;min-width:850px;border-collapse:collapse;font-size:12px}.code-grid-table th,.code-grid-table td{border:1px solid #d7d1ca;padding:9px 10px;text-align:left;vertical-align:top}.code-grid-table thead th{background:#fff9f3;color:#5f5752}.code-grid-table tbody th{background:#fffdfb;white-space:nowrap;color:#7c716b}.code-grid-table td span{display:block;min-width:125px;white-space:nowrap}.code-grid-table small{display:block;color:var(--muted);font-size:10px;margin-top:5px;font-weight:400}.shared-code{color:#a96f52}.code-grid-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:18px}.code-review-panel{margin-top:18px;padding:16px;border:1px solid #edcdbb;border-radius:14px;background:#fff9f3}.code-review-panel h3{margin:0 0 7px;font-size:15px}.code-review-panel p{color:var(--muted);font-size:12px;line-height:1.7}.form-error{color:#b34f48;font-size:12px;margin:12px 0 0}@media(max-width:700px){.code-grid-controls{grid-template-columns:1fr}.code-grid-actions{display:grid;justify-content:stretch}.code-grid-actions .primary-action{width:100%}}
.camp-list{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.camp-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px}.camp-card-top{display:flex;justify-content:space-between;color:var(--muted);font-size:11px}.camp-card h2{font-family:'Nanum Myeongjo',serif;font-size:22px;margin:26px 0 9px}.camp-card p{color:var(--muted);font-size:13px;line-height:1.7;min-height:44px}.camp-meta{display:flex;gap:14px;color:#9a8174;font-size:11px;border-top:1px solid var(--line);padding-top:14px;margin:18px 0}.camp-card .primary-action{display:block}@media(max-width:700px){.camp-list{grid-template-columns:1fr}}
.board-layout{display:grid;grid-template-columns:190px 1fr;gap:16px}.board-tabs{display:grid;align-content:start;gap:7px}.board-tabs button{border:1px solid var(--line);background:#fff;border-radius:11px;padding:12px;text-align:left;font-size:12px;cursor:pointer}.board-tabs button.active{background:#fff1e8;border-color:#f0c6ad;color:#b9795e;font-weight:bold}.board-content{display:grid;gap:14px}.post-list,.resource-list{display:grid;gap:10px}.post-card,.post-form,.resource-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}.post-card h2,.resource-card h2{font-size:16px;margin:0 0 8px}.post-card p,.resource-card p{font-size:12px;color:var(--muted);line-height:1.7}.post-card small{color:#aaa;font-size:10px}.post-form{display:grid;gap:9px}.post-form input,.post-form textarea{border:1px solid var(--line);border-radius:10px;padding:11px;font:inherit}.resource-list{grid-template-columns:repeat(2,1fr)}.resource-card a{font-size:12px;color:#b9795e;text-decoration:none}@media(max-width:700px){.board-layout{grid-template-columns:1fr}.board-tabs{grid-template-columns:repeat(3,1fr)}.resource-list{grid-template-columns:1fr}}
.board-shell{max-width:900px}.board-mode-tabs{display:flex;gap:8px;margin:0 0 16px;padding:6px;background:#fff9f3;border:1px solid #f1e5d9;border-radius:14px}.board-mode-tabs button{flex:1;border:0;border-radius:10px;padding:11px 14px;background:transparent;color:#8d8784;font:inherit;font-size:13px;cursor:pointer}.board-mode-tabs button.active{background:#fff;color:#b9795e;font-weight:700;box-shadow:0 2px 8px rgba(119,92,75,.08)}.board-toolbar{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:14px}.board-toolbar>p{margin:0;color:var(--muted);font-size:12px;line-height:1.6}.board-search{display:flex;gap:7px;flex:none}.board-search input,.board-compose select,.board-compose input,.board-compose textarea,.board-edit-form input,.board-edit-form textarea,.board-reply-form textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:11px;background:#fffdfb;color:var(--ink);font:inherit;font-size:13px}.board-search input{width:180px}.post-card{transition:border-color .16s ease,box-shadow .16s ease}.post-card:hover{border-color:#e5b79e;box-shadow:0 8px 20px rgba(185,121,94,.1)}.post-card-top,.board-detail-meta{display:flex;justify-content:space-between;align-items:center;gap:9px;margin-bottom:10px}.post-card h2 a{color:inherit;text-decoration:none}.post-private-copy{color:#9a8174!important}.board-badge{display:inline-block;border-radius:20px;padding:4px 8px;background:#fff1e8;color:#bc7658;font-size:10px;font-weight:700}.board-more-button{justify-self:center}.board-compose{margin-top:18px;padding:22px}.board-compose h2,.board-reply-section>h2{margin:0;font-family:'Nanum Myeongjo',serif;font-size:22px}.board-compose label,.board-edit-form label,.board-reply-form label{display:grid;gap:7px;color:#6f6b72;font-size:12px}.board-compose-actions,.board-detail-actions{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.board-compose-actions small{color:#aaa;font-size:10px}.board-access-note{margin:16px 0 0;padding:13px 15px;border-radius:12px;background:#fff9f3;color:#8d786b;font-size:12px;line-height:1.65}.board-detail-shell{max-width:860px}.board-detail-card,.board-reply-section{background:#fff;border:1px solid var(--line);border-radius:18px;padding:24px}.board-detail-card h2{margin:0 0 18px;font-family:'Nanum Myeongjo',serif;font-size:26px;line-height:1.45}.board-detail-content{white-space:pre-wrap;color:#4f4a47;font-size:14px;line-height:1.9}.board-detail-actions{justify-content:flex-end;margin-top:22px;padding-top:16px;border-top:1px solid var(--line)}.board-edit-form{display:grid;gap:12px}.board-reply-section{display:grid;gap:14px;margin-top:16px}.board-comment{padding:14px 0;border-top:1px solid var(--line)}.board-comment:first-child{border-top:0;padding-top:0}.board-comment strong{font-size:12px;color:#b9795e}.board-comment p{margin:7px 0;white-space:pre-wrap;color:#4f4a47;font-size:13px;line-height:1.75}.board-comment small{color:#aaa;font-size:10px}.board-comment.mine strong{color:#5c9270}.board-reply-form{margin-top:4px;padding:16px;background:#fcfaf7}@media(max-width:700px){.board-toolbar{display:grid}.board-search{width:100%}.board-search input{width:auto;flex:1}.board-compose,.board-detail-card,.board-reply-section{padding:18px}.board-detail-card h2{font-size:22px}.board-compose-actions .primary-action{width:100%}.board-detail-actions .secondary-action{flex:1}.board-mode-tabs{position:sticky;top:8px;z-index:5}}
.growth-balance{background:#f5eee7;border:1px solid #efdfd0;border-radius:20px;padding:28px;margin-bottom:16px}.growth-balance span,.growth-balance small{display:block;color:#a98d7d;font-size:12px}.growth-balance strong{display:block;color:#d68160;font-family:'Nanum Myeongjo',serif;font-size:48px;margin:10px 0}.growth-amount{color:#d68160;font-size:18px}
.notification-list{display:grid;gap:10px}.notification-card{display:flex;justify-content:space-between;align-items:center;gap:16px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}.notification-card.read{opacity:.65}.notification-card h2{font-size:16px;margin:8px 0 6px}.notification-card p{font-size:12px;color:var(--muted);margin:0 0 8px}.notification-card small{font-size:10px;color:#aaa}
.public-shell{min-height:100vh;background:#fcfaf7}.public-nav{height:76px;max-width:1160px;margin:auto;padding:0 28px;display:flex;justify-content:space-between;align-items:center}.public-brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink)}.public-brand span{width:34px;height:34px;border-radius:12px;background:#f4d09c;display:grid;place-items:center;color:#9b6d36}.public-brand strong{font-size:15px}.public-nav>div{display:flex;align-items:center;gap:22px}.public-nav a{color:#807b7a;text-decoration:none;font-size:12px}.public-nav .nav-login{border:1px solid var(--line);background:#fff;border-radius:20px;padding:9px 15px}.public-hero{max-width:1160px;margin:0 auto;padding:76px 70px 82px;display:flex;justify-content:space-between;align-items:center;gap:40px}.public-hero h1{font-family:'Nanum Myeongjo',serif;font-size:48px;line-height:1.35;margin:15px 0}.public-hero h1 em{color:#d77e5b;font-style:normal}.public-hero>div>p:not(.eyebrow){color:#9b8e88;font-size:15px;line-height:1.8}.public-actions{display:flex;gap:9px;margin-top:25px}.public-actions a{text-decoration:none}.public-actions .primary-action,.public-actions .secondary-action{display:inline-block}.public-plate{width:300px;height:300px;border-radius:50%;background:#f4e6d7;border:13px solid #ead6bd;display:grid;place-items:center;text-align:center;box-shadow:0 12px 0 #ddc7ac;color:#a89178}.public-plate span{font-size:35px;color:#e7a66f}.public-plate strong{font-family:'Nanum Myeongjo',serif;color:#ce9471;font-size:22px;line-height:1.45}.public-plate small{font-size:12px;line-height:1.7}.public-section{max-width:1060px;margin:0 auto;padding:72px 28px}.public-section h2{font-family:'Nanum Myeongjo',serif;font-size:29px;margin:12px 0 28px}.service-grid,.role-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.service-grid article,.public-role{background:#fff;border:1px solid var(--line);border-radius:18px;padding:23px}.service-grid b,.public-role strong{font-size:17px}.service-grid p,.public-role span{display:block;color:var(--muted);font-size:13px;line-height:1.7}.public-role{text-decoration:none;color:var(--ink);display:grid;gap:8px}.public-role small{color:#b9795e;font-size:11px}.public-footer{text-align:center;color:#aaa;font-size:11px;padding:25px;border-top:1px solid var(--line)}
@media(max-width:700px){.public-nav{padding:0 18px}.public-nav>div a:not(.nav-login){display:none}.public-hero{padding:50px 24px;display:block}.public-hero h1{font-size:36px}.public-plate{width:240px;height:240px;margin:40px auto 0}.service-grid,.role-grid{grid-template-columns:1fr}.public-section{padding:52px 20px}}
.demo-banner{position:relative;z-index:20;background:#fff3d9;border-bottom:1px solid #f0d8a8;color:#92754b;text-align:center;padding:8px 14px;font-size:11px}.demo-banner span{font-weight:bold;margin-right:8px;color:#ad7c37}
.account-bar{position:relative;z-index:19;display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:8px 24px;background:#fff;border-bottom:1px solid var(--line);color:#8d8784;font-size:11px}.account-bar strong{color:var(--ink)}.account-bar button{border:1px solid var(--line);border-radius:16px;background:#fff;padding:6px 11px;font-size:11px;cursor:pointer}@media(max-width:700px){.account-bar{padding:8px 14px}}
.worksheet-answer-review{display:grid;gap:12px;margin:18px 0 14px;padding:16px;border:1px solid #e1eee2;border-radius:14px;background:#fbfffb}.worksheet-answer-review .card-kicker{margin:0;color:#6f9b78;font-size:11px;font-weight:700}.worksheet-answer-summary{margin:0;color:#6f7f72;font-size:11px}.worksheet-answer-list{display:grid;gap:8px;max-height:420px;overflow:auto}.worksheet-answer-item{display:grid;grid-template-columns:minmax(100px,auto) 1fr;gap:10px;align-items:start;padding:9px 10px;border-radius:10px;background:#f1f8f1;font-size:12px;line-height:1.55}.worksheet-answer-item strong{color:#527a5a}.worksheet-answer-item span{min-width:0;overflow-wrap:anywhere;color:#4b514c}.worksheet-answer-correct{display:inline-block;margin-left:7px;color:#dc4a4a;font-style:normal;font-weight:700}.worksheet-answer-image{display:block;max-width:100%;max-height:220px;border:1px solid #dce8de;border-radius:10px;background:#fff;object-fit:contain}.worksheet-answer-review .compact-action{justify-self:start;white-space:nowrap}.day-card .worksheet-answer-review + .primary-action{width:100%;margin-top:2px}@media(max-width:700px){.worksheet-answer-review{padding:13px}.worksheet-answer-item{grid-template-columns:1fr;gap:3px}}
.admin-users-shell{max-width:1180px}.admin-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:12px;margin-top:16px}.admin-tabs{display:flex;gap:5px}.admin-tabs button{border:0;background:transparent;border-radius:11px;padding:10px 14px;color:var(--muted);font-size:12px;cursor:pointer}.admin-tabs button.active{background:#fff1e8;color:#b9795e;font-weight:bold}.admin-tabs b{margin-left:5px;font-size:10px}.admin-filters{display:flex;gap:8px;align-items:center}.admin-search input,.admin-filters select{border:1px solid var(--line);border-radius:10px;background:#fffdfb;padding:10px 12px;color:var(--ink);font:inherit;font-size:12px}.admin-search input{width:210px}.admin-filters select{min-width:115px}.admin-management-card{padding:26px 30px}.admin-record-list{display:grid;margin-top:20px}.admin-record{display:flex;align-items:center;gap:14px;border-top:1px solid var(--line);padding:16px 0}.record-avatar{width:40px;height:40px;border-radius:14px;display:grid;place-items:center;background:#fbe3d3;color:#d68160;font-weight:bold}.record-main{display:grid;gap:5px;flex:1;min-width:0}.record-main strong{font-size:14px}.record-main span,.record-main small{color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.record-main small{font-size:10px;color:#aaa}.record-main em{font-style:normal}.record-status.pending,.record-status.requested{color:#c58b45}.record-status.active{color:#5c9270}.record-status.rejected,.record-status.ended{color:#bd7770}.record-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.compact-action{padding:8px 11px;font-size:11px}.danger-action{color:#bd7770}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.modal-backdrop{position:fixed;inset:0;background:#373a4555;display:grid;place-items:center;padding:20px;z-index:50}.edit-modal{width:min(100%,520px);background:#fff;border-radius:22px;padding:28px;box-shadow:0 20px 60px #373a4533}.edit-modal-header{display:flex;justify-content:space-between;align-items:flex-start}.edit-modal h2{font-family:'Nanum Myeongjo',serif;font-size:24px;margin:0}.modal-close{border:0;background:transparent;color:#aaa;font-size:25px;cursor:pointer;line-height:1}.edit-participants{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:22px 0}.edit-participants div{background:#fff9f3;border:1px solid #f1e5d9;border-radius:12px;padding:13px}.edit-participants span{display:block;color:#a98d7d;font-size:10px;margin-bottom:6px}.edit-participants strong{font-size:13px}.edit-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.edit-modal-actions button:disabled{opacity:.6;cursor:wait}@media(max-width:700px){.admin-toolbar{display:block}.admin-filters{margin-top:12px;display:grid;grid-template-columns:1fr 1fr}.admin-search{grid-column:1 / -1}.admin-search input{width:100%}.admin-filters .secondary-action{grid-column:1 / -1}.admin-record{align-items:flex-start}.record-actions{margin-left:auto}.edit-participants{grid-template-columns:1fr}.admin-management-card{padding:22px 18px}}
.review-note-label{display:grid;gap:6px;margin:12px 0;color:#6f7f72;font-size:11px;font-weight:700}.review-note-label textarea{width:100%;min-height:76px;resize:vertical;border:1px solid #dce8de;border-radius:10px;background:#fff;padding:10px;color:var(--ink);font:inherit;font-size:12px;line-height:1.5}.review-note-label textarea:focus{outline:2px solid #b8dcc1;outline-offset:1px}
.guardian-confirm-card{display:grid;grid-template-columns:auto 1fr minmax(180px,1.4fr) auto;gap:12px;align-items:center;margin-top:16px;padding:14px;border:1px solid #f0dfc8;border-radius:16px;background:linear-gradient(135deg,#fffaf1,#fff4e5)}.guardian-confirm-seal{display:grid;place-items:center;width:42px;height:42px;border:3px solid #e7a56f;border-radius:50%;background:#fff;color:#d68160;font-size:22px;font-weight:900;box-shadow:0 3px 0 #f0d0b0}.guardian-confirm-copy{display:grid;gap:4px}.guardian-confirm-copy strong{color:#9b6848;font-size:13px}.guardian-confirm-copy span{color:#aa8b79;font-size:10px;line-height:1.4}.guardian-confirm-card .review-note-label{margin:0}.guardian-confirm-button{white-space:nowrap}@media(max-width:760px){.guardian-confirm-card{grid-template-columns:auto 1fr}.guardian-confirm-card .review-note-label{grid-column:1 / -1}.guardian-confirm-button{grid-column:1 / -1;width:100%}}
.notification-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.notification-actions .compact-action{white-space:nowrap}
.guardian-push-card{display:grid;gap:12px}.guardian-push-card p{margin:6px 0 0;color:var(--muted);font-size:11px;line-height:1.65}.guardian-push-card .notice-modal-label{margin:0;color:#d68160;font-weight:700}.guardian-push-button{width:100%;border:0;cursor:pointer}.guardian-push-button:disabled{opacity:.55;cursor:not-allowed}.guardian-push-card .push-help{padding:9px 10px;border-radius:10px;background:#fff8ef;color:#9a735b}.guardian-push-card .push-status{color:#6f7f72}
.push-target-submission{outline:3px solid #e7a56f;outline-offset:4px;box-shadow:0 12px 30px rgba(214,129,96,.2)}
.access-admin-card{margin-top:16px}.access-admin-card>label{display:grid;gap:6px;max-width:420px;color:var(--muted);font-size:12px}.access-admin-card select,.access-form input,.access-form select,.access-form textarea{width:100%;border:1px solid var(--line);border-radius:10px;background:#fffdfb;padding:10px 12px;color:var(--ink);font:inherit}.access-record-list{display:grid;margin:12px 0;color:var(--muted);font-size:12px}.access-record{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.access-record>div{display:grid;gap:4px}.access-record strong{color:var(--ink);font-size:13px}.access-record span{font-size:11px}.access-form{display:grid;grid-template-columns:repeat(3,minmax(140px,1fr));gap:12px;align-items:end;margin-top:18px;padding:16px;border-radius:14px;background:#fff9f3}.access-form h3{grid-column:1/-1;margin:0;font-size:15px}.access-form label{display:grid;gap:6px;color:var(--muted);font-size:11px}.access-form .wide-field{grid-column:1/-1}.access-form textarea{min-height:70px;resize:vertical}.access-form button{border:0;cursor:pointer}@media(max-width:760px){.access-form{grid-template-columns:1fr}.access-form h3,.access-form .wide-field{grid-column:auto}.access-record{align-items:flex-start}}
.temporary-password-panel{display:grid;grid-template-columns:1fr auto;gap:8px 14px;align-items:center;padding:16px;border:1px solid #f0d8c9;border-radius:14px;background:#fff9f3}.temporary-password-panel span,.temporary-password-panel small{grid-column:1 / -1}.temporary-password-panel span{color:#8c6c5b;font-size:11px}.temporary-password-panel strong{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:20px;letter-spacing:.08em;overflow-wrap:anywhere}.temporary-password-panel small{color:#9b8174;font-size:10px;line-height:1.6}@media(max-width:700px){.temporary-password-panel{grid-template-columns:1fr}.temporary-password-panel span,.temporary-password-panel small{grid-column:auto}}
/* Weekly teacher review and scheduled release */
.weekly-release-record{align-items:flex-start}.weekly-release-record .record-main{gap:7px}.release-date-input{display:grid;gap:5px;margin-top:8px;color:var(--muted);font-size:11px}.release-date-input input{max-width:240px;border:1px solid var(--line);border-radius:9px;padding:8px;background:#fff}.review-action-panel{margin-top:20px;border-top:1px solid var(--line);padding-top:20px}.release-review-history{margin-top:18px;padding:16px;border-radius:14px;background:#fcfaf7}.release-review-history>strong{font-size:13px}.release-review-history p{display:grid;gap:4px;margin:10px 0 0;font-size:12px}.release-review-history p span{color:var(--muted);font-size:11px}
/* Shared Atelier return control. The destination is resolved from the server session. */
.atelier-study-home {
  position: fixed;
  top: 16px;
  left: 16px;
  z-index: 12000;
  display: inline-flex;
  min-height: 42px;
  align-items: center;
  justify-content: center;
  padding: 0 18px;
  border: 1px solid rgba(255, 255, 255, 0.72);
  border-radius: 999px;
  background: rgba(20, 35, 67, 0.92);
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.22);
  color: #ffffff;
  font-size: 15px;
  font-weight: 800;
  line-height: 1;
  text-decoration: none;
  backdrop-filter: blur(8px);
}

.admin-support-shell {
  min-height: 0;
  padding-bottom: 0;
}

.admin-support-shell .admin-management-card + .admin-management-card {
  margin-top: 16px;
}

.atelier-study-home:hover,
.atelier-study-home:focus-visible {
  background: #315adf;
  color: #ffffff;
  outline: 3px solid rgba(91, 134, 255, 0.35);
  outline-offset: 3px;
}

@media (max-width: 640px) {
  .atelier-study-home {
    top: 10px;
    left: 10px;
    min-height: 38px;
    padding: 0 14px;
    font-size: 14px;
  }
}

.admin-menu-grid{margin:18px 0}.admin-menu-grid .admin-card{min-height:160px}.admin-management-card{margin-top:16px}.student-multi-field{border:1px solid var(--line);border-radius:14px;padding:14px}.student-multi-field legend{padding:0 6px;font-weight:700}.student-check-grid{display:grid;grid-template-columns:repeat(3,minmax(130px,1fr));gap:8px;max-height:280px;overflow:auto;margin-top:12px}.student-check-grid label{display:flex;gap:8px;align-items:center;padding:9px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:12px}.student-check-grid input{width:auto}.relationship-lock-note{color:#a06f55;font-size:12px}.relationship-write:disabled{opacity:.55;cursor:not-allowed}@media(max-width:760px){.student-check-grid{grid-template-columns:1fr 1fr}}
