*{box-sizing:border-box;margin:0;padding:0;font-family:"Microsoft Yahei",sans-serif}
body{background:#f5f7fa}
#loginPage{min-height:100vh}
.d-none{display:none!important}
/* 导航 */
.nav-bar{background:#fff;box-shadow:0 2px 8px rgba(0,0,0,0.06)}
.nav-bar ul{display:flex;list-style:none;max-width:1200px;margin:0 auto}
.nav-bar li{padding:16px 24px;cursor:pointer;color:#606266;border-bottom:3px solid transparent}
.nav-bar li.active{color:#409eff;border-color:#409eff}
.container{max-width:1200px;margin:24px auto;padding:0 20px}
.page{display:none}
.page.show{display:block}
.sub-page{display:none}
.sub-page.show{display:block}
.card{background:#fff;border-radius:10px;padding:20px;margin-bottom:24px;box-shadow:0 2px 12px rgba(0,0,0,0.08)}
h2{margin-bottom:16px;color:#222}
.flex-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.item-row{display:grid;grid-template-columns:180px 160px 140px 200px;gap:10px;align-items:center;padding:10px;border-bottom:1px solid #eee}
input,select{padding:8px 10px;border:1px solid #dcdfe6;border-radius:6px;font-size:14px}
button{border:none;border-radius:6px;padding:8px 14px;cursor:pointer}
.btn-primary{background:#409eff;color:#fff}
.btn-success{background:#67c23a;color:#fff}
.btn-danger{background:#f56c6c;color:#fff}
.stat-box{display:flex;gap:30px;padding:16px;background:#ecf5ff;border-radius:8px;margin:16px 0}
.stat-item h4{color:#666;font-size:14px}
.stat-item p{font-size:24px;font-weight:bold;color:#1989fa}
.history-item{padding:12px;border:1px solid #e4e7ed;border-radius:8px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}
.chart-wrap{height:420px}
.read-table{width:100%;border-collapse:collapse;margin-top:10px}
.read-table th,.read-table td{border:1px solid #eee;padding:10px;text-align:left}
.read-table th{background:#f5f7fa}
.empty-tip{padding:40px;text-align:center;color:#999;font-size:16px}


/* 工作计划样式 */
.priority-紧急{background:#ffebee;border-left:5px solid #f44336}
.priority-高{background:#fff3e0;border-left:5px solid #ff9800}
.priority-中{background:#e3f2fd;border-left:5px solid #2196f3}
.priority-低{background:#f5f5f5;border-left:5px solid #9e9e9e}
.overdue{color:red;font-weight:bold}
.finished-task{opacity:0.6;text-decoration:line-through}
.card-stat{min-height:120px}

.btn-status{
    border:none;
    color:#fff;
    border-radius:4px;
    padding:2px 8px;
    font-size:13px;
}
.status-notstart{
    background:#999999;
}
.status-doing{
    background:#409eff;
}
.status-finish{
    background:#67c23a;
}







/* 记事本工具栏 */
.editor-toolbar{border:1px solid #ddd;border-bottom:none;padding:8px;border-radius:4px 4px 0 0}
.editor-toolbar button{border:none;background:#fff;padding:4px 8px;margin:0 2px;border-radius:3px;color:#222 !important;}
.editor-toolbar .btn-sm.btn-success{background:#67c23a !important;color:#fff !important;}
.editor-toolbar .btn-sm.btn-danger{background:#f56c6c !important;color:#fff !important;}
.editor-toolbar button:hover{background:#eee}
#noteEditor{min-height:400px;border:1px solid #ddd;padding:10px;border-radius:0 0 4px 4px;outline:none}
#noteEditor{
    -webkit-user-select:text !important;
    user-select:text !important;
}




/* 统一全局富文本代码块，记事本+工作计划详情共用一套样式，颜色完全一致 */
#noteEditor pre, #taskDescEditor pre{
    background:#1a1a1a;
    color:#7cf07c;
    padding:14px;
    border-radius:6px;
    margin:16px 0;
    max-width:100%;
    overflow-x:auto;
    white-space:pre;
    word-break:normal;
    display:block !important;
    clear:both !important;
    font-family:Consolas,Monaco,monospace;
    font-size:14px;
}
#noteEditor pre *, #taskDescEditor pre * {
    color:#7cf07c !important;
    background:transparent !important;
}





.note-item{padding:8px;border-bottom:1px solid #eee;cursor:pointer}
.note-item:hover{background:#f0f7ff}
.note-active{background:#e3f2fd}
.sub-tab{margin-right:8px}

/* 笔记列表条目容器 横向布局 */
.note-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding:8px 10px;
    border-bottom:1px solid #eee;
    cursor:pointer;
    gap:8px;
}
.note-item:hover{background:#f0f7ff}
.note-active{background:#e3f2fd}
.note-text-wrap {
    flex:1;
    overflow:hidden;
}
.note-del-btn {
    padding:2px 6px;
    font-size:12px;
    background:#f56c6c;
    color:#fff;
    border-radius:3px;
    border:none;
    flex-shrink:0;
}
.note-del-btn:hover {
    background:#dd4343;
}

.d-flex.gap-2 {
    gap: 8px;
}

/* 閫�鍑虹櫥褰曟寜閽� */
.nav-bar li.nav-logout{margin-left:auto;color:#fff;background:#f56c6c;border:none;border-radius:6px;padding:8px 18px;margin:8px 16px;cursor:pointer;font-size:14px;transition:all .2s;align-self:center}
.nav-bar li.nav-logout:hover{background:#e34747}

/* ===== 鎴戠殑宸梾鏍峰紡 ===== */
.travel-top-bar{display:flex;align-items:center;justify-content:center;gap:20px;margin-bottom:16px}
.travel-ym-label{font-size:20px;font-weight:bold;color:#222}
.travel-week-header{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:8px;color:#909399;font-size:14px}
.travel-calendar-wrap{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:24px}
/* 鏃ュ巻鍗曞厓鏍� */
.travel-calendar-cell{
    text-align:center;
    border-radius:10px;
    cursor:pointer;
    position:relative;
    overflow:hidden;
    z-index:1;
    height:68px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    border:1px solid #e4e7ed;
    background:#fff;
    transition:all .15s;
}
.travel-calendar-cell.empty{border:none;cursor:default;background:transparent}
.travel-calendar-cell:hover:not(.empty):not(.has-data){background:#ecf5ff;border-color:#409eff}
/* 鏃ユ湡鏁板瓧 */
.travel-calendar-cell .day-num{font-size:17px;z-index:5;position:relative;color:#303133}
/* 鏈夋暟鎹椂鏃ユ湡鏁板瓧淇濇寔榛戣壊锛屽姞鐧借壊鎻忚竟纭繚钃濆簳鍙 */
.travel-calendar-cell.has-data .day-num{color:#000;text-shadow:0 0 3px rgba(255,255,255,0.7)}
/* 鍥涜薄闄愯儗鏅� */
.travel-calendar-cell .quad-bg{
    position:absolute;
    width:50%;
    height:50%;
    z-index:0;
}
.quad-tl-bg{top:0;left:0}
.quad-tr-bg{top:0;right:0}
.quad-bl-bg{bottom:0;left:0}
.quad-br-bg{bottom:0;right:0}
.quad-tl-bg.on,.quad-tr-bg.on,.quad-bl-bg.on,.quad-br-bg.on{background:#409eff}
/* 鍥涜薄闄愭爣绛� */
.travel-calendar-cell .quad-label{
    position:absolute;
    font-size:14px;
    font-weight:bold;
    z-index:4;
    line-height:1;
    color:#fff;
}
.quad-tl-label{top:4px;left:5px}
.quad-tr-label{top:4px;right:5px}
.quad-bl-label{bottom:4px;left:5px}
.quad-br-label{bottom:4px;right:5px}
/* 浠婃棩鐏拌壊搴曪紙娌℃湁宸梾璁板綍鏃讹級 */
.travel-calendar-cell.today-cell:not(.has-data){background:#f5f7fa;border-color:#c0c4cc}
/* 閫変腑楂樹寒 */
.travel-calendar-cell.active{outline:2px solid #409eff;outline-offset:-2px}

/* ===== 鎴戠殑浜屽ア鏍峰紡 ===== */
.luxury-top-bar{display:flex;align-items:center;justify-content:center;gap:20px;margin-bottom:16px}
.luxury-ym-label{font-size:20px;font-weight:bold;color:#222}
.luxury-week-header{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:8px;color:#909399;font-size:14px}
.luxury-calendar-wrap{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:24px}
/* 鏃ュ巻鍗曞厓鏍� */
.luxury-calendar-cell{
    text-align:center;
    border-radius:10px;
    cursor:pointer;
    position:relative;
    overflow:hidden;
    z-index:1;
    height:68px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    border:1px solid #e4e7ed;
    background:#fff;
    transition:all .15s;
}
.luxury-calendar-cell.empty{border:none;cursor:default;background:transparent}
.luxury-calendar-cell:hover:not(.empty):not(.has-data){background:#ecf5ff;border-color:#409eff}
/* 鏃ユ湡鏁板瓧 */
.luxury-calendar-cell .day-num{font-size:17px;z-index:5;position:relative;color:#303133}
/* 鏈夋暟鎹椂鏁存牸钃濊壊鑳屾櫙 */
.luxury-calendar-cell.has-data{background:#409eff}
.luxury-calendar-cell.has-data .day-num{color:#000;text-shadow:0 0 3px rgba(255,255,255,0.7)}
/* 鏃ユ湡涓嬫柟鏄剧ず鎬绘敹鐩� */
.luxury-calendar-cell .day-income{
    font-size:12px;
    font-weight:bold;
    color:#fff;
    z-index:5;
    position:relative;
    margin-top:2px;
}
/* 浠婃棩鐏拌壊搴曪紙娌℃湁璁板綍鏃讹級 */
.luxury-calendar-cell.today-cell:not(.has-data){background:#f5f7fa;border-color:#c0c4cc}
/* 閫変腑楂樹寒 */
.luxury-calendar-cell.active{outline:2px solid #409eff;outline-offset:-2px}
/* 褰曞叆琛ㄥ崟琛� */
.luxury-form-row{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.luxury-form-row .luxury-income{width:140px;flex-shrink:0}
.luxury-form-row .luxury-note{flex:1}
.luxury-form-row .luxury-del-row{flex-shrink:0}
/* 鍥捐〃鍒囨崲鏍囩 */
.luxury-chart-tabs{display:flex;gap:8px;margin-bottom:12px}
/* ===== 浜屽ア浜岀骇瀵艰埅 ===== */
.luxury-sub-page{display:none}
.luxury-sub-page.show{display:block}
.luxury-chart-summary{display:flex;gap:30px;padding:12px 16px;background:#ecf5ff;border-radius:8px;margin-bottom:16px}
.luxury-summary-item{font-size:15px;color:#555}
.luxury-summary-item strong{font-size:20px;color:#1989fa}

/* ===== 宸ヤ綔璁″垝鎺掑簭鎸夐挳 ===== */
.sort-btn{padding:2px 8px;font-size:14px;line-height:1}
/* ===== 搴楅噷绠＄悊鏍峰紡 ===== */
.shop-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border:1px solid #e4e7ed;border-radius:8px;margin-bottom:8px}
.shop-item-name{font-size:15px;font-weight:500}
.shop-item-ops{display:flex;gap:6px;align-items:center}
.shop-empty{padding:30px;text-align:center;color:#999;font-size:15px}
.shop-group{margin-bottom:16px}
.shop-group-title{font-size:14px;font-weight:bold;color:#409eff;padding:6px 0;border-bottom:2px solid #409eff;margin-bottom:8px}
.shop-add-account-row{display:flex;gap:10px;align-items:center;margin-top:16px;padding-top:16px;border-top:1px dashed #ddd}
.shop-add-account-row .form-control{flex:1}

/* ===== 澶囧繕鎺掑簭鎸夐挳 ===== */
.note-sort-btn{padding:2px 6px;font-size:12px;background:#909399;color:#fff;border-radius:3px;border:none;flex-shrink:0;cursor:pointer}
.note-sort-btn:hover{background:#6c757d}

/* ===== 浜屽ア琛ㄥ崟涓嬫媺 ===== */
.luxury-form-row .luxury-brand{width:120px;flex-shrink:0}
.luxury-form-row .luxury-account{width:140px;flex-shrink:0}

/* ===== 鍥剧墖澶勭悊寮圭獥鏍峰紡 ===== */
/* 缂栬緫鍣ㄥ唴鍥剧墖闄愬埗瀹藉害 */
#diaryEditor img, #noteEditor img, #taskDescEditor img {
    max-width: 100%;
    height: auto;
    border-radius: 4px;
}
/* 瑁佸壀瀹瑰櫒 */
.img-crop-container {
    position: relative;
    display: inline-block;
    cursor: crosshair;
    max-width: 100%;
    background: #1a1a2e;
    border-radius: 6px;
    overflow: hidden;
    line-height: 0;
}
.img-crop-container img {
    max-width: 100%;
    height: auto;
    display: block;
    user-select: none;
    -webkit-user-drag: none;
    pointer-events: none;
}
/* 瑁佸壀閫夊尯 */
.img-crop-overlay {
    position: absolute;
    border: 2px solid #fff;
    box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.5);
    pointer-events: none;
    display: none;
    z-index: 10;
}
/* 鏁堟灉棰勮鍖� */
.img-result-section {
    border-top: 1px solid #eee;
    padding-top: 12px;
}
.img-result-preview {
    background: #f5f7fa;
    border: 1px solid #e4e7ed;
    border-radius: 6px;
    padding: 12px;
    text-align: center;
    min-height: 80px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.img-result-preview img {
    max-width: 100%;
    max-height: 200px;
    height: auto;
    border-radius: 4px;
}
/* 寮圭獥鍐� range 婊戝潡 */
.form-range {
    width: 100%;
}