:root{--c-bg: #f6f7fb;--c-surface: #ffffff;--c-surface-alt: #f9fafc;--c-border: #e5e8ef;--c-border-strong: #cdd3df;--c-text: #0f172a;--c-text-muted: #5b6478;--c-text-subtle: #8b94a7;--c-primary: #4f46e5;--c-primary-hover: #4338ca;--c-primary-soft: #eef2ff;--c-primary-text: #ffffff;--c-success: #059669;--c-success-soft: #ecfdf5;--c-warning: #d97706;--c-warning-soft: #fffbeb;--c-danger: #dc2626;--c-danger-hover: #b91c1c;--c-danger-soft: #fef2f2;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--s-10: 40px;--s-12: 48px;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-xl: 20px;--r-full: 9999px;--sh-sm: 0 1px 2px rgba(15, 23, 42, .06);--sh-md: 0 4px 12px rgba(15, 23, 42, .08);--sh-lg: 0 12px 32px rgba(15, 23, 42, .12);--sh-focus: 0 0 0 3px rgba(79, 70, 229, .18);--f-xs: 12px;--f-sm: 13px;--f-base: 14px;--f-md: 15px;--f-lg: 17px;--f-xl: 20px;--f-2xl: 24px;--f-3xl: 30px;--transition: .15s cubic-bezier(.4, 0, .2, 1)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans KR,Apple SD Gothic Neo,sans-serif;font-size:var(--f-base);line-height:1.55;color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{margin:0 0 var(--s-3);font-weight:700;letter-spacing:-.01em}h1{font-size:var(--f-2xl)}h2{font-size:var(--f-xl)}h3{font-size:var(--f-lg)}p{margin:0 0 var(--s-3)}a{color:var(--c-primary);text-decoration:none;transition:color var(--transition)}a:hover{color:var(--c-primary-hover)}.container{max-width:1200px;margin:0 auto;padding:var(--s-6) var(--s-6) var(--s-12)}.nav{background:var(--c-surface);border-bottom:1px solid var(--c-border);position:sticky;top:0;z-index:30;box-shadow:var(--sh-sm)}.nav-inner{max-width:1200px;margin:0 auto;padding:0 var(--s-6);height:60px;display:flex;align-items:center;justify-content:space-between;gap:var(--s-4)}.nav-brand{font-weight:700;font-size:var(--f-lg);color:var(--c-text);display:flex;align-items:center;gap:var(--s-2);letter-spacing:-.02em}.nav-brand:before{content:"";width:28px;height:28px;border-radius:var(--r-sm);background:linear-gradient(135deg,var(--c-primary),#7c3aed);display:inline-block}.nav-links{display:flex;align-items:center;gap:var(--s-2)}.nav-link{color:var(--c-text-muted);font-weight:500;padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);transition:all var(--transition)}.nav-link:hover{color:var(--c-text);background:var(--c-surface-alt)}.nav-link.active{color:var(--c-primary);background:var(--c-primary-soft)}.nav-user{display:flex;align-items:center;gap:var(--s-3);font-size:var(--f-sm);color:var(--c-text-muted)}.nav-toggle{display:none;background:transparent;border:1px solid var(--c-border);color:var(--c-text);padding:var(--s-2);border-radius:var(--r-sm);cursor:pointer;width:40px;height:40px;align-items:center;justify-content:center}.nav-toggle:hover{background:var(--c-surface-alt)}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:var(--s-6);box-shadow:var(--sh-sm)}.card+.card{margin-top:var(--s-4)}.card-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--s-3);margin-bottom:var(--s-5)}.card-title{font-size:var(--f-lg);font-weight:600;margin:0;letter-spacing:-.01em}button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);background:var(--c-primary);color:var(--c-primary-text);border:1px solid var(--c-primary);padding:var(--s-2) var(--s-4);border-radius:var(--r-sm);font-size:var(--f-base);font-weight:500;font-family:inherit;cursor:pointer;transition:all var(--transition);white-space:nowrap;min-height:38px}button:hover,.btn:hover{background:var(--c-primary-hover);border-color:var(--c-primary-hover)}button:focus-visible,.btn:focus-visible{outline:none;box-shadow:var(--sh-focus)}button:disabled,.btn:disabled{opacity:.5;cursor:not-allowed}button.ghost,.btn.ghost{background:var(--c-surface);color:var(--c-text);border-color:var(--c-border-strong)}button.ghost:hover,.btn.ghost:hover{background:var(--c-surface-alt);border-color:var(--c-border-strong);color:var(--c-text)}button.ghost.active{background:var(--c-primary-soft);border-color:var(--c-primary);color:var(--c-primary)}button.danger,.btn.danger{background:var(--c-danger);border-color:var(--c-danger)}button.danger:hover,.btn.danger:hover{background:var(--c-danger-hover);border-color:var(--c-danger-hover)}button.sm,.btn.sm{padding:var(--s-1) var(--s-3);font-size:var(--f-sm);min-height:32px}button.icon,.btn.icon{padding:var(--s-2);width:38px}input,select,textarea{display:block;width:100%;padding:var(--s-3) var(--s-3);border:1px solid var(--c-border-strong);border-radius:var(--r-sm);font-size:var(--f-base);font-family:inherit;color:var(--c-text);background:var(--c-surface);min-height:40px;transition:border-color var(--transition),box-shadow var(--transition)}input::placeholder,textarea::placeholder{color:var(--c-text-subtle)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--c-primary);box-shadow:var(--sh-focus)}select{-webkit-appearance:none;-moz-appearance:none;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 fill='none' stroke='%235b6478' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M3 4.5l3 3 3-3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.field{margin-bottom:var(--s-3)}.field label{display:block;font-size:var(--f-sm);color:var(--c-text-muted);font-weight:500;margin-bottom:var(--s-2)}.row{display:flex;gap:var(--s-3);align-items:center;flex-wrap:wrap}.row>.grow{flex:1 1 200px}.row.split{justify-content:space-between}.grid-form{display:grid;grid-template-columns:110px 1fr;gap:var(--s-3) var(--s-4);align-items:center}.grid-form label{font-size:var(--f-sm);color:var(--c-text-muted);font-weight:500}.table-wrap{width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:var(--s-3) var(--s-3);border-bottom:1px solid var(--c-border);font-size:var(--f-base);vertical-align:middle}th{background:var(--c-surface-alt);font-weight:600;font-size:var(--f-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--c-text-muted)}tbody tr{transition:background var(--transition)}tbody tr:hover{background:var(--c-surface-alt)}tbody tr:last-child td{border-bottom:0}.table-empty{text-align:center;color:var(--c-text-subtle);padding:var(--s-8) var(--s-3)}.badge{display:inline-flex;align-items:center;padding:2px var(--s-2);background:var(--c-surface-alt);border:1px solid var(--c-border);border-radius:var(--r-full);font-size:var(--f-xs);font-weight:600;color:var(--c-text-muted);letter-spacing:.02em}.badge.primary{background:var(--c-primary-soft);color:var(--c-primary);border-color:var(--c-primary-soft)}.badge.success{background:var(--c-success-soft);color:var(--c-success);border-color:var(--c-success-soft)}.badge.warn{background:var(--c-warning-soft);color:var(--c-warning);border-color:var(--c-warning-soft)}.badge.danger{background:var(--c-danger-soft);color:var(--c-danger);border-color:var(--c-danger-soft)}.error{color:var(--c-danger);font-size:var(--f-sm);background:var(--c-danger-soft);border:1px solid var(--c-danger-soft);padding:var(--s-3);border-radius:var(--r-sm);margin-top:var(--s-3)}.success-msg{color:var(--c-success);font-size:var(--f-sm);background:var(--c-success-soft);padding:var(--s-3);border-radius:var(--r-sm);margin-top:var(--s-3)}.muted{color:var(--c-text-muted);font-size:var(--f-sm)}.back-link{display:inline-flex;align-items:center;gap:var(--s-2);color:var(--c-text-muted);font-size:var(--f-sm);margin-bottom:var(--s-4);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);transition:all var(--transition)}.back-link:hover{background:var(--c-surface);color:var(--c-text)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--s-4)}.stat{display:flex;flex-direction:column;gap:var(--s-1);padding:var(--s-4);background:var(--c-surface-alt);border:1px solid var(--c-border);border-radius:var(--r-md)}.stat-label{font-size:var(--f-sm);color:var(--c-text-muted);font-weight:500}.stat-value{font-size:var(--f-2xl);font-weight:700;letter-spacing:-.02em}.pagination{margin-top:var(--s-5);display:flex;align-items:center;justify-content:center;gap:var(--s-3);font-size:var(--f-sm);color:var(--c-text-muted)}.panel{margin-bottom:var(--s-5);padding:var(--s-5);background:var(--c-surface-alt);border:1px dashed var(--c-border-strong);border-radius:var(--r-md)}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--s-6);background:linear-gradient(135deg,#eef2ff,#f6f7fb,#fdf2f8)}.login-card{width:100%;max-width:400px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-xl);padding:var(--s-10) var(--s-8);box-shadow:var(--sh-lg)}.login-card h1{text-align:center;margin-bottom:var(--s-2);font-size:var(--f-2xl)}.login-card .login-sub{text-align:center;color:var(--c-text-muted);font-size:var(--f-sm);margin-bottom:var(--s-6)}@media (max-width: 960px){.container{padding:var(--s-5) var(--s-4) var(--s-10)}.grid-form{grid-template-columns:1fr;gap:var(--s-2)}.grid-form label{margin-top:var(--s-2)}}@media (max-width: 720px){:root{--f-base: 15px}.container{padding:var(--s-4) var(--s-3) var(--s-10)}.card{padding:var(--s-4);border-radius:var(--r-md)}.nav-inner{padding:0 var(--s-4);height:56px}.nav-toggle{display:inline-flex}.nav-links{position:absolute;top:56px;left:0;right:0;flex-direction:column;align-items:stretch;background:var(--c-surface);border-bottom:1px solid var(--c-border);padding:var(--s-3) var(--s-4);gap:var(--s-1);box-shadow:var(--sh-md);transform:translateY(-12px);opacity:0;pointer-events:none;transition:all var(--transition)}.nav-links.open{transform:translateY(0);opacity:1;pointer-events:auto}.nav-link{padding:var(--s-3) var(--s-3);font-size:var(--f-md)}.nav-user{font-size:var(--f-xs)}.nav-user .username,.table-wrap table thead{display:none}.table-wrap table,.table-wrap tbody,.table-wrap tr,.table-wrap td{display:block;width:100%}.table-wrap tbody tr{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-md);margin-bottom:var(--s-3);padding:var(--s-3) var(--s-4)}.table-wrap tbody tr:hover{background:var(--c-surface)}.table-wrap td{border:0;padding:var(--s-2) 0;display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.table-wrap td:before{content:attr(data-label);font-size:var(--f-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--c-text-muted);flex-shrink:0}.table-wrap td:not([data-label]):before{content:""}.row{gap:var(--s-2)}.row>*{flex:1 1 100%}.row .row-actions{flex:0 0 auto}.login-card{padding:var(--s-8) var(--s-5)}}@media (max-width: 420px){h1{font-size:var(--f-xl)}.container{padding:var(--s-3) var(--s-3) var(--s-8)}.card{padding:var(--s-4) var(--s-3)}button,.btn{width:100%}.row .keep-row{display:flex;gap:var(--s-2);width:100%}}
