@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;600;700&display=swap');
.mobile-nav{display:none}#roster-panel,#fleet-panel,#goals-panel{scroll-margin-top:70px}
@media(max-width:720px){.mobile-nav{display:flex;position:sticky;top:0;z-index:5;background:#f2f3edf5;gap:6px;padding:10px 0;margin-bottom:12px}.mobile-nav a{flex:1;text-align:center;padding:10px 4px;background:#fbfcf8;border:1px solid #dfe4db;border-radius:7px;text-decoration:none;font-size:12px}}
:root{font-family:'Noto Sans KR',system-ui,sans-serif;color:#253e43;background:#f2f3ed;font-synthesis:none;font-size:14px;--ink:#183d45;--muted:#71817f;--line:#dfe4db;--green:#367a65;--sand:#f4eddb;--orange:#b7693f}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,select,input{border:1px solid var(--line);border-radius:7px;background:white;color:inherit;min-height:36px}button{padding:7px 12px;cursor:pointer;transition:background .15s}button:hover{background:#edf1e9}button:disabled{cursor:not-allowed;opacity:.5}input,select{padding:7px 9px;min-width:0}input:focus,select:focus,button:focus-visible{outline:2px solid #579585;outline-offset:2px}button.primary{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:600}button.primary:hover{background:#28606a}button.quiet{background:transparent}a{color:inherit}h1,h2,h3,p{margin:0}h2{font-size:16px}h3{font-size:15px}small,.small{font-size:12px;line-height:1.7}.hint{color:var(--muted)}[hidden]{display:none!important}.topbar{height:78px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 3vw;background:#fbfcf7}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;font-size:24px;font-weight:700;letter-spacing:-1px}.brand small{display:block;font-size:9px;letter-spacing:2px;font-weight:500}.top-actions{display:flex;align-items:center;gap:8px}.local-note{font-size:12px;color:var(--muted);margin-right:14px}main{max-width:1800px;margin:auto;padding:32px 3vw 16px}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--green);font-weight:700;margin-bottom:8px}h1{font-size:28px;font-weight:600;letter-spacing:-1.3px}.heading p{font-size:14px;color:var(--muted);margin-top:9px}.heading-counts{display:flex;gap:36px}.heading-counts div{display:flex;flex-direction:column;gap:5px;min-width:95px}.heading-counts strong{font-size:29px;font-weight:500}.heading-counts span{font-size:12px;color:var(--muted)}.workspace{display:grid;grid-template-columns:280px minmax(360px,1fr) 298px;gap:20px;align-items:start}.panel{background:#fbfcf8;border:1px solid var(--line);border-radius:12px;padding:18px}.panel-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.count{background:#e9eee6;border-radius:20px;padding:2px 8px;font-size:11px}.search{display:flex;align-items:center;border:1px solid var(--line);border-radius:7px;background:#fff}.search span{padding-left:10px;font-size:20px;color:var(--muted)}.search input{width:100%;border:0;background:transparent}.filter-row{display:flex;gap:6px;margin:10px 0}.filter-row select{width:50%;font-size:12px}.checkline{font-size:12px;display:flex;align-items:center;gap:6px;margin:10px 0}.checkline input{min-height:0;accent-color:var(--green)}.roster-panel>.hint{margin:12px 0}.roster{display:flex;flex-direction:column;gap:7px;max-height:850px;overflow:auto;padding-right:3px}.mate-card{border:1px solid var(--line);border-radius:8px;padding:10px;background:white;display:flex;align-items:center;gap:9px;cursor:pointer}.mate-card:hover,.mate-card.selected{background:#ecf3ea;border-color:#7ba18b}.mate-card.placed{opacity:.65}.monogram{display:grid;place-items:center;width:34px;height:39px;flex-shrink:0;border-radius:5px;background:#edf1e5;color:#52724e;font-size:15px;font-weight:600}.monogram.combat{background:#f1e6df;color:#986545}.monogram.trade{background:#f5ecd4;color:#967b32}.mate-name{font-size:13px;font-weight:600;line-height:1.5}.mate-meta{font-size:11px;color:var(--muted);margin-top:3px}.mate-info{min-width:0;flex:1}.detail-button{border:0;min-height:28px;padding:3px 7px;color:#81928a;background:transparent}.grade{font-size:10px;padding:1px 4px;border-radius:3px;background:var(--sand);color:#9c7739;margin-right:4px}.fleet-toolbar{display:flex;justify-content:space-between;gap:8px;align-items:center;min-height:60px}.fleet-toolbar .small{display:block;color:var(--muted);margin-top:5px}.fleet-toolbar>div:last-child{display:flex;align-items:center;gap:7px}.fleet-toolbar label{font-size:12px;white-space:nowrap}.fleet-toolbar select{margin:0 4px;padding:3px;min-height:30px}.fleet-toolbar button{font-size:11px;padding:5px 7px}.fleet-info{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 0 17px;color:var(--muted);font-size:11px}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#a6b997;margin-right:5px}.text-button{border:0;background:transparent;padding:0;min-height:24px;font-size:12px;text-decoration:underline;text-underline-offset:3px}.ships{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.ship{background:#fbfcf8;border:1px solid var(--line);border-radius:10px;overflow:hidden}.ship-header{display:flex;justify-content:space-between;align-items:center;padding:13px 14px;border-bottom:1px solid var(--line);background:#f9faf5}.ship-title{display:flex;gap:8px;align-items:center}.ship-number{font-size:12px;color:var(--green);border:1px solid #d2ded1;border-radius:50%;width:25px;height:25px;display:grid;place-items:center}.ship-header small{color:var(--muted)}.cabins{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:10px}.cabin{min-height:49px;border:1px dashed #d9dfd4;border-radius:6px;position:relative;display:flex;background:#f5f7f1;align-items:center;justify-content:center;min-width:0}.slot-button{border:0;flex:1;background:transparent;width:100%;padding:5px;font-size:11px;color:#9aa596;min-height:47px;line-height:1.5}.cabin.filled{border-style:solid;background:#fff}.cabin.filled .slot-button{color:var(--ink);font-weight:500;padding-right:21px}.slot-button span{display:block;font-size:10px;font-weight:400;color:var(--muted)}.lock-button{position:absolute;right:1px;top:2px;border:0;background:transparent;padding:0 3px;min-height:18px;font-size:12px;color:#adb6a8}.lock-button.locked{color:var(--orange)}.ship-footer{font-size:10px;color:var(--muted);padding:0 12px 10px}.compass{font-size:23px;color:var(--green)}.goals-panel .hint{margin-bottom:15px}.field-label{display:block;font-size:12px;font-weight:500;margin-bottom:7px}#ability-search,#ability-select{width:100%;font-size:12px}#ability-select{margin-top:5px;padding:4px;min-height:91px}#ability-select option{padding:5px;font-size:11px}.target-options{display:grid;grid-template-columns:1fr 74px;gap:8px;margin:12px 0}.target-options label{font-size:11px;color:var(--muted)}.target-options select,.target-options input{width:100%;display:block;margin-top:5px;font-size:12px}.add-target{width:100%;border-color:#c7d8c7;color:#3c7058;background:#eef4ea;font-size:12px}.targets{margin:18px 0}.empty-targets{font-size:12px;color:var(--muted);text-align:center;padding:22px 5px;border:1px dashed var(--line);border-radius:8px;line-height:1.8}.target{padding:11px 0;border-bottom:1px solid var(--line)}.target-head{display:flex;justify-content:space-between;align-items:start;font-size:12px;gap:6px}.target-head button{border:0;min-height:20px;padding:0 3px;font-size:16px;background:transparent;color:#8e9b8b}.target-meta{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin:5px 0}.target-meta strong{color:var(--orange);font-weight:500}.target-met .target-meta strong{color:var(--green)}.progress{height:4px;background:#e8ecdf;border-radius:5px;overflow:hidden}.progress i{display:block;height:100%;background:#d1a16a}.target-met .progress i{background:#74a482}.solve-box{border-top:1px solid var(--line);padding-top:15px}.solve-box select{width:100%;font-size:12px;margin-bottom:14px}.solve-box button{width:100%;margin-bottom:7px}.solve-box .primary{min-height:42px}.solve-box p{color:var(--muted);margin:8px 0}.loading{text-align:center;padding:80px}.empty-roster{text-align:center;padding:30px 5px;color:var(--muted);font-size:13px}#notice{padding:12px 16px;margin-bottom:15px;background:#f7eaca;border:1px solid #ead7a5;border-radius:8px;font-size:13px}footer{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-top:30px;padding-top:20px;border-top:1px solid var(--line);color:var(--muted);font-size:11px}dialog{border:1px solid var(--line);border-radius:14px;padding:25px;max-width:660px;width:calc(100vw - 32px);max-height:85vh;color:var(--ink);background:#fbfcf8}dialog::backdrop{background:#153d4566;backdrop-filter:blur(3px)}dialog h2{font-size:23px;margin-bottom:6px}dialog h3{margin:22px 0 10px}dialog p{line-height:1.8;font-size:14px}dialog .small{color:var(--muted)}.dialog-close{display:block;margin:22px 0 0 auto}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.stat-cell{padding:9px;background:#eef1e8;border-radius:5px;font-size:11px;display:flex;justify-content:space-between;gap:6px}.stat-cell strong{font-size:13px}.effect-item{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}.effect-item input{min-height:0;accent-color:var(--green)}.effect-item small{margin-left:auto;font-size:10px;color:var(--muted)}.dialog-tools{display:flex;flex-wrap:wrap;gap:14px;margin-top:16px}.dialog-tools label{font-size:13px}.dialog-tools input{min-height:0;accent-color:var(--green)}.dialog-tools input[type=number]{width:65px;min-height:30px}.danger{color:#aa5543}.stat-summary{line-height:1.8}body.busy .workspace{opacity:.85}body.busy .roster-panel,body.busy .fleet-panel,body.busy #target-form,body.busy .targets,body.busy #stat-priority{pointer-events:none}@media(min-width:1550px){.workspace{grid-template-columns:300px minmax(420px,1fr) 320px}.roster{max-height:1050px}.cabin{min-height:54px}.slot-button{font-size:12px}}@media(max-width:1190px){main{padding:24px 18px}.workspace{grid-template-columns:240px minmax(330px,1fr);gap:16px}.goals-panel{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.goals-panel .panel-title,.goals-panel>.hint{grid-column:1/-1}.goals-panel .solve-box{grid-column:2;grid-row:3/5}.goals-panel .targets{grid-column:1}.roster{max-height:1200px}.heading-counts{gap:16px}}@media(max-width:720px){.topbar{height:auto;min-height:70px;padding:14px 16px;gap:12px;flex-wrap:wrap}.brand{font-size:22px}.local-note{display:none}.top-actions button{font-size:11px;padding:5px 8px}.heading{align-items:start}.heading h1{font-size:22px}.heading p{font-size:12px;max-width:210px}.heading-counts{gap:10px}.heading-counts div{min-width:55px}.heading-counts strong{font-size:21px}.heading-counts span{font-size:10px}.workspace{display:flex;flex-direction:column}.workspace> *{width:100%}.roster{max-height:230px;display:grid;grid-template-columns:1fr 1fr}.roster-panel{padding:14px}.roster-panel .panel-title{margin-bottom:10px}.filter-row{display:inline-flex;width:55%;margin-right:5%}.checkline{display:inline-flex;max-width:38%;vertical-align:middle}.mate-card{padding:7px;gap:6px}.mate-name{font-size:11px}.monogram{width:28px;height:32px;font-size:12px}.mate-meta{font-size:10px}.ships{gap:10px}.goals-panel{display:block}.fleet-info{font-size:10px}.fleet-toolbar>div:last-child{gap:4px}.fleet-toolbar h2{font-size:15px}.fleet-toolbar .small{font-size:11px}.ship-header{padding:10px}.cabins{padding:7px;gap:5px}.slot-button{font-size:10px}footer{font-size:10px}.stats-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.roster{display:flex;max-height:260px}.mate-name{font-size:14px}.mate-meta{font-size:12px}.monogram{width:34px;height:38px}.mate-card{padding:10px}.heading{gap:10px}.heading h1{font-size:20px}.heading-counts div{min-width:46px}.heading-counts span{font-size:10px}.filter-row{width:100%;margin-right:0}.checkline{max-width:100%;font-size:13px}.ship-footer{font-size:11px}}
.collection-open{width:100%;display:flex;justify-content:space-between;margin-bottom:12px;color:var(--green)}.collection-open span{font-size:12px}.required-list{border-top:1px solid var(--line);padding-top:15px;margin-top:18px}.required-list h3{margin-bottom:8px}.required-chip{font-size:12px;margin:4px 4px 0 0;background:var(--sand);border-color:#decfa8}.collection-counts{padding:14px 0;color:var(--green);font-weight:600}.collection-filters{display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px}.collection-tabs{display:flex;gap:6px;margin:14px 0}.collection-tabs button{flex:1}.collection-tabs [aria-pressed=true],.collection-row [aria-pressed=true]{background:var(--ink);color:white}.collection-bulk{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:10px;font-size:12px}.collection-bulk span{margin-right:auto}.collection-rows{max-height:44vh;overflow:auto;margin-top:10px}.collection-row{display:flex;align-items:center;justify-content:space-between;padding:12px 4px;border-bottom:1px solid var(--line);gap:8px}.collection-row label{display:flex;align-items:center;gap:12px;flex:1;cursor:pointer}.collection-row input{min-height:0;width:18px;height:18px;accent-color:var(--green)}.collection-row small{display:block;color:var(--muted);font-size:12px}.collection-row button{white-space:nowrap}.collection-row b{font-size:14px}@media(max-width:720px){.collection-filters{grid-template-columns:1fr 1fr}.collection-filters input{grid-column:1/-1}}
.goal-modes{display:flex;gap:4px;margin-bottom:12px}.goal-modes button{flex:1;padding:8px 3px;font-size:12px}.goal-modes [aria-pressed=true]{background:var(--ink);color:white}.target-group{margin-top:18px}.target-group h3{font-size:12px;padding:8px;background:#e9eee6;border-radius:5px}.target-options{grid-template-columns:75px 1fr;align-items:end}#target-scope{display:block;width:100%;margin:6px 0 12px}#ability-search-label{margin-top:12px}#required-search{width:100%}.required-selected{background:#eef2e9;padding:14px;border-radius:8px;margin:16px 0}.required-selected h3{margin:0 0 10px}.required-list .panel-title{margin-bottom:8px}#required-open-owned{margin-top:16px}

.page-nav{display:flex;gap:8px;margin-bottom:26px;border-bottom:1px solid var(--line)}.page-nav a{padding:12px 20px;text-decoration:none;border-bottom:3px solid transparent;font-weight:600}.page-nav [aria-current=page]{border-color:var(--green);color:var(--green)}.collection-page{max-width:1100px;margin:auto;padding:28px}.collection-page h2{font-size:24px}.collection-page .collection-filters{max-width:720px}.collection-page .collection-tabs{max-width:480px}.collection-page .collection-rows{max-height:none;overflow:visible;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 24px}.collection-page .collection-row{min-width:0;padding:16px 0}.collection-page .collection-row label{min-width:0}.collection-page .collection-row input{flex-shrink:0}.collection-page .collection-row button{font-size:11px}.collection-page .collection-counts{font-size:18px}.collection-page .collection-bulk{margin-top:20px}@media(max-width:1000px){.collection-page .collection-rows{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.collection-page{padding:18px}.collection-page h2{font-size:20px}.collection-page .panel-title{align-items:start;gap:12px}.collection-page .panel-title button{font-size:11px}.collection-page .collection-rows{grid-template-columns:1fr}.page-nav a{flex:1;text-align:center;padding:12px 8px}}

/* Task-focused planner: constraints and goals beside the fleet; roster on demand. */
.workspace{grid-template-columns:minmax(340px,440px) minmax(0,1fr);gap:28px}.goals-panel{display:block;grid-column:auto}.goals-panel .solve-box,.goals-panel .targets{grid-column:auto;grid-row:auto}.candidate-settings{padding:14px;background:#edf2e8;border-radius:8px}.candidate-settings h3,.goal-heading{font-size:14px}.candidate-settings .small{color:#526861;margin-bottom:8px}.goal-heading{margin:24px 0 12px}.advanced-options{margin-bottom:16px}.advanced-options summary{cursor:pointer;padding:10px 0;font-size:13px}.advanced-options label{margin-top:12px}.target-edit{display:flex;justify-content:space-between;align-items:center;font-size:12px;margin:8px 0}.target-edit input{width:68px}.target-head{font-size:14px}.target-meta{gap:12px}.target-meta strong{white-space:nowrap}.goal-modes button{min-height:42px}.fleet-panel{min-width:0}.fleet-toolbar{flex-wrap:wrap}.fleet-info{flex-wrap:wrap}#roster-dialog{max-width:700px}#roster-dialog .roster-panel{border:0;padding:0;background:transparent}#roster-dialog .dialog-close{margin:0 0 12px auto}#roster-dialog .roster{max-height:52vh;display:flex}#roster-dialog .mate-name{font-size:14px}#roster-dialog .mate-meta{font-size:12px}#roster-dialog .mate-card{padding:10px}#picker-context{margin:14px 0}#result-preview{padding:16px;background:#edf2e9;border-radius:8px;margin:16px 0}#result-preview h3{margin-bottom:10px}#result-preview table{width:100%;border-collapse:collapse;font-size:12px}#result-preview caption{text-align:left;margin:12px 0;color:var(--muted)}#result-preview th,#result-preview td{text-align:left;padding:10px 5px;border-bottom:1px solid #ccd9c9}#result-preview th{font-weight:500}#result-preview th small{display:block;color:var(--muted);font-size:10px}#result-preview details{margin-top:16px}#result-preview summary{cursor:pointer;font-size:12px}#result-preview h4{margin:18px 0 8px}.preview-mate{padding:8px 0;border-bottom:1px solid var(--line);font-size:12px}.preview-mate p{font-size:11px;line-height:1.8}.comparison-scroll{overflow:auto}.collection-sort{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;font-size:12px}.collection-sort select{margin-left:8px}.collection-page .collection-filters{max-width:none}.collection-page .collection-bulk{padding:12px;background:#edf2e8;border-radius:8px}button,input,select{min-height:40px}.lock-button{min-height:28px;min-width:24px}.text-button{min-height:32px}body.busy #collection input,body.busy #collection .collection-bulk button,body.busy #collection [data-collection-detail]{pointer-events:none;opacity:.5}@media(max-width:1000px){.workspace{grid-template-columns:minmax(310px,380px) minmax(0,1fr);gap:18px}.ships{grid-template-columns:1fr}}@media(max-width:720px){.workspace{display:flex;flex-direction:column}.goals-panel{display:block}.ships{grid-template-columns:repeat(2,minmax(0,1fr))}.heading-counts{display:none}.mobile-nav{top:0}.goals-panel{padding:18px}.collection-sort{flex-wrap:wrap}.top-actions{flex-wrap:wrap}.slot-button{min-height:52px}}@media(max-width:400px){.ships{grid-template-columns:1fr}}

.required-toggle{font-size:11px;white-space:nowrap;padding:5px 8px;min-height:34px}.required-toggle[aria-pressed=true]{background:var(--green);border-color:var(--green);color:white}.remove-cabin{position:absolute;right:2px;top:2px;width:28px;min-height:28px;padding:0;border:0;background:transparent;color:#8b5e51;font-size:20px;line-height:1}.remove-cabin:hover{background:#f6e2db;color:#923b29}.cabin.filled .slot-button{padding-right:32px}.collection-page .collection-rows{grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:720px){.collection-page .collection-rows{grid-template-columns:1fr}}body.busy .required-toggle{pointer-events:none;opacity:.5}

.ranking-settings{margin-top:20px}.ranking-settings select{width:100%}.ranking-settings p{color:var(--muted);margin-top:8px}.configured-goals{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.configured-goals>h3{font-size:14px}

.goal-entry{display:flex;align-items:center;gap:6px}.goal-entry #ability-search{flex:1;width:0;min-width:0}.goal-entry-level{display:flex;align-items:center;gap:3px;font-size:11px;flex-shrink:0}.goal-entry-level input{width:40px;padding:7px 2px;text-align:center;font-size:15px;font-weight:600;appearance:textfield;-moz-appearance:textfield}.goal-entry-level input::-webkit-inner-spin-button,.goal-entry-level input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.goal-entry .add-target{width:36px;min-width:36px;min-height:40px;padding:0;font-size:23px;flex-shrink:0}#target-added{margin-top:8px;min-height:21px}

.ship-capacity{display:flex;gap:8px;align-items:center;font-size:11px}.ship-capacity select{padding:3px;min-height:30px;width:48px}.ship-header{gap:6px;flex-wrap:wrap}

.capacity-steps{display:flex;flex-direction:column;gap:2px}.capacity-steps button{width:28px;min-height:20px;padding:0;border:0;background:transparent;font-size:10px;line-height:20px}.capacity-steps button:hover:not(:disabled){background:#e5ecdf}.capacity-steps button:disabled{opacity:.25}.ship-capacity{gap:5px}

.stats-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(4,auto);grid-auto-flow:column}.stat-cell{min-width:0}@media(max-width:720px){.stats-grid .stat-cell{flex-direction:column;gap:3px;padding:8px 5px;font-size:10px}.stats-grid .stat-cell strong{font-size:13px}}

.search input:focus{outline:none}.search:focus-within{outline:2px solid #579585;outline-offset:2px}.search input{flex:1;width:0;min-width:0}.search span{flex-shrink:0}

/* Required crew control stays separate from cabin details and removal. */
.cabin-required{position:absolute;left:0;top:50%;transform:translateY(-50%);width:32px;height:40px;display:flex;align-items:center;justify-content:center;cursor:pointer}
.cabin-required input{width:16px;height:16px;min-height:16px;margin:0;padding:0;accent-color:var(--green);cursor:pointer}
.cabin-required:has(input:disabled),.cabin-required input:disabled{cursor:not-allowed;opacity:.5}
.cabin.filled .slot-button{padding-left:32px}
