@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');
:root{--ink:#17231e;--muted:#748079;--green:#0f6f4b;--green2:#18a66d;--mint:#e7f4ed;--lime:#d9f56d;--paper:#f4f3ed;--white:#fff;--line:#dde2dd;--shadow:0 18px 50px rgba(17,39,28,.09);--side:248px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Noto Sans KR','DM Sans',sans-serif;font-size:14px}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button{cursor:pointer}.eyebrow{margin:0 0 10px;color:var(--green);font-family:'DM Sans',sans-serif;font-size:11px;font-weight:700;letter-spacing:.18em}.muted{color:var(--muted)}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--side);display:flex;flex-direction:column;padding:28px 20px 22px;background:#10271e;color:white;z-index:20}.logo{display:flex;align-items:center;gap:12px;padding:0 8px 34px}.logo>span,.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--lime);color:#17321f;font-family:'DM Sans';font-size:20px;font-weight:800}.logo b{display:block;font-size:15px}.logo small{color:#89a196;font-family:'DM Sans';font-size:8px;letter-spacing:.18em}.sidebar nav{display:flex;flex-direction:column;gap:6px}.sidebar nav a{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:9px;color:#9fb3aa;font-weight:600;transition:.2s}.sidebar nav a:hover,.sidebar nav a.active{background:#1b3b2e;color:#fff}.sidebar nav a.active:after{content:'';margin-left:auto;width:5px;height:5px;border-radius:50%;background:var(--lime)}.sidebar nav i{width:18px;height:18px;border:1.5px solid currentColor;border-radius:5px}.side-project{margin-top:auto;padding:18px;border:1px solid #2c4b3e;border-radius:12px;background:#163126}.side-project small{color:#83a093;font-family:'DM Sans';font-size:9px;letter-spacing:.12em}.side-project strong{display:block;margin:8px 0;font:700 32px 'DM Sans'}.side-project sup{font-size:14px}.mini-bar,.wide-progress{height:4px;overflow:hidden;border-radius:9px;background:#345044}.mini-bar span,.wide-progress span{display:block;height:100%;background:var(--lime)}.side-project p{margin:10px 0 0;color:#8da498;font:10px 'DM Sans'}.account{display:flex;align-items:center;gap:10px;margin-top:18px;padding:12px 8px 0;border-top:1px solid #294438}.account>span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#2b5743;font-weight:700}.account div{min-width:0;flex:1}.account b,.account small{display:block}.account b{font-size:12px}.account small{color:#7f9b8d;font-size:10px}.account>a{color:#89a196}.app{min-height:100vh;margin-left:var(--side)}.topbar{height:96px;display:flex;align-items:center;padding:0 42px;border-bottom:1px solid #e0e2dc;background:rgba(244,243,237,.92);backdrop-filter:blur(10px);position:sticky;top:0;z-index:10}.topbar p{margin:0;color:var(--muted);font-size:10px}.topbar h1{margin:2px 0 0;font-size:20px}.top-meta{margin-left:auto;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}.top-meta b{margin-left:14px;color:var(--ink);font-family:'DM Sans'}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#20bd75;box-shadow:0 0 0 4px rgba(32,189,117,.12)}.menu-toggle{display:none;border:0;background:none;font-size:22px}.content{max-width:1500px;margin:auto;padding:36px 42px 70px}footer{padding:20px 42px 30px;color:#9a9f9a;font:9px 'DM Sans';letter-spacing:.1em}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:43px;padding:0 18px;border:1px solid transparent;border-radius:8px;font-weight:700}.btn.primary{background:var(--green);color:#fff}.btn.primary:hover{background:#0b5c3e}.btn.ghost{border-color:#cfd6d1;background:rgba(255,255,255,.55)}.btn.wide{width:100%}.alert{margin-bottom:20px;padding:13px 16px;border-radius:8px;background:#e1f5e9;color:#16613f;font-weight:600}.alert.error{background:#fae5e1;color:#a53e32}.hero{min-height:340px;display:flex;align-items:center;justify-content:space-between;padding:48px 58px;border-radius:18px;background:#e5efe8;position:relative;overflow:hidden}.hero:before{content:'';position:absolute;right:-100px;top:-160px;width:540px;height:540px;border:1px solid rgba(20,111,75,.13);border-radius:50%;box-shadow:0 0 0 60px rgba(255,255,255,.18),0 0 0 120px rgba(20,111,75,.035)}.hero>div:first-child{position:relative;z-index:1}.hero h2{margin:0;font-size:36px;line-height:1.35;letter-spacing:-.04em}.hero h2 em{color:var(--green);font-style:normal}.hero>div>p:not(.eyebrow){margin:16px 0 25px;color:#63746b}.hero-actions{display:flex;gap:9px}.progress-orbit{position:relative;z-index:1;display:grid;place-items:center;width:202px;height:202px;margin-right:60px;border:1px solid rgba(15,111,75,.22);border-radius:50%;box-shadow:0 0 0 22px rgba(255,255,255,.35)}.progress-orbit:before{content:'';position:absolute;inset:10px;border-top:4px solid var(--green);border-right:4px solid transparent;border-radius:50%;transform:rotate(30deg)}.progress-orbit div{text-align:center}.progress-orbit small,.progress-orbit span{display:block;color:var(--muted);font:9px 'DM Sans';letter-spacing:.12em}.progress-orbit strong{display:block;font:700 52px 'DM Sans';line-height:1.1}.progress-orbit sup{font-size:18px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0 28px}.stat-grid article{display:flex;align-items:center;gap:16px;padding:22px;background:#fff;border:1px solid #e5e6e1;border-radius:12px}.stat-grid i{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--mint);color:var(--green);font:700 9px 'DM Sans'}.stat-grid small{display:block;color:var(--muted);font:9px 'DM Sans';letter-spacing:.12em}.stat-grid strong{display:block;margin:3px 0;font:700 22px 'DM Sans'}.stat-grid p{margin:0;color:#8d958f;font-size:10px}.dashboard-grid{display:grid;grid-template-columns:1.45fr .8fr;gap:14px}.panel{padding:27px;background:#fff;border:1px solid #e5e6e1;border-radius:14px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:22px}.panel-head h3{margin:0;font-size:18px}.panel-head a{color:var(--green);font-size:11px;font-weight:700}.latest-update{display:flex;gap:20px}.date-block{width:60px;height:68px;display:grid;place-content:center;text-align:center;border-radius:9px;background:#183c2d;color:#fff}.date-block strong{font:700 25px 'DM Sans';line-height:1}.date-block span{font:9px 'DM Sans';text-transform:uppercase}.latest-update>div:last-child{flex:1}.tag{display:inline-block;padding:4px 8px;border-radius:4px;background:var(--mint);color:var(--green);font-size:10px;font-weight:700}.latest-update h4{margin:8px 0 6px;font-size:16px}.latest-update p{margin:0 0 10px;color:#66746d;line-height:1.65}.latest-update small{color:#9aa19d}.week-focus{display:flex;align-items:center;gap:16px;margin-top:24px;padding:17px;border-radius:10px;background:#f5f6f2}.week-focus>span{color:var(--green);font:700 10px 'DM Sans'}.week-focus div{flex:1}.week-focus b{font-size:12px}.week-focus p{margin:3px 0 0;color:#818983;font-size:10px}.week-focus>strong{padding:5px 8px;border-radius:4px;background:#dff2e8;color:var(--green);font-size:9px}.doc-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-top:1px solid #eee}.doc-row>span{display:grid;place-items:center;width:40px;height:44px;border-radius:6px;background:#f0efe9;color:var(--green);font:700 8px 'DM Sans'}.doc-row div{min-width:0;flex:1}.doc-row b,.doc-row small{display:block}.doc-row b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.doc-row small{margin-top:4px;color:#999;font-size:9px}.doc-row i{color:#999}.page-intro{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:28px}.page-intro h2{margin:0;font-size:30px}.page-intro>div>p:last-child{margin:8px 0 0;color:var(--muted)}.date-badge{padding:12px 17px;border-left:3px solid var(--green);background:#fff}.date-badge small,.date-badge b{display:block}.date-badge small{color:var(--muted);font:8px 'DM Sans';letter-spacing:.13em}.date-badge b{font:700 16px 'DM Sans'}.schedule-summary{display:flex;align-items:center;gap:26px;padding:16px 20px;background:#173b2c;color:#fff;border-radius:11px 11px 0 0}.schedule-summary span{font-size:11px}.schedule-summary b{margin-right:6px;color:#90ac9e}.wide-progress{flex:1;margin-left:20px;background:#355548}.timeline-wrap{padding:28px 0 10px;border-radius:0 0 14px 14px;background:#fff;overflow:hidden}.timeline{display:flex;flex-direction:row;align-items:flex-start;gap:0;overflow-x:auto;padding:0 28px 20px;scroll-snap-type:x proximity}.timeline-card{min-width:295px;max-width:295px;scroll-snap-align:start}.timeline-top{display:flex;align-items:center;justify-content:space-between;padding-right:25px}.timeline-top>span{font:700 22px 'DM Sans';color:#a7aea9}.timeline-card.current .timeline-top>span{color:var(--green)}.timeline-top time{color:#8a938d;font-size:10px}.timeline-pin{height:31px;border-bottom:1px solid #d9ded9;position:relative}.timeline-pin:before{content:'';position:absolute;bottom:-5px;left:0;width:9px;height:9px;border-radius:50%;background:#b6bdb8}.timeline-card.current .timeline-pin:before{background:var(--green);box-shadow:0 0 0 6px #dceee5}.timeline-body{min-height:205px;margin:20px 25px 0 0;padding:20px;border:1px solid #e2e6e2;border-radius:10px;background:#fafaf7}.timeline-card.current .timeline-body{border-color:#b9dac8;background:#f2f9f5}.timeline-body h3{margin:10px 0 8px;font-size:15px}.timeline-body p{min-height:64px;margin:0;color:#64736b;font-size:11px;line-height:1.65}.timeline-body footer{display:flex;justify-content:space-between;padding:14px 0 0;color:#969f9a;font-size:9px}.timeline-body footer b{color:var(--green)}.timeline-origin{min-width:160px;padding-top:48px;color:#a1a9a4}.timeline-origin b,.timeline-origin span{display:block;margin-top:10px;font:10px 'DM Sans'}.scroll-hint{text-align:center;color:#a3aaa6;font:9px 'DM Sans';letter-spacing:.1em}.goal-ruler{display:flex;align-items:center;gap:12px;margin-bottom:20px;color:#737e77;font:10px 'DM Sans'}.goal-ruler div{height:4px;flex:1;background:#d9ddd8}.goal-ruler i{display:block;height:100%;background:var(--green)}.goals-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.goal-card{display:grid;grid-template-columns:64px 1fr auto;gap:18px;align-items:start;padding:24px;border:1px solid #e0e3df;border-radius:12px;background:#fff}.goal-card.active{border-color:#93c9ae;box-shadow:0 12px 35px rgba(20,111,75,.09)}.week-number{display:grid;place-items:center;width:58px;height:63px;background:#f1f2ed;border-radius:8px}.active .week-number{background:#153a2b;color:#fff}.week-number small{font:7px 'DM Sans';letter-spacing:.15em}.week-number b{font:700 24px 'DM Sans'}.goal-date{color:var(--green);font:700 9px 'DM Sans'}.goal-card h3{margin:5px 0 8px;font-size:15px}.goal-card ul{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.goal-card li{padding:4px 7px;border-radius:4px;background:#f1f2ee;color:#6b756f;font-size:9px}.status-label{padding:5px 8px;border-radius:12px;background:#eef0ed;color:#8b948e;font-size:9px}.active .status-label{background:#dcf2e6;color:var(--green)}.board-layout{display:grid;grid-template-columns:1fr 270px;gap:14px}.board-list,.board-guide{background:#fff;border:1px solid #e1e4e0;border-radius:13px}.board-head{display:flex;justify-content:space-between;padding:18px 22px;border-bottom:1px solid #eee}.board-head span{color:var(--muted)}.post-row{display:grid;grid-template-columns:78px 1fr auto;gap:18px;align-items:center;padding:21px 22px;border-bottom:1px solid #eee;transition:.2s}.post-row:hover{background:#f7faf7}.post-category{padding:6px;border-radius:5px;background:var(--mint);color:var(--green);text-align:center;font-size:9px;font-weight:700}.post-row h3{margin:0 0 6px;font-size:14px}.post-row p{margin:0 0 7px;color:#718078;font-size:11px}.post-row small{color:#9ba19d;font-size:9px}.post-counts{display:flex;gap:10px;color:#7d8881;font-size:10px}.board-guide{padding:25px}.board-guide h3{margin:0 0 22px}.board-guide ol{margin:0;padding:0;list-style:none}.board-guide li{display:grid;grid-template-columns:25px 1fr;position:relative;margin-bottom:22px;counter-increment:guide}.board-guide li:before{content:'0' counter(guide);color:var(--green);font:700 9px 'DM Sans'}.board-guide b,.board-guide span{display:block}.board-guide b{font-size:12px}.board-guide span{margin-top:3px;color:#87908b;font-size:10px;line-height:1.55}.empty{padding:65px 20px;text-align:center;color:#78847d}.empty b,.empty p{display:block}.empty a{color:var(--green);font-weight:700}.post-detail{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:14px;min-height:calc(100vh - 230px)}.post-content,.comments{background:#fff;border:1px solid #e1e4e0;border-radius:13px}.post-content{padding:34px}.back-link{display:block;margin-bottom:30px;color:var(--green);font-size:11px;font-weight:700}.post-content>h2{margin:10px 0;font-size:27px}.post-meta{display:flex;gap:10px;padding-bottom:22px;border-bottom:1px solid #eee;color:#8c9690;font-size:10px}.post-meta b{color:var(--ink)}.post-body{min-height:210px;padding:30px 0;font-size:14px;line-height:1.9}.attachments{border-top:1px solid #eee;padding-top:20px}.attachments h3{font-size:13px}.attachments h3 span{color:var(--green)}.attachments>a{display:flex;align-items:center;gap:12px;margin-top:8px;padding:12px;border-radius:7px;background:#f5f6f2}.attachments>a>span{display:grid;place-items:center;width:34px;height:34px;border-radius:6px;background:#fff;color:var(--green)}.attachments b,.attachments small{display:block}.attachments b{font-size:11px}.attachments small{color:#929a95;font-size:9px}.comments{display:flex;flex-direction:column;max-height:calc(100vh - 170px);position:sticky;top:118px}.comments header{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid #eee}.comments h3{margin:0}.comments h3 span{color:var(--green)}.comment-scroll{flex:1;overflow-y:auto;padding:20px;background:#f7f8f5}.empty-chat{display:grid;place-items:center;height:100%;color:#9ca39f;font-size:11px}.bubble{max-width:88%;margin-bottom:13px}.bubble.mine{margin-left:auto}.bubble small{display:block;margin:0 4px 5px;color:#98a09b;font-size:8px}.bubble.mine small{text-align:right}.bubble p{margin:0;padding:10px 12px;border-radius:4px 12px 12px 12px;background:#fff;border:1px solid #e5e7e3;font-size:11px;line-height:1.6}.bubble.mine p{border:0;border-radius:12px 4px 12px 12px;background:#dff2e7}.comment-form{display:flex;gap:8px;padding:13px;border-top:1px solid #eee}.comment-form textarea{flex:1;resize:none;border:1px solid #dfe3de;border-radius:8px;padding:10px}.comment-form button{width:40px;border:0;border-radius:8px;background:var(--green);color:#fff;font-size:20px}.document-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.document-card{overflow:hidden;border:1px solid #e0e3df;border-radius:13px;background:#fff;transition:.25s}.document-card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}.doc-cover{height:142px;padding:20px;display:flex;flex-direction:column;background:#16382b;color:#fff;position:relative;overflow:hidden}.doc-cover:after{content:'';position:absolute;right:-40px;top:-50px;width:170px;height:170px;border:1px solid #436657;border-radius:50%;box-shadow:0 0 0 28px #1d4233}.doc-cover span{color:var(--lime);font:700 12px 'DM Sans'}.doc-cover b{margin:auto 0;font-size:13px;position:relative;z-index:1}.doc-cover i{color:#769386;font:8px 'DM Sans';letter-spacing:.12em}.document-card>div:last-child{padding:22px}.document-card small{color:#8e9791;font:9px 'DM Sans'}.document-card h3{margin:8px 0;font-size:15px}.document-card p{min-height:43px;margin:0;color:#77827b;font-size:10px;line-height:1.6}.open-doc{display:block;margin-top:18px;color:var(--green);font-size:10px;font-weight:700}dialog{width:min(590px,calc(100% - 30px));padding:0;border:0;border-radius:15px;box-shadow:0 30px 100px rgba(0,0,0,.25)}dialog::backdrop{background:rgba(9,24,17,.58);backdrop-filter:blur(3px)}.modal-form{padding:32px;position:relative}.modal-form h2{margin:0 0 22px}.modal-close{position:absolute;right:20px;top:16px;border:0;background:none;color:#89938d;font-size:25px}.modal-form label{display:block;margin:14px 0;color:#53625a;font-size:11px;font-weight:700}.modal-form input:not([type=file]):not([type=range]),.modal-form textarea,.modal-form select{width:100%;margin-top:7px;padding:12px;border:1px solid #dce1dc;border-radius:7px;background:#fbfcfa;outline:none}.modal-form textarea{resize:vertical}.modal-form input:focus,.modal-form textarea:focus,.modal-form select:focus{border-color:var(--green)}.modal-form output{float:right;color:var(--green)}.modal-form input[type=range]{width:100%;accent-color:var(--green)}.dropzone{padding:22px;border:1px dashed #aab8b0;border-radius:9px;text-align:center;background:#f7faf8;cursor:pointer}.dropzone.dragging{border-color:var(--green);background:#eaf6ef}.dropzone input{display:none}.dropzone b,.dropzone span{display:block}.dropzone span{margin-top:5px;color:#8a958f;font-size:9px}.dropzone #file-list{margin-top:10px;color:var(--green);font-size:9px}.login-page{min-height:100vh;background:#10271e}.login-shell{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr}.login-brand{display:flex;flex-direction:column;justify-content:center;padding:8vw;color:#fff;position:relative;overflow:hidden}.login-brand:after{content:'';position:absolute;right:-230px;bottom:-210px;width:600px;height:600px;border:1px solid #345045;border-radius:50%;box-shadow:0 0 0 70px rgba(255,255,255,.02),0 0 0 140px rgba(255,255,255,.018)}.login-brand .brand-mark{margin-bottom:60px}.login-brand .eyebrow{color:var(--lime)}.login-brand h1{margin:0;font-size:45px;line-height:1.35;letter-spacing:-.04em}.login-brand h1 em{color:var(--lime);font-style:normal}.login-brand>p:not(.eyebrow){color:#8fa59a;line-height:1.8}.login-progress{width:330px;margin-top:50px}.login-progress span{display:block;width:5%;height:3px;background:var(--lime)}.login-progress:before{content:'';display:block;height:1px;background:#40594e}.login-progress b{display:block;margin-top:10px;color:#718c7f;font:9px 'DM Sans';letter-spacing:.15em}.login-card{display:flex;flex-direction:column;justify-content:center;padding:12vw;max-width:680px;background:var(--paper)}.login-card h2{margin:0;font-size:28px}.login-card>.muted{margin:9px 0 25px;font-size:11px}.login-form label{display:block;margin:14px 0;color:#536159;font-size:11px;font-weight:700}.login-form input{width:100%;margin-top:7px;padding:14px;border:1px solid #d5dad5;border-radius:7px;background:#fff}.login-form .login-remember{display:flex;align-items:center;gap:7px;margin:-4px 0 18px;font-size:11px;font-weight:700;color:#536159;cursor:pointer}.login-form .login-remember input{all:revert;width:auto;margin:0;padding:0;border:0;background:none;accent-color:var(--green);cursor:pointer}.secure-note{margin-top:18px;color:#8a938e;text-align:center;font-size:9px}.mobile-logo{display:none}
@media(max-width:1050px){:root{--side:210px}.content{padding:30px}.topbar{padding:0 30px}.hero{padding:42px}.progress-orbit{margin-right:10px}.stat-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.post-detail{grid-template-columns:1fr}.comments{position:static;min-height:500px}.document-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:.25s;width:260px}.sidebar.open{transform:none}.app{margin-left:0}.topbar{height:76px;padding:0 18px}.menu-toggle{display:block;margin-right:12px}.topbar p,.top-meta{display:none}.content{padding:20px 14px 50px}.hero{min-height:auto;padding:30px 24px}.hero h2{font-size:27px}.progress-orbit{display:none}.stat-grid{grid-template-columns:repeat(2,1fr);gap:8px}.stat-grid article{padding:14px;gap:9px}.stat-grid i{display:none}.dashboard-grid{display:block}.documents-mini{margin-top:10px}.page-intro{align-items:flex-start;gap:15px}.page-intro h2{font-size:25px}.page-intro>div>p:last-child{font-size:11px}.schedule-summary{gap:12px;flex-wrap:wrap}.wide-progress{flex-basis:100%;margin:0}.goals-grid{grid-template-columns:1fr}.goal-card{grid-template-columns:52px 1fr}.status-label{display:none}.board-layout{grid-template-columns:1fr}.board-guide{display:none}.post-row{grid-template-columns:1fr auto}.post-category{width:max-content}.post-row>div:nth-child(2){grid-column:1/3}.document-grid{grid-template-columns:1fr}.post-content{padding:24px 18px}.login-shell{display:block}.login-brand{display:none}.login-card{min-height:100vh;padding:28px}.mobile-logo{display:flex;align-items:center;gap:9px;margin-bottom:70px;font-weight:700}.mobile-logo span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--lime)}footer{padding:20px}.hero-actions{flex-wrap:wrap}}
.attachment-modal{width:min(1120px,calc(100% - 28px));height:min(820px,calc(100vh - 28px));background:#f3f4f0}.attachment-modal .preview-shell{height:100%;display:flex;flex-direction:column}.attachment-modal header{min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 20px;border-bottom:1px solid #dde2dd;background:#fff}.attachment-modal header h3{max-width:700px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}.attachment-modal header>div:last-child{display:flex;align-items:center;gap:8px}.attachment-modal .modal-close{position:static;width:42px;height:42px}.preview-stage{min-height:0;flex:1;display:grid;place-items:center;overflow:auto;padding:24px}.preview-stage img{display:block;max-width:100%;max-height:100%;object-fit:contain;border-radius:6px;box-shadow:0 8px 30px rgba(0,0,0,.12)}.preview-stage pre{align-self:stretch;width:100%;margin:0;padding:25px;border:1px solid #dfe3de;border-radius:8px;background:#fff;overflow:auto;color:#29342e;font:13px/1.75 Consolas,'Courier New',monospace;white-space:pre-wrap;word-break:break-word}.preview-stage iframe{width:100%;height:100%;min-height:600px;border:0;border-radius:6px;background:#fff}.preview-stage video{max-width:100%;max-height:100%;border-radius:7px;background:#000}.preview-stage audio{width:min(620px,100%)}.preview-loader,.preview-unavailable{text-align:center;color:#7b8680}.preview-loader i{display:block;width:30px;height:30px;margin:0 auto 14px;border:3px solid #dce7e0;border-top-color:var(--green);border-radius:50%;animation:preview-spin .75s linear infinite}.preview-loader span,.preview-unavailable b,.preview-unavailable p{display:block}.preview-unavailable p{color:#929b96;font-size:11px}@keyframes preview-spin{to{transform:rotate(360deg)}}
@media(max-width:760px){.attachment-modal{width:100%;max-width:none;height:100%;max-height:none;border-radius:0}.attachment-modal header{min-height:70px;padding:12px}.attachment-modal header h3{max-width:45vw;font-size:12px}.attachment-modal .btn{min-height:38px;padding:0 11px;font-size:10px}.preview-stage{padding:12px}.preview-stage iframe{min-height:calc(100vh - 95px)}}
.password-note{margin:14px 0 0;padding:10px 12px;border-radius:7px;background:#e7f1eb;color:#527064;text-align:center;font-size:9px}.password-note:before{content:'✓';display:inline-grid;place-items:center;width:16px;height:16px;margin-right:6px;border-radius:50%;background:var(--green);color:#fff;font-size:9px}
.logo .logo-emblem{width:50px;height:38px;padding:6px;border-radius:8px;background:#fff}.logo-emblem img,.brand-mark img{display:block;width:100%;height:100%;object-fit:contain}.brand-mark{width:78px;height:56px;padding:9px;border-radius:12px;background:#fff}.mobile-logo .logo-emblem{width:44px;height:34px;padding:5px;border-radius:7px;background:#fff}

/* Project-room identity: the KIST symbol is reserved for the login screen. */
.login-page{background:#fff}
.login-shell{background:#fff}
.login-brand{border-right:1px solid var(--line);background:#fff;color:var(--ink)}
.login-brand:after{display:none}
.login-brand .eyebrow{color:var(--green)}
.login-brand h1 em{color:var(--green)}
.login-brand>p:not(.eyebrow){color:var(--muted)}
.login-progress span{background:var(--green)}
.login-progress:before{background:#dce2de}
.login-progress b{color:#78857e}
.login-card{background:#fff}
.login-institution{display:flex;align-items:center;gap:18px;margin-bottom:58px}
.login-institution img{display:block;width:92px;height:auto;object-fit:contain}
.login-institution strong{color:var(--ink);font-size:18px;letter-spacing:-.03em;white-space:nowrap}
.mobile-institution{display:none}
@media(max-width:760px){.mobile-institution{display:flex;margin-bottom:70px}.mobile-institution img{width:78px}.mobile-institution strong{font-size:16px}}

/* Sidebar navigation and content readability. */
.sidebar .logo{gap:0;padding-top:2px;padding-bottom:30px}
.sidebar .logo b{font-size:17px;line-height:1.35;letter-spacing:-.02em}
.sidebar .logo small{margin-top:2px;color:#9bb0a6;font-size:13px;letter-spacing:.04em}
.sidebar nav i{display:none}
.sidebar nav .nav-icon{display:grid;place-items:center;width:21px;height:21px;flex:0 0 21px}
.sidebar nav .nav-icon svg{display:block;width:21px;height:21px}
.content{font-size:14px}
.content :where(p,small,span,a,b,strong,li,label,input,textarea,select,button,time,output){font-size:14px!important}
.content .progress-orbit strong{font-size:52px!important}
.content .stat-grid strong{font-size:22px!important}
.content .date-block strong{font-size:25px!important}
.content .week-number b{font-size:24px!important}
.content .date-badge b{font-size:16px!important}

.room-editor-panel{max-width:800px;margin:auto}
.room-editor-panel-post{max-width:none;margin:0;padding:0}
.room-editor-panel-post .room-edit-form{padding:34px}
.room-rich-label{display:block;margin:20px 0 9px;color:#53625a;font-size:14px;font-weight:700}
.room-rich-editor{overflow:hidden;border:1px solid #dce3dc;border-radius:10px;background:#fff}
.room-rich-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:9px;border-bottom:1px solid #dce3dc;background:#f7faf7}
.room-rich-toolbar button,.room-rich-photo{display:inline-flex;align-items:center;justify-content:center;min-height:35px;padding:4px 10px;border:1px solid #dbe3dc;border-radius:6px;background:#fff;color:#31463a;cursor:pointer;font-size:12px!important;font-weight:600}
.room-rich-toolbar button:hover,.room-rich-photo:hover{border-color:#71a88b;background:#ebf5ee}
.room-rich-photo{position:relative;color:var(--green)}
.room-rich-photo input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.room-rich-canvas{min-height:400px;padding:24px;outline:none;font-size:15px;line-height:1.8;overflow-wrap:anywhere;white-space:normal}
.room-rich-canvas:empty:before{content:'내용을 입력하거나 사진을 추가해 주세요.';color:#99a69d;pointer-events:none}
.room-rich-canvas:focus{box-shadow:inset 0 0 0 2px #8ac5a1}
.room-rich-canvas :where(p,div,h2,h3,ul,ol,blockquote){margin:0 0 12px}
.room-rich-canvas :where(ul,ol){padding-left:25px}
.room-rich-canvas blockquote,.post-rich-body blockquote{margin:16px 0;padding:4px 16px;border-left:3px solid var(--green);background:#f7faf7}
.room-rich-canvas img,.post-rich-body img{display:block;max-width:100%;height:auto;border-radius:7px}
.room-rich-canvas figure,.post-rich-body figure{position:relative;width:max-content;max-width:100%;margin:18px 0}
.room-rich-canvas figure img,.post-rich-body figure img{max-height:700px;object-fit:contain}
.room-image-remove{position:absolute;top:8px;right:8px;width:32px;height:32px;border:0;border-radius:50%;background:#263c32;color:#fff;font-size:22px;line-height:1}
.room-rich-value{display:none}
.room-rich-hint{margin:0;padding:10px 15px;border-top:1px solid #e5eae5;color:#77877d;font-size:11px!important}
.room-rich-error{margin:0;padding:9px 15px;color:#a53e32;background:#fff0ed;font-size:12px!important}
.post-rich-body :where(p,div,h2,h3,ul,ol,blockquote){margin:0 0 15px}
.post-rich-body :where(ul,ol){padding-left:25px}
.post-rich-body a{color:var(--green);text-decoration:underline}
.post-rich-body h2{font-size:21px}.post-rich-body h3{font-size:17px}
#post-modal{width:min(1060px,calc(100% - 28px));max-height:calc(100vh - 28px);overflow:auto}
#post-modal .room-rich-canvas{min-height:280px}
@media(max-width:760px){.room-editor-panel-post .room-edit-form{padding:20px 16px}.room-rich-canvas{min-height:330px;padding:16px}.room-rich-toolbar{gap:4px;padding:7px}.room-rich-toolbar button,.room-rich-photo{min-height:34px;padding:3px 7px}#post-modal{width:100%;max-width:none;max-height:100vh;border-radius:0}}
.brand-english{display:block;margin-top:5px;color:inherit;font-family:'DM Sans',sans-serif;font-size:15px!important;font-style:normal;font-weight:600;letter-spacing:.08em;line-height:1.35}
.login-brand>p .brand-english{margin-top:1px;color:var(--green)}
.hero h2 .brand-english{color:#47705f}
.board-guide li:before{grid-column:1;grid-row:1 / span 2}
.board-guide li>b,.board-guide li>span{grid-column:2;min-width:0}
.board-guide li>span{width:100%;word-break:keep-all;overflow-wrap:break-word}
