:root{
  --ink:#23324A; --sage:#4F7A68; --sage-light:#E3EBE6; --wine:#7A4B5C; --wine-light:#F1E4E8;
  --fog:#F1F3F0; --white:#FFFFFF; --muted:#6B726D; --border:#E3E7E2;
  --amber:#B5842A; --amber-light:#FBF0DD; --radius-m:16px; --radius-l:22px;
}
*{box-sizing:border-box;min-width:0;}
body{margin:0;font-family:'Inter',Arial,sans-serif;color:var(--ink);background:var(--fog);overflow-x:hidden;}
h1,h2,h3{font-family:'Fraunces',serif;font-weight:600;margin:0 0 .4em;overflow-wrap:break-word;}
p{line-height:1.6;margin:0 0 .8em;color:var(--muted);}
button{font-family:inherit;cursor:pointer;}
.mono{font-family:'JetBrains Mono',monospace;}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px;}

.view{padding:36px 0 60px;}

.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:28px;flex-wrap:wrap;}
.page-head h1{font-size:1.6rem;margin-bottom:.2em;}
.page-head .sub{font-size:.9rem;color:var(--muted);max-width:480px;}
.badge{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:999px;font-size:.8rem;font-weight:600;white-space:nowrap;}
.badge.ok{background:var(--sage-light);color:var(--sage);}
.badge.wait{background:var(--amber-light);color:var(--amber);}
.badge.new{background:var(--wine-light);color:var(--wine);}
.badge-dot{width:7px;height:7px;border-radius:50%;background:currentColor;}

.panel{background:var(--white);border:1px solid var(--border);border-radius:var(--radius-l);padding:24px;margin-bottom:20px;}
.panel h2{font-size:1.08rem;margin-bottom:4px;}
.panel .panel-hint{font-size:.84rem;color:var(--muted);margin-bottom:18px;}

.reminder{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:14px;background:var(--amber-light);margin-bottom:10px;}
.reminder:last-child{margin-bottom:0;}
.reminder .ricon{width:34px;height:34px;border-radius:50%;background:var(--amber);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.9rem;}
.reminder .rtext{flex:1;}
.reminder .rtitle{font-weight:600;font-size:.9rem;color:var(--ink);}
.reminder .rsub{font-size:.8rem;color:var(--muted);}
.reminder button{background:var(--white);border:1px solid var(--border);border-radius:999px;padding:8px 14px;font-size:.8rem;font-weight:600;color:var(--ink);flex-shrink:0;}
.reminder button:hover{border-color:var(--amber);}
.reminder.done{background:var(--sage-light);opacity:.7;}
.reminder.done .ricon{background:var(--sage);}

.form-row{margin-bottom:16px;}
.form-row label{display:block;font-size:.83rem;font-weight:600;margin-bottom:6px;color:var(--ink);}
.form-row input[type=text],.form-row input[type=number],.form-row select{
  width:100%;border:1px solid var(--border);border-radius:10px;padding:9px 12px;font-family:inherit;font-size:.9rem;background:var(--fog);
}
.day-chips{display:flex;gap:6px;flex-wrap:wrap;}
.day-chip{padding:8px 13px;border-radius:10px;border:1px solid var(--border);background:var(--fog);font-size:.83rem;font-weight:600;color:var(--muted);}
.day-chip.on{background:var(--sage);border-color:var(--sage);color:#fff;}

.slot-grid{display:grid;grid-template-columns:64px repeat(7,1fr);gap:5px;margin-top:10px;}
.slot-head{font-size:.72rem;color:var(--muted);text-align:center;font-weight:700;padding-bottom:2px;}
.slot-label{font-size:.78rem;color:var(--muted);display:flex;align-items:center;font-weight:600;}
.slot-cell{aspect-ratio:1;border-radius:8px;border:1px solid var(--border);background:var(--fog);cursor:pointer;transition:.12s;}
.slot-cell:hover{border-color:var(--sage);}
.slot-cell.on{background:var(--sage);border-color:var(--sage);}
.slot-legend{display:flex;gap:16px;margin-top:12px;font-size:.78rem;color:var(--muted);align-items:center;}
.slot-legend .sw{width:14px;height:14px;border-radius:4px;display:inline-block;vertical-align:middle;margin-right:5px;}
.chip-check{padding:8px 14px;border-radius:999px;border:1px solid var(--border);background:var(--fog);font-size:.83rem;color:var(--muted);}
.chip-check.on{background:var(--wine-light);border-color:var(--wine);color:var(--wine);font-weight:600;}
.chip-check.pending-chip{opacity:.85;cursor:default;}
.pending-mark{font-size:.7rem;font-weight:500;opacity:.8;}
.chip-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.chip-add{padding:8px 14px;border-radius:999px;border:1.5px dashed var(--border);background:none;font-size:.83rem;color:var(--sage);font-weight:600;}
.chip-add:hover{border-color:var(--sage);background:var(--sage-light);}
.tag-input-row{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;}
.tag-input-row input{flex:1;min-width:200px;border:1px solid var(--border);border-radius:10px;padding:9px 12px;font-family:inherit;font-size:.9rem;background:var(--fog);}
.tag-hint{font-size:.78rem;color:var(--muted);margin-top:10px;margin-bottom:0;}
.vocab-preview{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;}
.vocab-preview .chip-check{cursor:default;}

.edu-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);}
.edu-row:last-of-type{border-bottom:none;}
.edu-main{font-size:.88rem;font-weight:600;}
.edu-sub{font-size:.78rem;color:var(--muted);}
.add-row-btn{background:none;border:1.5px dashed var(--border);border-radius:12px;padding:12px;width:100%;color:var(--sage);font-weight:600;font-size:.86rem;margin-top:10px;}
.add-row-btn:hover{border-color:var(--sage);background:var(--sage-light);}
.inline-form{background:var(--fog);border-radius:12px;padding:16px;margin-top:12px;display:none;}
.inline-form.open{display:block;}
.inline-form-actions{display:flex;gap:8px;margin-top:10px;}

.btn{border:none;border-radius:999px;padding:11px 22px;font-weight:600;font-size:.88rem;}
.btn.primary{background:var(--sage);color:#fff;}
.btn.primary:hover{background:#436b5a;}
.btn.ghost{background:var(--white);border:1px solid var(--border);color:var(--ink);}
.btn.ghost:hover{border-color:var(--sage);}
.btn.small{padding:8px 16px;font-size:.82rem;}
.btn.danger-ghost{background:var(--white);border:1px solid #e3c8cf;color:var(--wine);}

.save-banner{display:none;background:var(--sage-light);color:var(--sage);padding:13px 16px;border-radius:12px;font-size:.88rem;font-weight:600;margin-top:16px;}
.save-banner.show{display:block;}

table.history{width:100%;border-collapse:collapse;font-size:.86rem;}
table.history th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--border);}
table.history td{padding:10px;border-bottom:1px solid var(--border);vertical-align:top;}
table.history tr:last-child td{border-bottom:none;}

.mod-tabs{display:flex;gap:8px;margin-bottom:22px;}
.mod-tabs button{background:var(--white);border:1px solid var(--border);border-radius:999px;padding:9px 18px;font-size:.86rem;font-weight:600;color:var(--muted);}
.mod-tabs button.active{background:var(--ink);border-color:var(--ink);color:#fff;}
.mod-subview{display:none;}
.mod-subview.active{display:block;}

.queue-item{display:flex;align-items:center;gap:16px;padding:16px;border:1px solid var(--border);border-radius:14px;margin-bottom:10px;background:var(--white);}
.qi-avatar{width:42px;height:42px;border-radius:50%;background:var(--sage);color:#fff;display:flex;align-items:center;justify-content:center;font-family:'Fraunces',serif;font-weight:600;flex-shrink:0;}
.qi-avatar.wine{background:var(--wine);}
.qi-main{flex:1;min-width:180px;}
.qi-name{font-weight:600;font-size:.94rem;}
.qi-desc{font-size:.83rem;color:var(--muted);}
.qi-actions{display:flex;gap:8px;flex-shrink:0;flex-wrap:wrap;}

.match-controls{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin-bottom:22px;}
.match-controls .form-row{margin-bottom:0;min-width:220px;flex:1;}
.match-row{display:flex;align-items:center;gap:16px;padding:18px;border:1px solid var(--border);border-radius:16px;background:var(--white);margin-bottom:12px;}
.match-rank{font-family:'Fraunces',serif;font-size:1.3rem;color:var(--border);width:28px;flex-shrink:0;}
.mr-1 .match-rank{color:var(--sage);}
.match-avatar{width:46px;height:46px;border-radius:50%;background:var(--wine);color:#fff;display:flex;align-items:center;justify-content:center;font-family:'Fraunces',serif;font-weight:600;flex-shrink:0;}
.match-main{flex:1;min-width:160px;}
.match-name{font-weight:600;font-size:.96rem;}
.match-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}
.match-tag{font-size:.72rem;padding:3px 9px;border-radius:999px;background:var(--fog);color:var(--muted);}
.match-tag.ok{background:var(--sage-light);color:var(--sage);}
.match-tag.warn{background:var(--amber-light);color:var(--amber);}
.match-score{width:150px;flex-shrink:0;text-align:right;}
.score-num{font-family:'Fraunces',serif;font-size:1.3rem;color:var(--ink);}
.score-bar{height:6px;background:var(--border);border-radius:999px;margin-top:6px;overflow:hidden;}
.score-bar-fill{height:100%;background:var(--sage);border-radius:999px;}

.modal-overlay{position:fixed;inset:0;background:rgba(35,50,74,.5);display:none;align-items:center;justify-content:center;z-index:200;padding:20px;}
.modal-overlay.open{display:flex;}
.modal{background:var(--white);border-radius:var(--radius-l);padding:28px;max-width:480px;width:100%;max-height:85vh;overflow:auto;}
.modal-close{background:none;border:none;float:right;font-size:1.3rem;color:var(--muted);}

.login-box{max-width:360px;margin:80px auto;}

@media(max-width:760px){
  .queue-item,.match-row{flex-wrap:wrap;}
  .qi-actions{width:100%;}
  .match-score{width:100%;text-align:left;}
}
