:root{--color-ink:#1f1f23;--color-action:#1f1f23;--color-action-hover:#3a3a41;--color-text:#1f1f23;--color-text-sub:#66666c;--color-text-weak:#9a9aa0;--color-line:#e6e6ea;--color-line-strong:#cfcfd4;--color-bg:#fff;--color-bg-sub:#f6f6f8;--color-bg-soft:#fafafb;--color-danger:#d7342c;--color-danger-bg:#fce5e3;--color-success:#14653f;--color-success-bg:#e2f5ea;--color-info:#1d4fb0;--color-info-bg:#e3eeff;--color-warn:#8a5a00;--color-warn-bg:#fff3d6;--color-teal:#0e5c5c;--color-teal-bg:#ddf3f3;--color-purple:#5b3fa8;--color-purple-bg:#ece6fa;--r-xs:6px;--r-img:10px;--r-btn:12px;--r-card:14px;--t-display:700 32px/1.3 var(--font);--t-h1:700 24px/1.35 var(--font);--t-h2:700 20px/1.4 var(--font);--t-h3:700 17px/1.45 var(--font);--t-title:600 15px/1.5 var(--font);--t-body:400 15px/1.6 var(--font);--t-body-sm:400 14px/1.6 var(--font);--t-caption:400 13px/1.5 var(--font);--t-micro:500 12px/1.4 var(--font);--font:"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", system-ui, sans-serif;--snb-w:220px;--content-w:1320px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font:var(--t-body);color:var(--color-text);background:var(--color-bg-sub);-webkit-font-smoothing:antialiased;min-width:var(--content-w)}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit}h1,h2,h3,h4,p{margin:0}table{border-collapse:collapse}.f-shell{min-height:100vh;display:flex}.f-snb{width:var(--snb-w);flex:0 0 var(--snb-w);background:var(--color-bg);border-right:1px solid var(--color-line);flex-direction:column;height:100vh;display:flex;position:sticky;top:0;overflow-y:auto}.f-snb-logo{font:800 20px/1 var(--font);letter-spacing:-.02em;align-items:center;gap:8px;padding:22px 20px 14px;display:flex}.f-snb-logo small{font:var(--t-micro);color:var(--color-text-sub);border:1px solid var(--color-line);border-radius:var(--r-xs);padding:2px 6px}.f-snb-group{font:var(--t-micro);color:var(--color-text-weak);text-transform:uppercase;letter-spacing:.04em;padding:10px 12px 2px}.f-snb a.f-nav{border-radius:var(--r-xs);font:var(--t-body-sm);color:var(--color-text-sub);justify-content:space-between;align-items:center;margin:1px 8px;padding:9px 12px;display:flex}.f-snb a.f-nav:hover{background:var(--color-bg-sub);color:var(--color-text)}.f-snb a.f-nav.active{background:var(--color-ink);color:#fff;font-weight:600}.f-snb a.f-nav .f-count{font:var(--t-micro);background:var(--color-danger);color:#fff;border-radius:10px;padding:1px 7px}.f-snb a.f-nav.active .f-count{color:var(--color-ink);background:#fff}.f-snb-foot{border-top:1px solid var(--color-line);font:var(--t-caption);color:var(--color-text-sub);margin-top:auto;padding:14px 20px}.f-snb-foot b{color:var(--color-text);font-weight:600;display:block}.f-main{flex:1;min-width:0}.f-topbar{background:var(--color-bg);border-bottom:1px solid var(--color-line);z-index:20;justify-content:flex-end;align-items:center;gap:12px;height:56px;padding:0 32px;display:flex;position:sticky;top:0}.f-page{max-width:var(--content-w);margin:0 auto;padding:28px 32px 60px}.f-page-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.f-page-head h1{font:var(--t-h1);letter-spacing:-.01em}.f-page-head .f-sub{font:var(--t-body-sm);color:var(--color-text-sub);margin-top:6px}.f-page-head .f-actions{flex-shrink:0;gap:8px;display:flex}.f-crumb{font:var(--t-caption);color:var(--color-text-sub);align-items:center;gap:6px;margin-bottom:10px;display:flex}.f-crumb a:hover{text-decoration:underline}.f-grid-2{grid-template-columns:1fr 360px;align-items:start;gap:20px;display:grid}.f-grid-eq{grid-template-columns:1fr 1fr;align-items:start;gap:20px;display:grid}.f-grid-3{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.f-grid-4{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.f-stack{flex-direction:column;gap:20px;display:flex}.f-row{align-items:center;gap:8px;display:flex}.f-row.between{justify-content:space-between}.f-row.wrap{flex-wrap:wrap}.f-right{margin-left:auto}.f-mt8{margin-top:8px}.f-mt12{margin-top:12px}.f-mt16{margin-top:16px}.f-mt24{margin-top:24px}.f-mb8{margin-bottom:8px}.f-mb12{margin-bottom:12px}.f-mb16{margin-bottom:16px}.f-card{background:var(--color-bg);border:1px solid var(--color-line);border-radius:var(--r-card);padding:20px 22px}.f-card.tight{padding:0;overflow:hidden}.f-card.danger{border-color:var(--color-danger)}.f-card-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.f-card-head h2,.f-card-head h3{font:var(--t-h3)}.f-card-head .f-hint{font:var(--t-caption);color:var(--color-text-sub)}.f-card.tight .f-card-head{margin-bottom:12px;padding:16px 22px 0}.t-h1{font:var(--t-h1)}.t-h2{font:var(--t-h2)}.t-h3{font:var(--t-h3)}.t-title{font:var(--t-title)}.t-body{font:var(--t-body)}.t-sm{font:var(--t-body-sm)}.t-cap{font:var(--t-caption)}.t-micro{font:var(--t-micro)}.t-sub{color:var(--color-text-sub)}.t-weak{color:var(--color-text-weak)}.t-danger{color:var(--color-danger)}.t-success{color:var(--color-success)}.t-b{font-weight:700}.t-num{font-variant-numeric:tabular-nums}.t-pre{white-space:pre-wrap;word-break:break-word}.t-link{text-underline-offset:2px;cursor:pointer;text-decoration:underline}.t-link:hover{color:var(--color-action-hover)}.f-btn{border-radius:var(--r-btn);height:40px;font:var(--t-title);white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 16px;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.f-btn:disabled{opacity:.45;cursor:not-allowed}.f-btn.primary{background:var(--color-action);color:#fff}.f-btn.primary:not(:disabled):hover{background:var(--color-action-hover)}.f-btn.secondary{background:var(--color-bg);color:var(--color-text);border-color:var(--color-line-strong)}.f-btn.secondary:not(:disabled):hover{background:var(--color-bg-sub)}.f-btn.ghost{color:var(--color-text-sub);background:0 0}.f-btn.ghost:not(:disabled):hover{background:var(--color-bg-sub);color:var(--color-text)}.f-btn.danger{background:var(--color-danger);color:#fff}.f-btn.danger:not(:disabled):hover{filter:brightness(.92)}.f-btn.danger-outline{background:var(--color-bg);color:var(--color-danger);border-color:var(--color-danger)}.f-btn.sm{height:32px;font:600 13px/1 var(--font);border-radius:var(--r-xs);padding:0 12px}.f-btn.lg{height:48px;font:600 16px/1 var(--font);padding:0 24px}.f-btn.block{width:100%}.f-field{flex-direction:column;gap:6px;display:flex}.f-label{font:var(--t-title);align-items:center;gap:6px;display:flex}.f-label .req{color:var(--color-danger)}.f-label .f-hint{font:var(--t-caption);color:var(--color-text-sub);font-weight:400}.f-input,.f-select,.f-textarea{border:1px solid var(--color-line-strong);border-radius:var(--r-xs);background:var(--color-bg);width:100%;height:40px;font:var(--t-body-sm);outline:none;padding:0 12px}.f-input:focus,.f-select:focus,.f-textarea:focus{border-color:var(--color-ink);box-shadow:0 0 0 2px #1f1f2314}.f-input:disabled,.f-select:disabled,.f-textarea:disabled,.f-input[readonly]{background:var(--color-bg-sub);color:var(--color-text-sub)}.f-input.invalid,.f-select.invalid,.f-textarea.invalid{border-color:var(--color-danger)}.f-textarea{resize:vertical;height:auto;min-height:96px;padding:10px 12px;line-height:1.6}.f-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2 4l4 4 4-4' fill='none' stroke='%2366666C' stroke-width='1.5'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:32px}.f-error{font:var(--t-caption);color:var(--color-danger)}.f-help{font:var(--t-caption);color:var(--color-text-sub)}.f-count{font:var(--t-caption);color:var(--color-text-weak);text-align:right}.f-check{font:var(--t-body-sm);cursor:pointer;align-items:center;gap:8px;display:inline-flex}.f-check input{width:16px;height:16px;accent-color:var(--color-ink);margin:0}.f-chips{flex-wrap:wrap;gap:8px;display:flex}.f-chip{border:1px solid var(--color-line-strong);background:var(--color-bg);height:32px;font:500 13px/1 var(--font);color:var(--color-text-sub);border-radius:16px;align-items:center;gap:4px;padding:0 12px;display:inline-flex}.f-chip.on{background:var(--color-ink);color:#fff;border-color:var(--color-ink)}.f-chip:disabled{opacity:.4;cursor:not-allowed}.f-form-grid{grid-template-columns:1fr 1fr;gap:16px 20px;display:grid}.f-form-grid .span2{grid-column:span 2}.f-badge{border-radius:var(--r-xs);height:24px;font:600 12px/1 var(--font);white-space:nowrap;background:var(--color-bg-sub);color:var(--color-text-sub);align-items:center;padding:0 9px;display:inline-flex}.f-badge.sm{height:20px;padding:0 6px;font-size:11px}.f-badge.tone-info{background:var(--color-info-bg);color:var(--color-info)}.f-badge.tone-success{background:var(--color-success-bg);color:var(--color-success)}.f-badge.tone-danger{background:var(--color-danger-bg);color:var(--color-danger)}.f-badge.tone-warn{background:var(--color-warn-bg);color:var(--color-warn)}.f-badge.tone-teal{background:var(--color-teal-bg);color:var(--color-teal)}.f-badge.tone-purple{background:var(--color-purple-bg);color:var(--color-purple)}.f-badge.tone-ink{background:var(--color-ink);color:#fff}.f-badge.tone-neutral{background:var(--color-bg-sub);color:var(--color-text-sub)}.f-badge.tone-outline{border:1px solid var(--color-line-strong);color:var(--color-text-sub);background:0 0}.f-table-wrap{overflow-x:auto}.f-table{width:100%;font:var(--t-body-sm)}.f-table th{text-align:left;font:var(--t-micro);color:var(--color-text-sub);border-bottom:1px solid var(--color-line);background:var(--color-bg-soft);white-space:nowrap;padding:10px 14px}.f-table td{border-bottom:1px solid var(--color-line);vertical-align:middle;padding:12px 14px}.f-table tr:last-child td{border-bottom:0}.f-table tbody tr.clickable{cursor:pointer}.f-table tbody tr.clickable:hover{background:var(--color-bg-soft)}.f-table tbody tr.hl{background:#fff7f6}.f-table td.num,.f-table th.num{text-align:right;font-variant-numeric:tabular-nums}.f-table td.c,.f-table th.c{text-align:center}.f-table .cell-sub{font:var(--t-caption);color:var(--color-text-sub);margin-top:2px;display:block}.f-table .ellipsis{text-overflow:ellipsis;white-space:nowrap;max-width:320px;overflow:hidden}.f-pager{justify-content:center;align-items:center;gap:4px;padding:16px;display:flex}.f-pager button{border-radius:var(--r-xs);min-width:32px;height:32px;font:var(--t-body-sm);color:var(--color-text-sub);background:0 0;border:1px solid #0000;padding:0 8px}.f-pager button:hover:not(:disabled){background:var(--color-bg-sub)}.f-pager button.on{background:var(--color-ink);color:#fff;font-weight:600}.f-pager button:disabled{opacity:.35;cursor:default}.f-pager .total{font:var(--t-caption);color:var(--color-text-sub);margin-left:12px}.f-tabs{border-bottom:1px solid var(--color-line);gap:2px;margin-bottom:16px;display:flex}.f-tab{font:var(--t-title);color:var(--color-text-sub);background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-1px;padding:10px 14px;display:inline-flex}.f-tab.on{color:var(--color-text);border-bottom-color:var(--color-ink)}.f-tab .n{font:var(--t-micro);color:var(--color-text-weak)}.f-tab.on .n{color:var(--color-text)}.f-tab .alert{font:var(--t-micro);color:var(--color-danger)}.f-filter{flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:14px;display:flex}.f-filter .f-input,.f-filter .f-select{width:auto;min-width:140px;height:36px}.f-filter .f-input.search{width:260px}.f-empty{text-align:center;color:var(--color-text-sub);padding:56px 20px}.f-empty h3{font:var(--t-h3);color:var(--color-text);margin-bottom:6px}.f-empty p{font:var(--t-body-sm)}.f-empty .f-btn{margin-top:16px}.f-loading{text-align:center;color:var(--color-text-weak);font:var(--t-body-sm);padding:40px}.f-skeleton{background:linear-gradient(90deg, var(--color-bg-sub) 25%, #eeeef1 50%, var(--color-bg-sub) 75%);border-radius:var(--r-xs);background-size:200% 100%;height:14px;animation:1.2s infinite f-sk}@keyframes f-sk{0%{background-position:200% 0}to{background-position:-200% 0}}.f-errorbox{border:1px solid var(--color-danger);background:var(--color-danger-bg);border-radius:var(--r-card);color:var(--color-danger);font:var(--t-body-sm);justify-content:space-between;align-items:center;gap:12px;padding:20px;display:flex}.f-note{border-radius:var(--r-xs);background:var(--color-bg-sub);font:var(--t-body-sm);color:var(--color-text-sub);align-items:flex-start;gap:8px;padding:12px 14px;display:flex}.f-note.info{background:var(--color-info-bg);color:var(--color-info)}.f-note.danger{background:var(--color-danger-bg);color:var(--color-danger)}.f-note.warn{background:var(--color-warn-bg);color:var(--color-warn)}.f-note.success{background:var(--color-success-bg);color:var(--color-success)}.f-note b{font-weight:700}.f-dl{font:var(--t-body-sm);grid-template-columns:140px 1fr;gap:10px 16px;display:grid}.f-dl dt{color:var(--color-text-sub)}.f-dl dd{word-break:break-word;margin:0}.f-dl.wide{grid-template-columns:180px 1fr}.f-dl.cols2{grid-template-columns:140px 1fr 140px 1fr}.f-overlay{z-index:100;background:#1f1f2373;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.f-modal{background:var(--color-bg);border-radius:var(--r-card);width:480px;max-width:100%;max-height:calc(100vh - 48px);overflow:auto;box-shadow:0 20px 60px #0003}.f-modal.lg{width:720px}.f-modal.xl{width:960px}.f-modal-head{font:var(--t-h3);padding:20px 24px 0}.f-modal-body{font:var(--t-body-sm);color:var(--color-text);flex-direction:column;gap:12px;padding:14px 24px 20px;display:flex}.f-modal-foot{justify-content:flex-end;gap:8px;padding:0 24px 20px;display:flex}.f-toasts{z-index:200;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.f-toast{background:var(--color-ink);color:#fff;border-radius:var(--r-btn);font:var(--t-body-sm);max-width:560px;padding:12px 18px;animation:.18s ease-out f-toast-in;box-shadow:0 8px 24px #0003}.f-toast.error{background:var(--color-danger)}.f-toast.success{background:var(--color-success)}@keyframes f-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.f-stat{border:1px solid var(--color-line);border-radius:var(--r-card);background:var(--color-bg);padding:16px 18px}.f-stat .k{font:var(--t-caption);color:var(--color-text-sub)}.f-stat .v{font:var(--t-h2);font-variant-numeric:tabular-nums;letter-spacing:-.01em;margin-top:4px}.f-stat .d{font:var(--t-caption);color:var(--color-text-sub);margin-top:4px}.f-stat.alert{border-color:var(--color-danger)}.f-stat.alert .v{color:var(--color-danger)}.f-stat.clickable{cursor:pointer}.f-stat.clickable:hover{border-color:var(--color-ink)}.f-thumbs{flex-wrap:wrap;gap:10px;display:flex}.f-thumb{border-radius:var(--r-img);object-fit:cover;border:1px solid var(--color-line);background:var(--color-bg-sub);width:96px;height:96px;display:block}.f-thumb-box{width:96px;position:relative}.f-thumb-box .cap{font:var(--t-micro);color:var(--color-text-sub);text-align:center;white-space:nowrap;text-overflow:ellipsis;margin-top:4px;overflow:hidden}.f-thumb-box .x{background:var(--color-ink);color:#fff;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;line-height:1;display:flex;position:absolute;top:-6px;right:-6px}.f-thumb-box .tag{position:absolute;top:4px;left:4px}.f-file-list{flex-direction:column;gap:6px;display:flex}.f-file{border:1px solid var(--color-line);border-radius:var(--r-xs);font:var(--t-body-sm);align-items:center;gap:10px;padding:8px 12px;display:flex}.f-file .meta{color:var(--color-text-weak);font:var(--t-caption)}.f-dropzone{border:1px dashed var(--color-line-strong);border-radius:var(--r-img);text-align:center;color:var(--color-text-sub);font:var(--t-body-sm);cursor:pointer;background:var(--color-bg-soft);padding:20px}.f-dropzone:hover{border-color:var(--color-ink)}.f-dropzone input{display:none}.f-checklist{flex-direction:column;gap:8px;display:flex}.f-checklist a,.f-checklist div.item{border:1px solid var(--color-line);border-radius:var(--r-xs);font:var(--t-body-sm);align-items:center;gap:10px;padding:10px 12px;display:flex}.f-checklist .ok{color:var(--color-success);font-weight:700}.f-checklist .no{color:var(--color-text-weak)}.f-list{flex-direction:column;display:flex}.f-list-item{border-bottom:1px solid var(--color-line);align-items:flex-start;gap:12px;padding:14px 4px;display:flex}.f-list-item:last-child{border-bottom:0}.f-list-item.unread{background:var(--color-bg-soft)}.f-list-item .time{font:var(--t-caption);color:var(--color-text-weak);white-space:nowrap;margin-left:auto}.f-bar{background:var(--color-bg-sub);border-radius:5px;height:10px;display:flex;overflow:hidden}.f-bar span{height:100%;display:block}.f-legend{font:var(--t-caption);color:var(--color-text-sub);gap:14px;display:flex}.f-legend i{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:4px;display:inline-block}.f-cal{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.f-cal .dh{font:var(--t-micro);color:var(--color-text-sub);text-align:center;padding:6px 0}.f-cal .d{border:1px solid var(--color-line);border-radius:var(--r-xs);min-height:72px;font:var(--t-caption);background:var(--color-bg);cursor:pointer;padding:6px}.f-cal .d.empty{cursor:default;background:0 0;border-color:#0000}.f-cal .d.on{border-color:var(--color-ink);box-shadow:inset 0 0 0 1px var(--color-ink)}.f-cal .d .n{font-weight:600}.f-cal .d .v{color:var(--color-text-sub);margin-top:4px}.f-auth{background:var(--color-bg-sub);justify-content:center;align-items:center;min-height:100vh;display:flex}.f-auth-card{background:var(--color-bg);border-radius:var(--r-card);border:1px solid var(--color-line);width:420px;padding:36px 36px 28px}.f-auth-card .logo{font:800 28px/1 var(--font);letter-spacing:-.03em;margin-bottom:6px}.f-auth-card .desc{font:var(--t-body-sm);color:var(--color-text-sub);margin-bottom:24px}.f-divider{background:var(--color-line);height:1px;margin:16px 0}.f-kbd{font:var(--t-micro);border:1px solid var(--color-line-strong);border-radius:4px;padding:1px 5px}.f-sticky-foot{background:var(--color-bg);border-top:1px solid var(--color-line);z-index:10;justify-content:flex-end;align-items:center;gap:8px;margin:24px -32px -60px;padding:14px 32px;display:flex;position:sticky;bottom:0}.f-steps{gap:8px;margin-bottom:20px;display:flex}.f-step{border-radius:var(--r-xs);background:var(--color-bg-sub);font:var(--t-caption);color:var(--color-text-sub);flex:1;padding:10px 12px}.f-step.on{background:var(--color-ink);color:#fff;font-weight:600}.f-step.done{background:var(--color-success-bg);color:var(--color-success)}.f-stars{color:#f2b01e;letter-spacing:1px}.f-footer-notice{border-top:1px solid var(--color-line);font:var(--t-caption);color:var(--color-text-weak);margin-top:40px;padding-top:16px;line-height:1.7}
