*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f4efe6;--surface:rgba(255,252,247,.92);--surface-strong:#fffdfa;--border:rgba(110,87,60,.14);--text:#2a231b;--text-muted:#736558;--primary:#0f766e;--primary-hover:#115e59;--secondary:#d97706;--secondary-hover:#b45309;--danger:#b42318;--danger-soft:#fff1ef;--success:#1f8f58;--success-soft:#ebfff3;--radius:18px;--shadow:0 24px 60px rgba(55,40,20,.08);--shadow-md:0 32px 84px rgba(55,40,20,.16)}body{font-family:Pretendard Variable,Segoe UI,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh;background-image:radial-gradient(circle at top left,rgba(15,118,110,.14),transparent 36%),radial-gradient(circle at bottom right,rgba(217,119,6,.16),transparent 28%)}a{color:inherit}button{cursor:pointer;border:1px solid transparent;border-radius:var(--radius);font-size:.95rem;padding:.78rem 1.2rem;transition:all .2s ease;font-weight:600;background:var(--surface-strong);color:var(--text)}button:disabled{opacity:.65;cursor:wait}input,select{width:100%;border:1px solid var(--border);border-radius:var(--radius);padding:.9rem 1rem;font-size:.95rem;outline:none;transition:border-color .2s ease,box-shadow .2s ease;background:hsla(0,0%,100%,.94);color:var(--text)}input:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 4px rgba(15,118,110,.12)}table{width:100%;border-collapse:collapse}td,th{padding:.85rem .9rem;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 18px 30px rgba(15,118,110,.18)}.btn-primary:hover{background:var(--primary-hover);box-shadow:0 22px 36px rgba(15,118,110,.24);transform:translateY(-1px)}.btn-secondary{background:var(--secondary);color:#fff}.btn-secondary:hover{background:var(--secondary-hover)}.btn-danger{background:var(--danger-soft);color:var(--danger)}.btn-danger:hover{background:#ffd6d0}.btn-ghost{background:transparent;color:var(--text-muted);border-color:var(--border)}.btn-ghost:hover{background:rgba(15,118,110,.06);color:var(--text)}.page-shell{width:min(1200px,calc(100% - 2rem));margin:0 auto;padding:2rem 0 4rem}.page-hero{display:grid;grid-gap:1rem;gap:1rem;padding:2rem 0 1.5rem}.eyebrow{display:inline-flex;align-items:center;width:-moz-fit-content;width:fit-content;gap:.5rem;padding:.45rem .8rem;border-radius:999px;background:hsla(0,0%,100%,.72);border:1px solid rgba(115,101,88,.12);color:var(--text-muted);font-size:.82rem;text-transform:uppercase;letter-spacing:.08em}.page-hero h1{font-size:clamp(2.1rem,4vw,3.4rem);line-height:1.05;max-width:11ch}.page-hero p{max-width:58ch;color:var(--text-muted);font-size:1rem}.top-bar{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-bottom:2rem}.top-bar-meta{display:grid;grid-gap:.35rem;gap:.35rem}.top-nav{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1.5rem}.top-nav-link{display:inline-flex;align-items:center;min-height:42px;padding:.7rem 1rem;border-radius:999px;border:1px solid var(--border);background:hsla(0,0%,100%,.72);color:var(--text-muted);text-decoration:none;transition:all .2s ease}.top-nav-link:hover{background:rgba(15,118,110,.06);color:var(--text)}.top-nav-link.active{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 18px 30px rgba(15,118,110,.18)}.surface-panel{background:var(--surface);border:1px solid rgba(110,87,60,.12);box-shadow:var(--shadow);border-radius:28px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.section-block{padding:1.5rem}.section-block+.section-block{border-top:1px solid var(--border)}.batch-card,.batch-grid{display:grid;grid-gap:1rem;gap:1rem}.batch-card{padding:1.3rem;border-radius:22px;border:1px solid var(--border);background:hsla(0,0%,100%,.86)}.batch-card-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.badge-row{display:flex;gap:.55rem;flex-wrap:wrap}.badge{display:inline-flex;align-items:center;gap:.3rem;padding:.38rem .72rem;border-radius:999px;font-size:.82rem;font-weight:700;background:rgba(15,118,110,.08);color:var(--primary)}.badge.warn{background:rgba(217,119,6,.12);color:var(--secondary-hover)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.info-grid{display:grid;grid-gap:.85rem;gap:.85rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.info-item{padding:.95rem 1rem;border-radius:18px;background:hsla(39,39%,93%,.72)}.info-item strong{display:block;margin-bottom:.35rem;font-size:.82rem;color:var(--text-muted)}.kv-list{display:grid;grid-gap:.75rem;gap:.75rem}.kv-row{display:grid;grid-gap:.35rem;gap:.35rem;padding:.85rem .95rem;border-bottom:1px solid var(--border)}.kv-row:last-child{border-bottom:none}.kv-row strong{color:var(--text-muted);font-size:.82rem}.admin-layout{display:grid;grid-gap:1rem;gap:1rem}.form-grid{display:grid;grid-gap:.9rem;gap:.9rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.form-grid .full-width{grid-column:1/-1}.helper-text{color:var(--text-muted);font-size:.88rem}.notice{padding:.95rem 1rem;border-radius:18px;font-size:.92rem}.notice.success{background:var(--success-soft);color:var(--success)}.notice.error{background:var(--danger-soft);color:var(--danger)}.inline-actions{display:flex;flex-wrap:wrap;gap:.65rem}.details-card{border:1px solid var(--border);border-radius:20px;overflow:hidden;background:hsla(0,0%,100%,.72)}.details-card summary{list-style:none;cursor:pointer;padding:1rem 1.15rem;font-weight:700}.details-card summary::-webkit-details-marker{display:none}.details-card-body{padding:0 1.15rem 1.15rem;display:grid;grid-gap:1rem;gap:1rem}.table-wrap{overflow-x:auto}.user-cell{display:grid;grid-gap:.2rem;gap:.2rem}.user-cell span{color:var(--text-muted);font-size:.88rem}.login-container{min-height:100vh;display:flex;justify-content:center;align-items:center;padding:1.5rem}.login-card{text-align:center;background:var(--surface);padding:3rem 2.5rem;border-radius:28px;box-shadow:var(--shadow-md);max-width:400px;width:100%;border:1px solid rgba(110,87,60,.12)}.login-title{font-size:2rem;font-weight:700;color:var(--text);margin-bottom:.5rem;letter-spacing:-.02em}.login-accent{color:var(--primary);font-weight:800}.login-subtitle{color:var(--text-muted);font-size:.97rem;margin-bottom:1.5rem}@media (max-width:768px){.page-shell{width:min(100% - 1rem,1200px);padding-top:1rem}.batch-card-head,.top-bar{flex-direction:column;align-items:flex-start}.section-block{padding:1.15rem}}