:root{--bg: #f4f6f9;--panel: #ffffff;--panel-2: #f8fafc;--line: #e3e8ef;--line-2: #eef2f6;--text: #0f172a;--text-2: #475569;--text-3: #94a3b8;--brand: #2563eb;--brand-2: #1d4ed8;--brand-soft: #e8f0fe;--danger: #dc2626;--danger-soft: #fdecec;--ok: #059669;--ok-soft: #e6f6f0;--warn: #d97706;--warn-soft: #fdf3e2;--side: #1e293b;--side-2: #273548;--side-text: #cbd5e1;--radius: 10px;--shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 4px 16px rgba(15, 23, 42, .06);--shadow-lg: 0 10px 40px rgba(15, 23, 42, .2);color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #0d1117;--panel: #161b22;--panel-2: #1c222b;--line: #2a313c;--line-2: #222832;--text: #e6edf3;--text-2: #a4b0be;--text-3: #6e7a88;--brand: #4c8dff;--brand-2: #6aa0ff;--brand-soft: #1a2944;--danger: #f26d6d;--danger-soft: #3a1d1f;--ok: #34c38f;--ok-soft: #13302a;--warn: #f0a440;--warn-soft: #3a2b14;--side: #0b0f14;--side-2: #18202b;--side-text: #a9b4c2;--shadow: 0 1px 2px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .6);color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font:14px/1.5 -apple-system,BlinkMacSystemFont,Pretendard,Apple SD Gothic Neo,Malgun Gothic,Segoe UI,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;line-height:1.3}h1{font-size:22px}h2{font-size:18px}h3{font-size:15px}button,input,select,textarea{font:inherit;color:inherit}img{max-width:100%}::selection{background:var(--brand-soft)}.shell{display:flex;height:100%}.side{width:220px;flex:none;background:var(--side);color:var(--side-text);display:flex;flex-direction:column;padding:14px 10px}.side .brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px;color:#fff;font-weight:700;font-size:15px}.side .brand .logo{width:30px;height:30px;border-radius:8px;background:var(--brand);display:grid;place-items:center;flex:none}.side .brand .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side nav{display:flex;flex-direction:column;gap:2px;flex:1}.side nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;color:var(--side-text);font-weight:500;text-decoration:none}.side nav a:hover{background:var(--side-2);color:#fff}.side nav a.active{background:var(--brand);color:#fff}.side nav a .ico{width:20px;text-align:center;font-size:16px}.side nav a .badge{margin-left:auto}.side .me{border-top:1px solid var(--side-2);display:flex;align-items:center;gap:8px;cursor:pointer;border-radius:8px;padding:8px}.side .me:hover{background:var(--side-2)}.side .me .who{min-width:0;flex:1}.side .me .who b{display:block;color:#fff;font-size:13px}.side .me .who small{color:var(--side-text);font-size:11px}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:54px;flex:none;display:flex;align-items:center;gap:12px;padding:0 20px;border-bottom:1px solid var(--line);background:var(--panel)}.topbar .title{font-weight:700;font-size:16px;flex:1;min-width:0}.topbar .menu-btn{display:none}.content{flex:1;min-height:0;overflow:auto}.page{padding:20px 24px 40px;max-width:1280px;margin:0 auto}.split{display:flex;height:100%;min-height:0}.split>.pane-list{width:260px;flex:none;border-right:1px solid var(--line);background:var(--panel);overflow:auto}.split>.pane-main{flex:1;min-width:0;overflow:auto;display:flex;flex-direction:column}.split>.pane-side{width:360px;flex:none;border-left:1px solid var(--line);background:var(--panel);overflow:auto;display:flex;flex-direction:column}.nav-group{padding:12px 10px 4px}.nav-group>.label{font-size:11px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;padding:0 8px 6px;display:flex;align-items:center}.nav-group>.label button{margin-left:auto}.nav-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:7px;cursor:pointer;color:var(--text-2);text-decoration:none;width:100%;border:0;background:none;text-align:left}.nav-item:hover{background:var(--panel-2);text-decoration:none}.nav-item.active{background:var(--brand-soft);color:var(--brand);font-weight:600}.nav-item .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-item.unread{color:var(--text);font-weight:700}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-h{display:flex;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--line-2)}.card-h h3{flex:1}.card-b{padding:16px}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.row{display:flex;align-items:center;gap:8px}.row.wrap{flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:8px}.grow{flex:1;min-width:0}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:12px}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pre{white-space:pre-wrap;word-break:break-word}.sep{height:1px;background:var(--line-2);margin:12px 0}.right{margin-left:auto}.center{text-align:center}.mt{margin-top:12px}.mb{margin-bottom:12px}.hide{display:none!important}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 14px;border-radius:8px;border:1px solid var(--line);background:var(--panel);cursor:pointer;font-weight:600;white-space:nowrap;color:var(--text);text-decoration:none}.btn:hover{background:var(--panel-2);text-decoration:none}.btn:disabled{opacity:.55;cursor:default}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-2)}.btn.danger{color:var(--danger)}.btn.danger.solid{background:var(--danger);border-color:var(--danger);color:#fff}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--panel-2)}.btn.sm{height:28px;padding:0 10px;font-size:12px;border-radius:7px}.btn.icon{width:34px;padding:0}.btn.icon.sm{width:28px}.side .btn.ghost{color:var(--side-text)}.input,select.input,textarea.input{width:100%;height:36px;padding:0 11px;border:1px solid var(--line);border-radius:8px;background:var(--panel);outline:none;transition:border-color .15s,box-shadow .15s}textarea.input{height:auto;padding:9px 11px;resize:vertical;line-height:1.6}.input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.input.sm{height:30px;font-size:13px}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field>label{font-size:12px;font-weight:700;color:var(--text-2)}.field .hint{font-size:12px;color:var(--text-3)}.check{display:flex;align-items:flex-start;gap:8px;cursor:pointer;padding:4px 0}.check input{margin-top:3px}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;border-radius:9px;background:var(--danger);color:#fff;font-size:11px;font-weight:700}.pill{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:11px;font-size:12px;font-weight:600;background:var(--panel-2);color:var(--text-2);border:1px solid var(--line);white-space:nowrap}.pill.blue{background:var(--brand-soft);color:var(--brand);border-color:transparent}.pill.red{background:var(--danger-soft);color:var(--danger);border-color:transparent}.pill.green{background:var(--ok-soft);color:var(--ok);border-color:transparent}.pill.amber{background:var(--warn-soft);color:var(--warn);border-color:transparent}.tag{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:5px;background:var(--panel-2);color:var(--text-2);font-size:12px;border:1px solid var(--line-2);cursor:pointer}.tag:hover{border-color:var(--brand);color:var(--brand)}.cat-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.dot{width:8px;height:8px;border-radius:50%;background:var(--brand);display:inline-block;flex:none}.avatar{width:32px;height:32px;border-radius:50%;display:inline-grid;place-items:center;flex:none;color:#fff;font-weight:700;font-size:13px;position:relative}.avatar.sm{width:24px;height:24px;font-size:11px}.avatar.lg{width:44px;height:44px;font-size:17px}.avatar .on{position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:50%;background:#22c55e;border:2px solid var(--panel)}.avatars{display:flex}.avatars .avatar{border:2px solid var(--panel);margin-left:-6px}.avatars .avatar:first-child{margin-left:0}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow-x:auto}.tabs button{border:0;background:none;padding:10px 14px;cursor:pointer;color:var(--text-2);font-weight:600;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.tabs button.active{color:var(--brand);border-bottom-color:var(--brand)}.seg{display:inline-flex;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:2px}.seg button{border:0;background:none;padding:4px 12px;border-radius:6px;cursor:pointer;color:var(--text-2);font-weight:600;font-size:13px}.seg button.active{background:var(--panel);color:var(--text);box-shadow:var(--shadow)}table.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:12px;color:var(--text-3);font-weight:700;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.table td{padding:10px;border-bottom:1px solid var(--line-2);vertical-align:middle}.table tr:hover td{background:var(--panel-2)}.empty{padding:48px 20px;text-align:center;color:var(--text-3)}.empty .big{font-size:34px;margin-bottom:8px}.error-box{background:var(--danger-soft);color:var(--danger);padding:10px 12px;border-radius:8px;font-size:13px}.info-box{background:var(--brand-soft);color:var(--text);padding:10px 12px;border-radius:8px;font-size:13px}.warn-box{background:var(--warn-soft);color:var(--text);padding:10px 12px;border-radius:8px;font-size:13px}.progress{height:6px;background:var(--line-2);border-radius:3px;overflow:hidden}.progress>div{height:100%;background:var(--brand);border-radius:3px;transition:width .3s}.spinner{width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:grid;place-items:center;z-index:50;padding:16px}.modal{background:var(--panel);border-radius:14px;box-shadow:var(--shadow-lg);width:min(560px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column}.modal.wide{width:min(860px,100%)}.modal-h{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line-2)}.modal-h h2{flex:1;font-size:17px}.modal-b{padding:18px 20px;overflow:auto}.modal-f{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--line-2)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e0;z-index:60;display:flex;flex-direction:column}.lightbox .lb-top{display:flex;align-items:center;gap:10px;color:#fff;padding:12px 16px}.lightbox .lb-top .btn{background:#ffffff1a;border-color:transparent;color:#fff}.lightbox .lb-body{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:0 60px 20px;position:relative}.lightbox img,.lightbox video{max-width:100%;max-height:100%;object-fit:contain}.lightbox .nav{position:absolute;top:50%;transform:translateY(-50%);background:#ffffff1f;border:0;color:#fff;width:44px;height:44px;border-radius:50%;font-size:20px;cursor:pointer}.lightbox .nav.l{left:10px}.lightbox .nav.r{right:10px}.toasts{position:fixed;bottom:20px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:100;align-items:center}.toast{background:#1e293b;color:#fff;padding:10px 16px;border-radius:10px;box-shadow:var(--shadow-lg);font-weight:500;max-width:90vw}.toast.ok{background:#065f46}.toast.error{background:#991b1b}.dropdown{position:relative}.dropdown-menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);min-width:200px;z-index:30;padding:6px}.dropdown-menu button,.dropdown-menu a{display:flex;width:100%;gap:8px;align-items:center;text-align:left;padding:8px 10px;border:0;background:none;border-radius:6px;cursor:pointer;color:var(--text)}.dropdown-menu button:hover,.dropdown-menu a:hover{background:var(--panel-2);text-decoration:none}.dropzone-active{outline:2px dashed var(--brand);outline-offset:-8px;background:var(--brand-soft)!important}.chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:36px;padding:4px 6px;border:1px solid var(--line);border-radius:8px;background:var(--panel);position:relative}.chips:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.chips input{border:0;outline:0;flex:1;min-width:120px;background:transparent;height:26px}.chip{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 4px 0 9px;border-radius:13px;background:var(--brand-soft);color:var(--brand);font-size:13px;font-weight:600}.chip button{border:0;background:none;color:inherit;cursor:pointer;padding:0 4px;font-size:14px;line-height:1}.suggest{position:absolute;left:0;right:0;top:calc(100% + 4px);background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);z-index:20;max-height:260px;overflow:auto;padding:4px}.suggest button{display:flex;width:100%;align-items:center;gap:8px;padding:7px 9px;border:0;background:none;border-radius:6px;cursor:pointer;text-align:left}.suggest button:hover,.suggest button.on{background:var(--panel-2)}.attach-list{display:flex;flex-direction:column;gap:6px}.attach{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2)}.attach .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.img-grid{display:flex;flex-wrap:wrap;gap:8px}.img-grid .thumb{width:140px;height:140px;border-radius:8px;overflow:hidden;border:1px solid var(--line);cursor:zoom-in;background:var(--panel-2)}.img-grid .thumb img{width:100%;height:100%;object-fit:cover;display:block}@media(max-width:900px){.side{position:fixed;inset:0 auto 0 0;z-index:40;transform:translate(-100%);transition:transform .2s}.side.open{transform:none;box-shadow:var(--shadow-lg)}.topbar .menu-btn{display:inline-flex}.grid-2,.grid-3{grid-template-columns:1fr}.split>.pane-list{width:100%;border-right:0}.split.has-detail>.pane-list{display:none}.split:not(.has-detail)>.pane-main{display:none}.split>.pane-side{position:fixed;top:0;right:0;bottom:0;left:0;width:auto;z-index:35}.page{padding:16px}}.post-row:hover{background:var(--panel-2)}.post-row:last-child{border-bottom:0!important}button.pill{cursor:pointer}.msg .msg-actions{visibility:hidden}.msg:hover .msg-actions{visibility:visible}.msg:hover{background:var(--panel-2);border-radius:8px}.menu-only{display:none}@media(max-width:900px){.menu-only{display:inline-flex}}.file-card{overflow:visible}.file-card .file-thumb{height:120px;display:grid;place-items:center;background:var(--panel-2);border-radius:var(--radius) var(--radius) 0 0;cursor:pointer;overflow:hidden}.file-card .file-thumb img{width:100%;height:100%;object-fit:cover}.file-card:hover{border-color:var(--brand)}.kanban{display:grid;grid-template-columns:repeat(4,minmax(190px,1fr));gap:12px;overflow-x:auto;padding-bottom:8px}.kcol{background:var(--line-2);border-radius:var(--radius);padding:10px;min-height:300px;transition:background .15s}.kcol.over{background:var(--brand-soft);outline:2px dashed var(--brand)}.task-card{padding:10px 12px;cursor:pointer}.task-card:hover{border-color:var(--brand)}.task-card[draggable=true]{cursor:grab}@media(max-width:900px){.kanban{grid-template-columns:repeat(4,260px)}}.notice-card{border-color:var(--danger);border-width:1px}.notice-card>.card-h h3{display:flex;align-items:center}.notice-item{padding:14px 16px;border-bottom:1px solid var(--line-2);transition:opacity .25s,transform .25s}.notice-item:last-child{border-bottom:0}.notice-item.leaving{opacity:0;transform:translate(16px)}.notice-body{margin-top:8px;line-height:1.7;max-height:7.5em;overflow:hidden;position:relative}.notice-body:not(.open):after{content:"";position:absolute;left:0;right:0;bottom:0;height:2em;background:linear-gradient(transparent,var(--panel))}.notice-body.open{max-height:none}.notice-banner{display:flex;align-items:center;gap:10px;padding:8px 20px;background:var(--danger-soft);color:var(--text);font-size:13px;border-bottom:1px solid var(--line)}.todo-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line-2);transition:opacity .2s,transform .2s}.todo-row:last-child{border-bottom:0}.todo-row:hover{background:var(--panel-2)}.todo-row.leaving{opacity:0;transform:translate(12px)}.todo-check{width:20px;height:20px;border-radius:50%;border:2px solid var(--text-3);background:none;cursor:pointer;flex:none;display:grid;place-items:center;color:#fff;font-size:12px;padding:0}.todo-check:hover{border-color:var(--ok)}.todo-check.on{background:var(--ok);border-color:var(--ok)}.memo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.memo-card{position:relative;display:flex;flex-direction:column;min-height:150px;max-height:260px;padding:14px;border-radius:10px;cursor:pointer;color:#1f2937;box-shadow:var(--shadow);transition:transform .12s}.memo-card:hover{transform:translateY(-2px)}.memo-card .faint{color:#1f29378c}.memo-body{white-space:pre-wrap;word-break:break-word;overflow:hidden;font-size:13px;margin-top:4px;flex:1}.memo-pin{position:absolute;top:8px;right:10px}.memo-yellow{background:#fef3c7}.memo-green{background:#dcfce7}.memo-blue{background:#dbeafe}.memo-pink{background:#fce7f3}.memo-purple{background:#ede9fe}.memo-gray{background:#f1f5f9}.memo-dot{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0}.memo-dot.on{border-color:var(--text)}.link-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}.link-tile{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--text);text-decoration:none;min-width:0}.link-tile:hover{border-color:var(--brand);text-decoration:none;background:var(--panel-2)}.link-icon{width:32px;height:32px;border-radius:8px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-weight:700;flex:none;overflow:hidden}.link-icon img{width:20px;height:20px}.audience{display:flex;flex-wrap:wrap;gap:6px}.audience-opt{height:34px;padding:0 14px;border-radius:17px;border:1px solid var(--line);background:var(--panel);cursor:pointer;font-weight:600;color:var(--text-2)}.audience-opt:hover{border-color:var(--brand)}.audience-opt.on{background:var(--brand);border-color:var(--brand);color:#fff}
