:root{font-family:Arial,'Malgun Gothic','Apple SD Gothic Neo',sans-serif;color:#213247;background:#f3f6fa;font-size:16px;--navy:#112b45;--blue:#176bd1;--line:#dfe6ef;--muted:#66788e;--teal:#087e77}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,a:focus-visible,input:focus,select:focus,textarea:focus{outline:3px solid #74b6f9;outline-offset:2px}a{color:var(--blue)}button{border:1px solid #cbd7e5;border-radius:7px;background:#fff;color:#304760;padding:9px 14px;font-size:.875rem;font-weight:600;white-space:nowrap}button:hover{background:#edf4fc}.primary{background:var(--blue);color:white;border-color:var(--blue)}.primary:hover{background:#105aac}.danger{color:#b52d3a;border-color:#eebfc6}.quiet{border:0;background:transparent}.small{padding:5px 9px;font-size:.875rem}.iconbtn{padding:5px 8px;min-width:30px}.muted{color:var(--muted)}.micro{font-size:.8125rem}.mono{font-variant-numeric:tabular-nums}.loading{padding:70px;text-align:center}.shell{min-height:100vh;display:grid;grid-template-columns:232px minmax(0,1fr)}.sidebar{background:var(--navy);color:white;padding:28px 18px;position:sticky;top:0;height:100vh;overflow:auto;display:flex;flex-direction:column;gap:22px}.brand{font-size:1.45rem;font-weight:800;letter-spacing:-1px;color:white}.brand span{color:#51d1c1}.brand-sub{font-size:.8125rem;color:#b6c9dc;margin-top:6px;letter-spacing:.02em}.nav-title{font-size:.75rem;color:#85a0b9;padding:0 12px;letter-spacing:.07em;margin:16px 0 8px}.nav{display:grid;gap:4px}.nav button{text-align:left;border:none;color:#c9d8e8;background:transparent;padding:11px 12px;font-weight:500}.nav button:hover{background:#203e5b;color:white}.nav button.active{background:#285077;color:white;box-shadow:inset 3px 0 #60d3c4;border-radius:4px}.sidebar-foot{margin-top:auto;border-top:1px solid #2b465f;padding:18px 10px 0;font-size:.8125rem;color:#96adc4}.main{min-width:0}.topbar{background:white;border-bottom:1px solid var(--line);height:74px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 32px}.topbar select{max-width:420px;width:45vw;background:#f7f9fc}.userbar{display:flex;align-items:center;gap:10px;font-size:.875rem}.content{padding:30px 32px 60px;max-width:1900px;margin:auto}.pagehead{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:25px}.eyebrow{font-size:.8125rem;letter-spacing:.07em;color:var(--teal);font-weight:700;margin-bottom:9px}.pagehead h1{font-size:1.75rem;line-height:1.4;margin:0 0 8px;letter-spacing:-.045em}.pagehead p{margin:0;color:var(--muted);font-size:.9375rem;line-height:1.6}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.stat{background:white;border:1px solid var(--line);border-radius:10px;padding:20px 22px}.stat .label{font-size:.875rem;color:var(--muted)}.stat .value{font-size:1.9rem;font-weight:750;margin-top:12px;letter-spacing:-.03em;color:#183c5f}.stat .value small{font-size:.9rem;color:var(--muted);font-weight:400;margin-left:5px}.stat .sub{font-size:.8125rem;color:var(--muted);margin-top:9px}.panel{background:white;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:22px}.panel-head{padding:19px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:10px}.panel-head h2{font-size:1rem;margin:0}.panel-body{padding:22px}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:20px}.project-card{border:1px solid var(--line);border-radius:10px;background:white;padding:25px;display:flex;flex-direction:column;gap:18px;border-top:3px solid #1a7dd1}.project-card h2{font-size:1.15rem;line-height:1.6;margin:0;word-break:keep-all}.project-card dl{display:grid;grid-template-columns:70px 1fr;gap:10px;margin:0;font-size:.875rem}.project-card dt{color:var(--muted)}.project-card dd{margin:0}.project-card footer{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:16px;border-top:1px solid var(--line)}.badge{display:inline-flex;padding:5px 9px;border-radius:5px;background:#e9f2fd;color:#1762b9;font-size:.8125rem;font-weight:700;white-space:nowrap}.badge.teal{background:#e3f5f1;color:#087a6e}.badge.red{background:#fff0f1;color:#b33d4a}.badge.gray{background:#edf0f4;color:#63758b}.empty{padding:55px 22px;text-align:center;color:var(--muted);line-height:1.8}.empty strong{display:block;color:#2b465f;font-size:1.1rem;margin-bottom:7px}.table-wrap{overflow:auto;max-width:100%}table{border-collapse:collapse;width:100%;font-size:.875rem}th{background:#f4f7fb;color:#536880;font-weight:600;white-space:nowrap;text-align:left;padding:13px 14px;border-bottom:1px solid var(--line)}td{padding:13px 14px;border-bottom:1px solid #e8edf4;vertical-align:middle;line-height:1.6;white-space:pre-line}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#f8fbff}.toc{min-width:1480px}.toc th:first-child,.toc td:first-child{position:sticky;left:0;background:white;min-width:280px;max-width:370px;border-right:1px solid var(--line);z-index:1}.toc th:first-child{background:#f4f7fb}.toc .group td{background:#edf4fb;color:#173b60;font-weight:600}.toc .group td:first-child{background:#edf4fb}.toc td:nth-child(2),.toc td:nth-child(3),.toc td:nth-child(4){min-width:150px;max-width:250px;overflow-wrap:anywhere}.toc td:last-child{min-width:170px}.toc tfoot td{background:#163957;color:#fff;font-weight:700}.toc tfoot td:first-child{background:#163957;color:#fff}.progress{height:6px;border-radius:8px;background:#e8eef6;margin-top:7px;overflow:hidden;min-width:60px}.progress i{display:block;height:100%;background:#2b92cf}.info-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px}.info-grid dt{font-size:.8125rem;color:var(--muted);margin-bottom:8px}.info-grid dd{margin:0;font-weight:600;line-height:1.6}.two-cols{display:grid;grid-template-columns:1.3fr 1fr;gap:22px}.note{font-size:.875rem;line-height:1.6;background:#ecf5ff;color:#32618d;padding:13px 16px;border-radius:7px;margin-bottom:18px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.toolbar h2{margin:0;font-size:1.2rem}.calendar{min-width:740px;table-layout:fixed}.calendar th{text-align:center}.calendar th:first-child{width:60px}.calendar td{height:115px;vertical-align:top;padding:9px;border-right:1px solid #e5ebf3;white-space:normal}.calendar .week{font-size:.75rem;color:#8a9cb0;text-align:center;background:#f8fafc}.calendar .daynum{border:0;background:transparent;font-weight:700;padding:1px 5px;font-size:.875rem}.calendar .today .daynum{background:#176bd1;color:white;border-radius:50%}.calendar .outside{background:#f8fafc;color:#acb6c4}.calendar .outside .daynum{color:#9faebe}.calendar .weekend .daynum{color:#ca6970}.calendar .event{display:block;text-align:left;width:100%;white-space:normal;background:#eaf3ff;color:#296196;border:0;font-size:.8125rem;padding:4px 6px;margin-top:5px;line-height:1.4;font-weight:500}.calendar .deadline{background:#fff0f1;color:#b43245;border-left:3px solid #d75666;font-weight:700}.legend{display:flex;gap:8px;flex-wrap:wrap}.matrix{min-width:700px}.matrix th,.matrix td{text-align:center}.matrix th:first-child,.matrix td:first-child{text-align:left;min-width:150px}.check{width:24px;height:24px;accent-color:var(--teal);cursor:pointer}.check-button{border:1px solid #cbd7e5;min-width:36px;padding:5px 8px;color:#8294aa}.check-button.checked{background:#e4f5ef;border-color:#9bcfc0;color:#087a60}.matrix th button{white-space:normal}.login-page{min-height:100vh;background:#102a44;display:grid;grid-template-columns:1fr 1fr}.login-intro{padding:11vh 7vw;color:white;display:flex;flex-direction:column}.login-intro h1{font-size:2.7rem;line-height:1.4;letter-spacing:-.05em;margin:60px 0 25px}.login-intro p{color:#adc6df;font-size:1.05rem;line-height:1.9;max-width:390px}.login-intro .rule{height:4px;background:#59d8c3;width:64px;margin-top:30px}.login-right{display:flex;align-items:center;justify-content:center;background:#f4f7fb;padding:30px}.login-box{background:white;border:1px solid var(--line);border-radius:14px;padding:42px;width:100%;max-width:440px;box-shadow:0 15px 55px #0d2d4510}.login-box h2{margin:0 0 10px;font-size:1.65rem}.login-box p{color:var(--muted);font-size:.875rem;margin-bottom:30px}.login-box .primary{width:100%;margin-top:14px;padding:13px}.field{display:flex;flex-direction:column;gap:8px;margin-bottom:18px;min-width:0}.field label{font-size:.875rem;font-weight:600;color:#405872}input,select,textarea{border:1px solid #cbd6e3;border-radius:6px;background:white;padding:10px 11px;color:#243e59;min-width:0;font-size:.9375rem;max-width:100%}textarea{resize:vertical;min-height:85px;line-height:1.6}input[type=checkbox]{width:20px;height:20px;accent-color:var(--blue)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.full{grid-column:1/-1}.form-error{color:#b02e40;font-size:.875rem;line-height:1.6}.error-banner{padding:16px;border:1px solid #eec3c9;background:#fff3f4;border-radius:7px;margin-bottom:20px;color:#a53443}dialog{border:0;border-radius:12px;padding:0;width:min(760px,calc(100% - 32px));max-height:90vh;box-shadow:0 25px 90px #071c4260;color:#213247}dialog::backdrop{background:#0b1f3d85;backdrop-filter:blur(3px)}.dialog-head{padding:22px 26px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.dialog-head h2{margin:0;font-size:1.2rem}.dialog-body{padding:24px 26px;max-height:66vh;overflow:auto}.dialog-foot{border-top:1px solid var(--line);padding:16px 26px;display:flex;justify-content:flex-end;gap:10px}.search-row{display:flex;gap:10px}.search-row input{flex:1}.search-result{padding:15px 0;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line)}#toast{position:fixed;right:25px;bottom:25px;background:#143954;color:#fff;padding:15px 24px;border-radius:9px;box-shadow:0 5px 30px #1233;display:none;z-index:10}.contact-table{min-width:1000px}.nowrap{white-space:nowrap}.status-select{max-width:230px;font-size:.8125rem;padding:6px}.count{color:#687e95;margin-left:8px;font-weight:400}
@media(min-width:1800px){.content{padding:35px 45px}}@media(max-width:1100px){.shell{grid-template-columns:200px minmax(0,1fr)}.content{padding:24px 22px}.topbar{padding:0 22px}.stats{grid-template-columns:repeat(2,1fr)}.two-cols{grid-template-columns:1fr}.info-grid{grid-template-columns:repeat(2,1fr)}.pagehead{flex-wrap:wrap}.userbar .username{display:none}}@media(max-width:720px){.shell{display:block}.sidebar{position:static;width:100%;height:auto;padding:17px;gap:14px}.sidebar .brand-sub,.sidebar-foot,.nav-title{display:none}.sidebar .nav{display:flex;overflow:auto;gap:5px}.sidebar .nav button{flex:none;font-size:.8125rem;padding:9px}.topbar{padding:12px 16px;height:auto;flex-wrap:wrap}.topbar select{width:100%;max-width:none}.content{padding:22px 14px 50px}.pagehead h1{font-size:1.4rem}.pagehead{margin-bottom:20px}.stats{gap:10px}.stat{padding:17px}.stat .value{font-size:1.5rem}.project-grid{grid-template-columns:1fr}.info-grid{grid-template-columns:1fr 1fr;gap:18px}.login-page{grid-template-columns:1fr}.login-intro{padding:26px}.login-intro h1{font-size:1.6rem;margin:20px 0 0}.login-intro p,.login-intro .rule{display:none}.login-right{padding:25px 18px}.login-box{padding:28px}.form-grid{grid-template-columns:1fr}.full{grid-column:auto}.dialog-body{padding:20px}.toolbar{flex-wrap:wrap}.userbar{width:100%;justify-content:flex-end}}
.board-post{padding:22px;border-bottom:1px solid var(--line)}.board-post:last-child{border-bottom:0}.board-post-head h3{margin:0 0 10px;font-size:1.08rem;overflow-wrap:anywhere}.board-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:.84rem;color:var(--muted)}.board-meta strong{color:#31516e}.board-meta .actions{margin-left:auto}.board-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;margin:18px 0}.board-replies{border-left:3px solid #d9e7f4;margin-left:15px}.board-reply{padding:14px 18px;background:#f7fafd;border-bottom:1px solid #e3ebf3}.board-reply .board-body{margin:9px 0 0}.board-post-foot{margin-top:14px}
.board-files{padding:12px 14px;background:#f3f8fd;border:1px solid #e0eaf4;border-radius:8px;margin:14px 0}.board-files>strong{display:block;font-size:.85rem;margin-bottom:6px}.board-file{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:5px 0}.board-file a{overflow-wrap:anywhere}.board-file button{margin-left:auto}
