*{box-sizing:border-box;margin:0}body{background:#fffbf8;color:#1a1b2e;font-family:Apple SD Gothic Neo,Noto Sans KR,sans-serif}button,input,select,textarea{font:inherit}.app header{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:16px;padding:12px 20px;background:#fff;border-bottom:1px solid #f0e6df}.app header h1{margin-right:8px;font-size:18px}.app header nav{display:flex;gap:4px}.app header nav button{padding:8px 14px;color:#6b6b7b;font-size:14px;cursor:pointer;background:none;border:none;border-radius:8px}.app header nav button.active{color:#fff;font-weight:700;background:#ff6224}.subnav{display:flex;gap:4px;padding-bottom:8px;margin-bottom:20px;border-bottom:1px solid #f0e6df}.subnav button{padding:6px 12px;color:#6b6b7b;font-size:14px;cursor:pointer;background:none;border:none;border-radius:8px}.subnav button.active{color:#1a1b2e;font-weight:700;background:#fff0e8}.app header .logout{padding:6px 12px;margin-left:auto;cursor:pointer;background:#fff;border:1px solid #e5dcd5;border-radius:8px}main{max-width:1100px;padding:20px;margin:0 auto}.login-wrap{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:20px}.login-card{display:flex;flex-direction:column;gap:12px;width:min(320px,100%);padding:32px;background:#fff;border-radius:16px;box-shadow:0 4px 24px #1a1b2e14}.login-card h1{font-size:20px;text-align:center}.login-card input{padding:10px 12px;font-size:14px;border:1px solid #e5dcd5;border-radius:8px}.login-card button{padding:10px;color:#fff;font-weight:700;cursor:pointer;background:#ff6224;border:none;border-radius:8px}.login-card button:disabled{cursor:not-allowed;opacity:.5}.login-card .error{color:#d8430a;font-size:13px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:20px}.stat-card,.chart-card{padding:16px;background:#fff;border:1px solid #f0e6df;border-radius:12px}.stat-card .label{color:#6b6b7b;font-size:12px}.stat-card .value{margin-top:4px;font-size:26px;font-weight:800}.chart-card{margin-bottom:16px}.chart-card h2{margin-bottom:12px;font-size:14px}table{width:100%;overflow:hidden;font-size:13px;background:#fff;border-collapse:collapse;border-radius:12px}.table-wrap{overflow-x:auto;border-radius:12px}.pack-composition-wrap{margin-bottom:20px}.pack-composition-table{max-width:560px;table-layout:fixed}.pack-composition-table th:not(:first-child),.pack-composition-table td{text-align:center}.pack-composition-count,.pack-composition-percentage{display:block}.pack-composition-count{font-size:16px;font-weight:700}.pack-composition-percentage{margin-top:2px;color:#6f6880;font-size:12px}th,td{padding:8px 10px;text-align:left;border-bottom:1px solid #f4ece6}th{font-weight:600;background:#faf3ee}.badge{display:inline-block;padding:2px 8px;font-size:12px;font-weight:700;border-radius:999px}.badge.ok{color:#0fa98c;background:#e2f6f0}.badge.bad{color:#d8430a;background:#fdeae2}.section-title{margin:20px 0 10px;font-size:16px}.section-note{margin:-4px 0 10px;max-width:70ch;font-size:12px;line-height:1.6;color:#6f6880}.guide{margin:-4px 0 12px;max-width:78ch;font-size:12px;line-height:1.7;color:#6f6880}.guide>summary{cursor:pointer;width:fit-content;padding:2px 0;color:#8a8398;-webkit-user-select:none;user-select:none}.guide>summary:hover{color:#ff6224}.guide-body{margin-top:6px;padding:10px 14px;border-left:3px solid #f2ebe5;background:#fffbf8;border-radius:0 6px 6px 0}.guide-body p{margin:0 0 8px}.guide-body p:last-child{margin-bottom:0}.guide-body dl{margin:0 0 8px}.guide-body dt{font-weight:600;color:#4a4458}.guide-body dd{margin:0 0 6px}.guide-body code{padding:1px 4px;border-radius:3px;background:#f2ebe5;font-size:11px}.section-heading{display:flex;align-items:center;justify-content:space-between}.secondary-button{padding:6px 12px;color:#1a1b2e;cursor:pointer;background:#fff;border:1px solid #e5dcd5;border-radius:8px}.primary-button,.danger-button{padding:8px 14px;color:#fff;font-weight:700;cursor:pointer;border:0;border-radius:8px}.primary-button{background:#ff6224}.danger-button{background:#d8430a}.primary-button:disabled,.danger-button:disabled{cursor:not-allowed;opacity:.45}.action-card{padding:18px;margin-bottom:20px;background:#fff;border:1px solid #f0e6df;border-radius:12px}.action-card h2{margin-bottom:8px;font-size:16px}.action-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.action-grid label{display:grid;gap:5px;color:#6b6b7b;font-size:12px}.action-grid input,.action-grid select{width:100%;padding:9px 10px;color:#1a1b2e;background:#fff;border:1px solid #e5dcd5;border-radius:8px}.action-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:14px}.confirm-check{display:flex;flex:1;align-items:center;gap:7px;min-width:260px;font-size:13px}.inline-success{margin-top:12px;color:#087d68;font-size:13px}.filter-row{display:grid;grid-template-columns:130px minmax(160px,.6fr) minmax(240px,1fr);gap:8px;margin-bottom:10px}.filter-row input,.filter-row select{min-width:0;padding:7px 10px;background:#fff;border:1px solid #e5dcd5;border-radius:7px}.inline-error{margin-bottom:10px;color:#d8430a;font-size:13px;white-space:pre-line}.inline-warn{margin-bottom:8px;color:#a76200;font-size:13px}.theme-banner{padding:10px 14px;margin-bottom:14px;font-size:14px;font-weight:700;border-radius:10px}.theme-banner.ok{color:#087d68;background:#e7f6f2}.theme-banner.off{color:#d8430a;background:#fdece5}.theme-images{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-top:14px}.theme-image-slot{padding:12px;border:1px solid #f0e6df;border-radius:10px}.theme-image-label{color:#6b6b7b;font-size:12px}.theme-image-row{display:flex;align-items:center;gap:12px;margin-top:8px}.theme-image-actions{display:grid;gap:8px;font-size:12px}.theme-preview{width:72px;height:72px;object-fit:contain;background:repeating-conic-gradient(#f4efeb 0% 25%,#fff 0% 50%) 50% / 12px 12px;border:1px solid #e5dcd5;border-radius:8px}.theme-preview.empty{display:grid;place-items:center;color:#9a9aa8;font-size:12px}.theme-texts{display:grid;gap:10px;margin-top:14px}.theme-texts label{display:grid;gap:5px;color:#6b6b7b;font-size:12px}.theme-texts textarea{width:100%;padding:9px 10px;color:#1a1b2e;font:inherit;background:#fff;border:1px solid #e5dcd5;border-radius:8px;resize:vertical}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.cron-schedule{min-width:150px;white-space:nowrap}.cron-description{min-width:320px;max-width:440px;line-height:1.5}.compact-table{max-width:480px}.block-gap{margin-top:12px}.log-message{padding:0;color:inherit;text-align:left;cursor:pointer;background:none;border:0;text-decoration:underline;text-decoration-color:#e5dcd5;text-underline-offset:3px}.log-stack{max-width:700px;margin-top:6px;overflow:auto;font-size:11px;white-space:pre-wrap}.load-state{padding:32px;color:#6b6b7b;text-align:center}.load-state.bad{color:#d8430a}.notice-form{display:grid;gap:12px}.notice-form label{display:grid;gap:6px;color:#6b6b7b;font-size:13px}.notice-form input,.notice-form textarea{width:100%;padding:10px 12px;color:#1a1b2e;background:#fff;border:1px solid #e5dcd5;border-radius:8px}.notice-form textarea{line-height:1.6;resize:vertical}.notice-form label>span{text-align:right}.notice-photo-field{display:grid;gap:8px;color:#6b6b7b;font-size:13px}.notice-photo-heading{display:flex;justify-content:space-between}.notice-photo-grid,.notice-card-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.notice-photo-preview{position:relative;overflow:hidden;aspect-ratio:1;background:#faf3ee;border-radius:10px}.notice-photo-preview img,.notice-card-photos img{width:100%;height:100%;object-fit:cover}.notice-photo-preview button{position:absolute;top:6px;right:6px;padding:5px 8px;color:#fff;font-size:12px;font-weight:700;cursor:pointer;background:#1a1b2ec7;border:0;border-radius:999px}.notice-photo-picker{width:fit-content;padding:8px 12px;color:#1a1b2e;font-weight:700;cursor:pointer;background:#fff;border:1px solid #e5dcd5;border-radius:8px}.notice-photo-picker input{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.notice-photo-help{font-size:12px}.notice-list{display:grid;gap:12px}.notice-list-more{justify-self:center}.notice-card{padding:18px;background:#fff;border:1px solid #f0e6df;border-radius:12px}.notice-card-heading{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.notice-card h3{font-size:16px}.notice-card-heading p{margin-top:5px;color:#6b6b7b;font-size:12px}.notice-card-heading .action-row{flex-wrap:nowrap;margin-top:0}.notice-body{margin-top:14px;line-height:1.65;white-space:pre-wrap}.notice-card-photos{margin-top:12px}.notice-card-photos img{aspect-ratio:1;border-radius:8px}.notice-comments{padding-top:18px;margin-top:18px;border-top:1px solid #f0e6df}.notice-comments-heading,.notice-reply-heading,.notice-reply-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.notice-comments-heading h4{font-size:14px}.notice-comments-heading span,.notice-reply-footer span{color:#6b6b7b;font-size:12px}.notice-comment-list{display:grid;gap:8px;margin:12px 0}.notice-comment{padding:12px;background:#fffaf7;border:1px solid #f0e6df;border-radius:10px}.notice-comment-reply{margin-left:32px;background:#fff}.notice-comment-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:#6b6b7b;font-size:12px}.notice-comment-meta strong{color:#1a1b2e}.official-badge{padding:2px 7px;color:#d8430a;font-weight:700;background:#fff0e8;border-radius:999px}.notice-comment>p{margin-top:8px;line-height:1.55;white-space:pre-wrap}.notice-comment-mention,.text-button{color:#d8430a}.text-button{padding:4px 0;margin-top:6px;font:inherit;font-size:12px;font-weight:700;cursor:pointer;background:none;border:0}.notice-comment-removed{color:#8b8492;font-size:13px;font-style:italic}.notice-reply-form{display:grid;gap:8px;padding:14px;margin-top:14px;background:#fff7f2;border:1px solid #ffcdb8;border-radius:10px}.notice-reply-form textarea{width:100%;padding:10px 12px;color:#1a1b2e;font:inherit;line-height:1.55;background:#fff;border:1px solid #e5dcd5;border-radius:8px;resize:vertical}.notice-reply-footer .primary-button{margin-left:auto}@media(max-width:640px){.app header{flex-wrap:wrap;gap:8px;padding:10px 12px}.app header h1{width:100%}main{padding:12px}.filter-row{grid-template-columns:1fr}.notice-card-heading{flex-direction:column}.notice-comment-reply{margin-left:16px}}
