:root{font-family:"Pretendard","Noto Sans KR","Malgun Gothic",system-ui,sans-serif;color:#e8ecf5;background:#10141e;font-synthesis:none;font-size:14px;--bg:#10141e;--panel:#181e2b;--panel-soft:#1d2535;--border:#30394b;--muted:#a3adc1;--blue:#8ea4ff;--green:#76d9b8;--gold:#f3cb77}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled,input:disabled,select:disabled{cursor:not-allowed;opacity:.48}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #b4c1ff;outline-offset:3px}a{color:inherit}button{border:1px solid var(--border);border-radius:7px;background:#252f43;color:#e8ecf5;min-height:36px;padding:8px 13px;font-weight:600;transition:background .12s,border-color .12s}button:hover:not(:disabled){background:#33405a;border-color:#586885}button.primary{background:#8198f7;color:#101730;border-color:#8198f7}button.primary:hover:not(:disabled){background:#a7b6ff}button.ghost{background:transparent}button.danger{color:#ffaaa8;border-color:#70454d;background:#32232d}button.small{font-size:12px;min-height:30px;padding:5px 9px}.icon-button{min-width:29px;min-height:29px;padding:3px 7px;background:transparent;font-size:15px}.text-button{background:none;border:0;color:var(--blue);padding:0;min-height:24px;font-size:12px}.muted{color:var(--muted)}.gold-text{color:var(--gold)}.small-text{font-size:12px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:1.9px;color:var(--blue);margin:0 0 10px}.pill{display:inline-flex;align-items:center;gap:5px;border:1px solid #465572;background:#26314a;color:#c4cfff;padding:4px 8px;border-radius:5px;font-size:11px;font-weight:700;white-space:nowrap}.pill.green{border-color:#325e54;background:#193c36;color:var(--green)}.pill.gold{border-color:#65523b;background:#3b3225;color:var(--gold)}.pill.dim{border-color:var(--border);background:#222938;color:var(--muted)}.skip-link{position:absolute;left:12px;top:-70px;background:var(--panel);padding:12px;z-index:100}.skip-link:focus{top:12px}.app-header{height:84px;display:flex;justify-content:space-between;align-items:center;padding:0 40px;border-bottom:1px solid #252d3d;background:#141925}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;font-weight:800;font-size:19px;letter-spacing:-.6px}.brand-icon{display:grid;place-items:center;width:39px;height:39px;border:1px solid #8d9fff;background:#697fe5;color:white;border-radius:11px;font-size:24px;font-weight:900;box-shadow:inset 0 0 0 4px #748bec}.brand small{display:block;margin-top:5px;font-size:9px;font-weight:600;letter-spacing:1.45px;color:var(--muted)}.identity{display:flex;align-items:center;gap:9px;font-size:12px;color:#c3cad9}.connection-dot{width:6px;height:6px;border-radius:100%;background:var(--green)}.avatar{width:31px;height:31px;display:grid;place-items:center;background:#303b54;border:1px solid #4a5878;color:#c8d2ff;border-radius:50%;font-size:12px;font-weight:800}.demo-banner{padding:9px 40px;background:#302a20;border-bottom:1px solid #584b31;color:#e1c388;font-size:12px;line-height:1.5}.demo-banner:not([hidden]){display:flex;align-items:center;justify-content:space-between;gap:12px}.demo-banner select{max-width:170px;min-height:28px;padding:4px 7px;font-size:11px;background:#292720;border-color:#675b42;color:#f1d9ac}.shell{max-width:1600px;margin:auto;padding:0 40px}.main-nav{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #293144;height:69px}.nav-tabs{display:flex;align-self:stretch;gap:29px}.nav-tab{position:relative;border:0;border-radius:0;padding:0 2px;background:none;color:var(--muted);font-size:14px}.nav-tab:hover:not(:disabled){background:none;color:#e8ecf5}.nav-tab.active{color:#e1e7ff}.nav-tab.active:after{content:"";height:3px;background:#99adff;position:absolute;bottom:-1px;left:0;right:0;border-radius:4px}.nav-note{font-size:11px;color:#93a0b8}.status{min-height:32px;padding:9px 0 0;font-size:11px;color:var(--muted)}.status.error{color:#ffb0a5}.status.success{color:var(--green)}.page-heading{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:16px 0 25px}.page-heading h1{font-size:29px;letter-spacing:-1.2px;line-height:1.25;margin:0 0 10px}.page-heading p{margin:0;font-size:12px;color:var(--muted);line-height:1.7}.period-card{text-align:right;min-width:170px;font-size:12px;color:#c5cee0;line-height:1.8}.period-card small{display:block;color:var(--muted);font-size:10px;letter-spacing:.3px}.period-card strong{font-weight:600}.stats-grid{display:grid;grid-template-columns:1.1fr 1fr 1fr 1fr;gap:14px;margin-bottom:24px}.stat-card{padding:20px 21px;border:1px solid var(--border);background:var(--panel);border-radius:10px;min-height:118px}.stat-label{display:flex;justify-content:space-between;gap:10px;align-items:center;color:var(--muted);font-size:11px;margin-bottom:12px}.stat-icon{color:#8e9ab1;font-size:14px}.stat-value{font-size:28px;font-weight:700;letter-spacing:-.6px;font-variant-numeric:tabular-nums}.stat-value small{font-size:13px;color:var(--muted);margin-left:5px;font-weight:500}.stat-note{font-size:10px;color:var(--muted);margin-top:7px}.progress-line{height:4px;background:#2a3346;border-radius:5px;margin-top:14px;overflow:hidden}.progress-line span{display:block;background:#91a6ff;height:100%;border-radius:5px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:16px 18px;background:#181f2d;border:1px solid var(--border);border-radius:9px;margin-bottom:20px}.toolbar-group,.button-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.toolbar label{font-size:11px;color:var(--muted);margin-right:5px}.toolbar select{min-width:140px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;overflow:hidden}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:22px}.panel-heading h2{font-size:15px;margin:0 0 6px;font-weight:700}.panel-heading p{font-size:11px;margin:0;color:var(--muted);line-height:1.6}.table-scroll{overflow-x:auto;scrollbar-color:#455371 #181e2b;scrollbar-width:thin}.homework-table,.guild-table,.roster-table{width:100%;border-collapse:collapse;font-size:12px}.homework-table{min-width:790px;table-layout:fixed}.homework-table th,.homework-table td{border-top:1px solid #30394b;border-right:1px solid #2a3344;vertical-align:middle;padding:16px}.homework-table th:last-child,.homework-table td:last-child{border-right:0}.homework-table thead th{background:#1d2636;color:#bbc5d8;font-weight:600;font-size:11px;text-align:left;padding:16px}.homework-table .character-column{width:205px}.homework-table .gold-column{width:118px}.homework-table .raid-column{min-width:176px}.homework-table tbody tr:hover td{background-color:#1b2332}.raid-header{display:flex;justify-content:space-between;gap:6px;align-items:center}.raid-header span{line-height:1.5}.order-controls{display:flex;gap:2px}.order-controls button{border:0;color:#96a4bf;font-size:11px;min-width:19px;padding:2px;min-height:23px}.character-heading{display:flex;align-items:center;gap:10px}.character-monogram{height:36px;width:36px;min-width:36px;display:grid;place-items:center;border:1px solid #4b576e;border-radius:8px;background:#2c374c;font-weight:700;color:#cdd7ec;font-size:14px}.character-name{font-size:13px;font-weight:700;line-height:1.5;word-break:break-all}.character-meta{font-size:10px;color:var(--muted);margin-top:3px}.character-badges{display:flex;gap:5px;margin-top:10px;align-items:center}.character-badges .pill{font-size:9px;padding:3px 5px}.character-badges .order-controls{margin-left:auto}.raid-cell{display:flex;flex-direction:column;gap:9px}.raid-cell select{width:100%;min-height:31px;background:#212b3e;font-size:11px;padding:6px 8px}.raid-cell select.complete{color:var(--green);border-color:#346053;background:#203931}.cell-main{display:flex;align-items:center;justify-content:space-between;gap:8px}.complete-button{flex:1;min-height:30px;padding:5px 8px;background:#263149;font-size:11px;color:#bcc9e8;border-color:#3c4b68}.complete-button.done{background:#203f37;border-color:#396759;color:#89dfbd}.cell-options{display:flex;gap:10px;align-items:center;justify-content:space-between}.check-label{font-size:10px;color:#acb7cd;display:inline-flex;gap:4px;align-items:center;white-space:nowrap}.check-label input{accent-color:#8da4ff;margin:0;width:12px;height:12px;min-height:0}.gold-amount{text-align:right;color:var(--gold);font-size:15px;font-weight:700;white-space:nowrap}.gold-amount small{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:6px}.table-legend{display:flex;justify-content:space-between;gap:12px;padding:14px 21px;border-top:1px solid var(--border);font-size:10px;color:var(--muted);line-height:1.6}.table-legend strong{color:var(--green);font-weight:500}.empty-state{text-align:center;padding:52px 24px;color:var(--muted);line-height:1.8}.empty-state h2{font-size:18px;color:#e0e6f4;margin:0 0 8px}.empty-state p{margin:0 0 18px;font-size:12px}.empty-symbol{width:44px;height:44px;display:grid;place-items:center;background:#28334a;border:1px solid #465576;color:#b9c7ef;margin:0 auto 16px;border-radius:12px;font-size:23px}.loading-card{min-height:360px;display:flex;flex-direction:column;align-items:center;justify-content:center}.loading-card h1{font-size:22px;margin:25px 0 7px}.loading-card p{font-size:12px;color:var(--muted)}.spinner{width:28px;height:28px;border:2px solid #394664;border-top-color:#adbcff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.app-footer{display:flex;justify-content:space-between;gap:12px;padding:25px 0 30px;color:#8592a9;font-size:10px;line-height:1.6}.guild-table{min-width:690px}.guild-table th,.guild-table td{padding:16px 12px;text-align:center;border-top:1px solid var(--border);border-right:1px solid #293345;font-variant-numeric:tabular-nums}.guild-table th{background:#1d2636;color:#c5cee0;font-size:11px}.guild-table th:first-child,.guild-table td:first-child{text-align:left;width:185px;padding-left:22px}.guild-table td{font-size:17px;font-weight:700}.guild-table td.zero{color:#68768e;font-weight:400}.guild-table td.account-cell{font-size:12px;font-weight:600}.account-cell small{display:block;margin-top:6px;color:var(--muted);font-size:10px;font-weight:400}.guild-table .difficulty-header th{font-size:10px;color:var(--muted);padding:10px}.callout{padding:13px 17px;border:1px solid #3b4965;border-radius:7px;background:#1b273c;color:#bdcbe8;font-size:11px;line-height:1.8;margin-bottom:19px}.callout.warning{border-color:#665437;background:#302a21;color:#e3c58f}.setup-card{max-width:650px;padding:36px;margin:32px auto;background:var(--panel);border:1px solid var(--border);border-radius:12px}.setup-card h1{font-size:23px}.setup-card p{font-size:13px;line-height:1.9;color:var(--muted)}input,select,textarea{border:1px solid #46516a;border-radius:6px;background:#131a27;color:#e3e9f6;padding:9px 10px;min-height:36px}select{color-scheme:dark}input::placeholder,textarea::placeholder{color:#8190aa}dialog{width:min(800px,calc(100vw - 36px));max-height:88vh;padding:0;background:#1a2231;color:#e8ecf5;border:1px solid #4a5975;border-radius:12px;box-shadow:0 24px 100px #0008}dialog::backdrop{background:#080c17bd;backdrop-filter:blur(3px)}.modal-header{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:21px 24px;border-bottom:1px solid #34405a}.modal-header h2{margin:0;font-size:18px}.modal-body{padding:24px}.modal-body p{font-size:12px;color:var(--muted);line-height:1.8;margin:0 0 17px}.modal-footer{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid #34405a;padding:16px 24px}.field{display:flex;flex-direction:column;gap:8px;margin-bottom:17px;min-width:0}.field label{font-size:12px;color:#c3cee1}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.field small{color:var(--muted);font-size:10px}.roster-table{min-width:520px}.roster-table th,.roster-table td{text-align:left;padding:13px 8px;border-bottom:1px solid var(--border)}.roster-table th{font-size:10px;color:var(--muted)}.roster-table td small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.roster-table input[type=checkbox]{accent-color:var(--blue);min-height:0;width:15px;height:15px}.modal-section-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:17px}.modal-section-heading h3{font-size:13px;margin:0}.catalog-item{display:flex;justify-content:space-between;align-items:center;padding:15px 0;gap:16px;border-bottom:1px solid var(--border)}.catalog-item:first-child{padding-top:0}.catalog-item strong{font-size:13px}.catalog-item p{margin:5px 0 0;font-size:11px}.difficulty-fields{display:grid;grid-template-columns:1.25fr repeat(4,1fr);gap:8px;padding:12px 0;border-bottom:1px solid var(--border)}.difficulty-fields .field{margin-bottom:0}.difficulty-fields label{font-size:10px}.difficulty-fields input{width:100%;font-size:12px}.dialog-note{margin-top:18px!important}.confirm-title{font-size:15px!important;color:#eef1f8!important}.dragging{opacity:.45}.drag-target{outline:2px solid #a5b7ff;outline-offset:-3px}tr[draggable=true],th[draggable=true]{cursor:grab}.inline-error{color:#ffb5a9!important;font-size:12px;line-height:1.7}.setup-actions{margin-top:22px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1350px){.shell{padding:0 54px}.app-header{padding:0 54px}.homework-table th,.homework-table td{padding:19px}.homework-table .character-column{width:224px}.page-heading{padding-top:21px;padding-bottom:29px}.stats-grid{gap:18px}.stat-card{padding:23px}}
@media(max-width:900px){.shell{padding:0 22px}.app-header{padding:0 22px;height:74px}.demo-banner{padding:9px 22px}.stats-grid{gap:10px}.stat-card{padding:16px}.stat-value{font-size:25px}.toolbar{flex-wrap:wrap}.page-heading h1{font-size:25px}.panel-heading{padding:18px}.nav-note{display:none}.field-grid{gap:0 12px}}
@media(max-width:600px){.shell{padding:0 14px}.app-header{padding:0 16px;height:70px}.brand{font-size:16px;gap:9px}.brand-icon{width:33px;height:33px;font-size:20px}.brand small{font-size:7px;letter-spacing:1px}.identity{font-size:10px;gap:6px}.identity .pill{display:none}.avatar{width:26px;height:26px}.demo-banner:not([hidden]){padding:9px 14px;font-size:10px;align-items:flex-start}.demo-banner select{max-width:123px;font-size:10px}.main-nav{height:59px}.nav-tabs{gap:23px}.nav-tab{font-size:12px}.page-heading{padding:13px 0 19px;align-items:flex-start}.page-heading h1{font-size:23px;margin-bottom:8px}.page-heading p{font-size:11px;max-width:230px}.period-card{min-width:0;font-size:10px;max-width:95px}.period-card small{font-size:9px}.stats-grid{grid-template-columns:1fr 1fr;gap:9px;margin-bottom:16px}.stat-card{padding:16px;min-height:112px}.stat-label{font-size:10px;margin-bottom:10px}.stat-value{font-size:25px}.stat-note{font-size:9px}.toolbar{padding:12px;margin-bottom:16px;gap:12px}.toolbar-group{gap:6px}.toolbar-group:first-child{width:100%;justify-content:space-between}.toolbar select{min-width:115px;flex:1}.toolbar button{font-size:10px;min-height:31px;padding:6px 8px}.toolbar label{font-size:10px}.panel-heading{padding:16px;align-items:flex-start}.panel-heading h2{font-size:14px}.panel-heading p{font-size:10px;max-width:205px}.panel-heading .button-row{justify-content:flex-end}.panel-heading button{font-size:10px;padding:5px 8px;min-height:29px}.table-legend{padding:12px 15px;font-size:9px;flex-direction:column;gap:4px}.app-footer{font-size:9px;flex-direction:column;gap:4px;padding:20px 0}.homework-table{min-width:760px}.status{font-size:10px}.field-grid{grid-template-columns:1fr}.modal-header{padding:17px}.modal-body{padding:17px}.modal-footer{padding:13px 17px}.modal-header h2{font-size:16px}.difficulty-fields{grid-template-columns:1fr 1fr}.difficulty-fields .field:first-child{grid-column:1/-1}.setup-card{padding:23px;margin:20px 0}.setup-card h1{font-size:20px}.callout{font-size:10px}.catalog-item{align-items:flex-start}.loading-card h1{font-size:19px}.modal-section-heading{align-items:flex-start}.modal-section-heading .button-row button{font-size:10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
