:root{--ink:#28364d;--muted:#5e7591;--teal:#2d6bad;--deep:#1b4295;--mint:#eaf4fe;--line:#dce8f4;--paper:#ffffff;--bg:#f4f9fd;--gold:#92afd0;--danger:#a64b3d}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans KR",sans-serif;font-size:14px;line-height:1.65}button,input,textarea,select{font:inherit}button,a,input,textarea,select{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);background:white;color:var(--ink);border-radius:9px;padding:9px 15px;font-weight:600}button:hover{border-color:var(--teal);background:#edf5fd}button:disabled{opacity:.5;cursor:wait}button.primary{background:var(--teal);color:white;border-color:var(--teal)}button.primary:hover{background:#2458ae}button.danger{color:var(--danger)}button.quiet{border:0;background:transparent}button.small{padding:5px 10px;font-size:12px}input,select,textarea{width:100%;border:1px solid #d4e3f1;border-radius:8px;padding:10px 12px;background:white;color:var(--ink);min-width:0}textarea{resize:vertical;line-height:1.9}input:focus,textarea:focus,select:focus,button:focus-visible,a:focus-visible{outline:3px solid #b4d3f2;outline-offset:2px}label{display:block;font-weight:600;font-size:12px;color:#5e7591;margin:0 0 6px}small,.muted{color:var(--muted)}h1,h2,h3,h4,p{margin-top:0}h1{font-size:31px;font-weight:500;letter-spacing:-1.3px;font-family:Georgia,"Noto Serif KR",serif;margin-bottom:8px}h2{font-size:21px;font-weight:600;letter-spacing:-.7px}h3{font-size:16px}a{color:var(--teal)}.shell{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:var(--deep);color:#e9f2ff;padding:34px 20px;display:flex;flex-direction:column}.brand{display:flex;gap:12px;align-items:center;margin:0 9px 36px}.brand img{width:39px;height:39px}.brand strong{font-family:Georgia,serif;letter-spacing:2px;font-size:15px}.brand small{display:block;font-size:11px;color:#b4cff2;letter-spacing:2px;margin-top:2px}.nav-label{font-size:10px;letter-spacing:2px;color:#b2c9ec;margin:15px 13px 9px}.nav button{display:flex;gap:12px;align-items:center;width:100%;text-align:left;background:transparent;color:#d6e6fa;border:0;margin-bottom:6px;padding:12px}.nav button.active{background:#3464aa;color:#fff}.nav button:hover{background:#28569d}.nav-icon{width:21px;font-size:18px;font-weight:400;color:#b7d7ff}.sidebar-foot{margin-top:auto;padding:22px 10px 0;font-size:11px;color:#bfd5f0;border-top:1px solid #5576af}.main{padding:30px 40px 60px;min-width:0;max-width:1600px;width:100%;margin:auto}.topbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:36px;font-size:12px;color:var(--muted)}.topbar>div,.flex{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dot{display:inline-block;width:6px;height:6px;background:#347bb8;border-radius:50%;margin-right:6px}.pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:26px}.eyebrow{color:var(--teal);letter-spacing:2px;font-size:10px;font-weight:700;margin-bottom:9px}.subtitle{color:var(--muted);margin-bottom:0;font-size:13px}.badge{display:inline-block;font-size:11px;padding:3px 9px;border-radius:20px;background:var(--mint);color:#2d6bad;white-space:normal}.badge.warn{background:#fcf1dc;color:#8e6b35}.badge.gray{background:#eef3f8;color:#657a92}.tabs{display:flex;gap:26px;border-bottom:1px solid var(--line);margin-bottom:22px}.tabs button{border:0;border-radius:0;background:transparent;padding:10px 1px;color:var(--muted)}.tabs button.active{border-bottom:2px solid var(--teal);color:var(--teal)}.card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:23px;min-width:0;box-shadow:0 3px 12px #183b7b03}.card.flush{padding:0;overflow:hidden}.cardhead{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line);gap:10px}.cardhead h3{margin:0}.panelbody{padding:20px}.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.stack{display:grid;gap:18px}.notice{border:1px solid #d5e5f5;background:#edf5fd;border-radius:10px;padding:13px 16px;font-size:12px;color:#476887;margin-bottom:20px}.notice.warn{background:#fcf7eb;border-color:#e9dec4;color:#826b41}.notice.error{background:#fff0eb;border-color:#ebc9bd;color:#8f4d3b}.manuscript{border:0;border-radius:0;background:transparent;min-height:390px;padding:22px;font-size:15px;line-height:2.1}.input-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--line);padding:12px 20px;font-size:11px;color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:55px 20px}.empty .ornament{font-size:33px;color:#9bbde1;margin-bottom:17px}.empty h3{color:#527ba3;font-weight:500;margin-bottom:8px}.empty p{font-size:12px;max-width:340px;margin:0 auto 18px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field.full{grid-column:1/-1}.field small{display:block;margin-top:4px;font-size:11px}.checks{display:flex;gap:8px;align-items:flex-start;font-size:12px;font-weight:400;cursor:pointer}.checks input{width:16px;height:16px;margin-top:3px;flex:none}.toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:18px}.toolbar input{max-width:360px}.entries{display:grid;gap:12px}.entry{padding:18px 20px;background:var(--paper);border:1px solid var(--line);border-radius:12px}.entry-title{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.entry h3{margin:0 0 3px}.entry p{margin:9px 0 0;font-size:12px;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere}.entry .english{font-family:Georgia,serif;font-size:14px;color:var(--teal)}.entry-actions{display:flex;gap:4px;flex-shrink:0}.stat{border:1px solid var(--line);background:var(--paper);border-radius:12px;padding:17px 21px}.stat small{font-size:11px}.stat strong{font-family:Georgia,serif;font-size:29px;display:block;font-weight:400}.datebar{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.datebar .datefield{flex:1;min-width:190px}.datebar .range{width:130px}.date-title{font-family:Georgia,serif;font-size:31px;color:var(--teal);margin:0 0 8px}.timeline-item{border-left:2px solid #cadef2;padding:4px 0 14px 17px;margin-left:5px;position:relative}.timeline-item:before{content:'';position:absolute;left:-5px;top:11px;width:8px;height:8px;border-radius:50%;background:#6b9ccb}.timeline-item h4{font-size:14px;margin:2px 0}.timeline-item p{font-size:12px;color:var(--muted);margin:4px 0;white-space:pre-wrap}.timeline-item small{font-size:11px}.people-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.person{padding:16px;border:1px solid var(--line);border-radius:10px;background:white}.person strong{font-size:14px}.person .age{font-size:22px;color:var(--teal);margin:8px 0}.relationship{font-size:12px;color:var(--muted)}.prose{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:2}.diff{padding:15px 0;border-bottom:1px solid var(--line)}.diff:last-child{border:0}.diff del{background:#fbe9e1;color:#9a5945;text-decoration-color:#b97860}.diff ins{background:#dff0e3;color:#326a49;text-decoration:none}.diff p{font-size:12px;margin:8px 0}.resultbox{min-height:390px}.parallel{display:grid;grid-template-columns:1fr 1fr;gap:15px;padding:15px 0;border-bottom:1px solid var(--line)}.parallel p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.parallel .en{font-family:Georgia,serif;font-size:16px;line-height:1.9}.parallel small{grid-column:1/-1}.ref-list{max-height:230px;overflow:auto;display:grid;gap:9px}.ref-list label{padding:9px;border:1px solid var(--line);border-radius:8px}.mt{margin-top:20px}.mb{margin-bottom:20px}.wrap{overflow-wrap:anywhere}.tablewrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:12px}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-weight:600;color:var(--muted);background:#f4f8fd}td{overflow-wrap:anywhere}dialog{border:1px solid var(--line);border-radius:16px;padding:0;max-width:720px;width:calc(100% - 28px);color:var(--ink);box-shadow:0 20px 100px #162b5530;background:var(--paper)}dialog::backdrop{background:#13264b70;backdrop-filter:blur(3px)}.modalhead{padding:21px 25px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.modalhead h2{margin:0}.modalbody{padding:24px;max-height:70vh;overflow:auto}.modalfoot{border-top:1px solid var(--line);padding:16px 24px;display:flex;justify-content:flex-end;gap:10px}.modal-error{color:var(--danger);font-size:12px;white-space:pre-wrap}.login{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 20% 10%,#deedfc,transparent 55%),var(--bg)}.loginbox{width:100%;max-width:440px;padding:38px;background:var(--paper);border:1px solid var(--line);border-radius:18px;box-shadow:0 20px 80px #224e8110}.loginbox img{width:54px;margin-bottom:25px}.loginbox button{width:100%;margin-top:20px}.loginbox h1{font-size:27px}.loginbox p{font-size:12px;color:var(--muted)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--deep);color:white;border-radius:10px;padding:12px 22px;z-index:100;max-width:90%;box-shadow:0 5px 25px #193b7030;display:none;font-size:13px}details{border:1px solid var(--line);border-radius:10px;padding:11px 15px;background:var(--paper)}summary{cursor:pointer;font-size:12px;font-weight:600}.loading{animation:pulse 1.4s infinite}@keyframes pulse{50%{opacity:.45}}.mobile-brand{display:none}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}.source-note{border-left:3px solid #cadef2;padding-left:13px;font-size:12px;color:var(--muted)}.fileinput{padding:8px}.split-summary{display:flex;gap:20px;margin:20px 0}.split-summary strong{font-size:22px;display:block}.calendar-note{font-size:12px;line-height:1.9;color:var(--muted)}.pillrow{display:flex;gap:7px;flex-wrap:wrap}.reading{font-family:Georgia,"Noto Serif KR",serif;font-size:15px;line-height:2}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(min-width:1450px){.main{padding-left:55px;padding-right:55px}}@media(max-width:1100px){.shell{grid-template-columns:196px 1fr}.main{padding:25px}.sidebar{padding:28px 13px}.grid2{gap:14px}.pagehead{align-items:flex-start}.parallel{grid-template-columns:1fr}.grid3{gap:10px}}@media(max-width:760px){.shell{display:block}.sidebar{position:relative;height:auto;padding:16px}.brand{margin:0 0 12px}.brand img{width:32px;height:32px}.brand strong{font-size:13px}.brand small{font-size:9px}.nav{display:flex;overflow:auto;gap:5px}.nav-label,.sidebar-foot{display:none}.nav button{white-space:nowrap;width:auto;margin:0;font-size:12px;padding:9px 11px}.nav-icon{display:none}.main{padding:20px 15px 45px}.topbar{margin-bottom:24px;font-size:11px}.topbar .breadcrumb{display:none}h1{font-size:27px}.pagehead{flex-direction:column;gap:12px;margin-bottom:22px}.grid2{grid-template-columns:1fr}.grid3{grid-template-columns:repeat(3,1fr)}.card{padding:17px}.cardhead{padding:14px 16px}.panelbody{padding:16px}.formgrid{grid-template-columns:1fr}.field.full{grid-column:auto}.manuscript{min-height:290px;font-size:16px;padding:17px}.entry{padding:15px}.entry-title{flex-wrap:wrap}.toolbar{flex-wrap:wrap}.toolbar input{max-width:none}.stat{padding:13px}.stat strong{font-size:23px}.stat small{font-size:10px}.modalbody{padding:18px}input,textarea,select{font-size:16px}.date-title{font-size:25px}.loginbox{padding:28px}.tabs{gap:20px}.reading{font-size:15px}.datebar button{flex:1}.datebar .range{width:100%}.datebar .datefield{width:100%}}
.toolbar h2{margin-bottom:0;white-space:nowrap}.toolbar select{width:auto;max-width:100%;min-width:155px}.people-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}

.costbox{background:#edf5fd;border:1px solid #cadff2;border-radius:12px;padding:18px 20px;margin-bottom:20px}.costbox p{font-size:12px;margin:8px 0}.costamount{font-family:Georgia,serif;font-size:24px;line-height:1.4;color:#2458ae;overflow-wrap:anywhere}.costbox details{background:#f7fbff}.costbox small{font-size:11px}

/* v1.2 — reference blue palette: sampled background #f4f9fd, primary #2d6bad. */
.sidebar{background:linear-gradient(160deg,#183b82 0%,#2458a5 72%,#2d6bad 100%)}
button.primary{background:linear-gradient(115deg,#2458ae,#33779b);border-color:#2d6bad;box-shadow:0 5px 15px #2458ae0c}
button.primary:hover{background:linear-gradient(115deg,#1b4696,#2d678b)}
.nav button.active{background:#ffffff20;color:#fff}.nav button:hover{background:#ffffff14}

/* v1.3: model selection, shared by desk and settings. */
.model-title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}
.model-title h2{margin-bottom:6px}.model-title p{margin:0}
.model-panel select{width:100%;max-width:100%;font-size:15px;text-overflow:ellipsis}
.model-price{color:var(--accent,#2d6bad);font-weight:600;line-height:1.6;margin:12px 0}
.model-panel details{margin-top:10px}.model-panel details p{line-height:1.8}
@media(max-width:600px){.model-title{flex-direction:column;gap:10px}.model-title button{align-self:flex-start}.model-panel{padding:20px}.model-panel select{font-size:14px}}

/* v1.4: category and relationship filing. */
.library-filters{display:grid;grid-template-columns:minmax(180px,2fr) minmax(130px,1fr) minmax(130px,1fr);gap:16px;align-items:end}
.library-filters input,.library-filters select{width:100%;min-width:0}.library-total{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;color:#546d88}
.entry-category{font-size:12px;color:#546d88;margin-bottom:8px;line-height:1.6}.entry-category span{color:#2d6bad;font-weight:600}.entry h3{overflow-wrap:anywhere}.tag-list{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.form-section{border-top:1px solid #d9e7f1;padding-top:20px;margin-top:8px}.form-section h3{margin:0 0 7px}.form-section small{line-height:1.8}
@media(max-width:700px){.library-filters{grid-template-columns:1fr 1fr}.library-filters>div:first-child{grid-column:1/-1}.entry-actions{flex-wrap:wrap}}
@media(max-width:400px){.library-filters{grid-template-columns:1fr}.library-filters>div{grid-column:1/-1}}

.main{margin:0 auto;align-self:start}
