:root{--ink:#102d3a;--muted:#7c9399;--line:#e5eced;--sea:#168e80;--sea2:#25ac99;--bg:#f3f7f7;--nav:#10323e;--warn:#a46322;--danger:#bd4c4c;--white:#fff;--shadow:0 8px 36px rgba(20,47,60,.04)}
*{box-sizing:border-box}html,body{padding:0;margin:0;min-height:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}body{font-size:14px}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.54}a{color:var(--sea);text-decoration:none}img{max-width:100%}h1,h2,h3,h4,p{margin:0}h1{font-size:29px;letter-spacing:-1.1px;line-height:1.2;font-weight:790}h2{font-size:19px;letter-spacing:-.4px}h3{font-size:16px}small,.small{font-size:12px;color:var(--muted)}.muted{color:var(--muted)}.shell{display:grid;grid-template-columns:258px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--nav);color:#f4fafb;padding:33px 20px 25px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:12px;font-size:22px;font-weight:750;letter-spacing:-.7px}.brand-mark{width:36px;height:36px;border-radius:12px;background:linear-gradient(145deg,#36d2a8,#168eaa);display:flex;align-items:center;justify-content:center;font-size:22px;color:#fff;box-shadow:0 6px 19px rgba(0,0,0,.14)}.sidebar-label{font-size:10px;letter-spacing:2px;color:#75919a;margin:44px 13px 15px;font-weight:750}.menu{display:flex;flex-direction:column;gap:5px}.menu button{border:0;background:transparent;color:#9eb9bf;display:flex;align-items:center;gap:13px;text-align:left;padding:13px;border-radius:10px;font-weight:600;font-size:13px;width:100%}.menu button:hover{background:#1c4450;color:white}.menu button.active{background:#265863;color:#fff;box-shadow:inset 3px 0 #5bd6bc}.menu .nav-ico{font-size:17px;width:20px;text-align:center}.sidebar-bottom{margin-top:auto;padding-top:23px}.synology-stamp{padding:17px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.065);border-radius:12px}.synology-stamp b{display:block;font-size:12px;color:#d3faf1}.synology-stamp span{display:block;color:#86a8af;line-height:1.55;font-size:11px;margin-top:8px}.synology-stamp .dot{display:inline-block;background:#5ee0b7;width:8px;height:8px;border-radius:50%;margin-right:7px}.sidebar-user{border-top:1px solid #2b5059;margin-top:20px;padding-top:17px;display:flex;align-items:center;gap:10px}.avatar{height:35px;width:35px;border-radius:50%;display:grid;place-items:center;background:#267667;color:#fff;font-weight:800}.sidebar-user strong{font-size:12px;display:block}.sidebar-user small{font-size:10px}.sidebar-user button{border:0;background:transparent;color:#a9ced4;margin-left:auto;font-size:20px}.main{min-width:0;padding:35px clamp(22px,4vw,64px) 70px}.topbar{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:31px}.kicker{display:block;text-transform:uppercase;color:var(--sea);font-size:10px;letter-spacing:2.5px;font-weight:850;margin-bottom:8px}.top-actions{display:flex;align-items:center;gap:10px}.tag{display:inline-flex;padding:7px 11px;border:1px solid #dbe8e7;border-radius:100px;font-size:11px;font-weight:700;color:#4f827d;background:white;white-space:nowrap}.btn{background:#fff;border:1px solid #d5e4e4;color:var(--ink);border-radius:9px;min-height:39px;padding:10px 15px;font-size:12px;font-weight:750;display:inline-flex;align-items:center;justify-content:center;gap:9px;transition:background .15s,transform .15s}.btn:hover:not(:disabled){background:#ecf6f4}.btn.primary{background:var(--sea);border-color:var(--sea);color:#fff}.btn.primary:hover:not(:disabled){background:#107465}.btn.dark{background:#153c49;color:#fff;border-color:#153c49}.btn.danger{color:var(--danger);border-color:#f1cdcd}.btn.sm{padding:6px 10px;min-height:29px;font-size:11px}.btn.ghost{border:0;background:none;color:#5a807f}.btn.full{width:100%}.btn-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:20px}.grid{display:grid;gap:18px}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:#fff;border:1px solid #e5eded;border-radius:14px;padding:24px;box-shadow:var(--shadow);min-width:0}.card-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.card-heading p{font-size:11px;color:var(--muted);margin-top:4px}.section-header{display:flex;justify-content:space-between;align-items:flex-end;gap:15px;margin:29px 0 15px}.section-header p{color:var(--muted);font-size:12px;margin-top:6px}.metric{min-height:156px}.metric .cap{display:flex;align-items:center;gap:10px;color:#6c8b92;font-weight:700;font-size:12px}.metric .cap i{font-style:normal;font-size:17px}.metric-value{font-size:34px;letter-spacing:-1.3px;font-weight:780;line-height:1.35;margin-top:20px}.metric-value small{font-size:13px;font-weight:600;margin-left:4px}.metric-foot{font-size:11px;color:#789097;margin-top:9px;line-height:1.5}.metric.ph .metric-value{color:#276b87}.metric.cl .metric-value{color:#169a87}.metric.air .metric-value{color:#79649d}.metric.warn .metric-value{color:#bb7835}.banner{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:17px 20px;margin-bottom:20px;border:1px solid #d6e9df;background:#eaf7ef;border-radius:12px}.banner b{display:block;color:#287460;font-size:12px}.banner p{font-size:11px;line-height:1.65;color:#6b8882;margin-top:6px}.banner.warning{border-color:#f1e2c6;background:#fff8e9}.banner.warning b{color:#926625}.muted-line{border-top:1px solid var(--line);padding-top:15px;margin-top:15px;color:#8ca3a5;font-size:11px;line-height:1.6}.chart-wrap{min-height:230px}.chart-legend{display:flex;gap:17px;flex-wrap:wrap;font-size:11px;color:#64858b}.chart-legend span:before{content:"";display:inline-block;width:9px;height:9px;border-radius:50%;background:#258a81;margin-right:7px}.chart-legend span.blue:before{background:#3c9cc6}.chart-svg{width:100%;height:auto;max-height:300px}.chart-empty{text-align:center;padding:65px 10px;color:#9bb0b2;font-size:12px}.groupbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:17px}.monthnav{display:flex;gap:10px;align-items:center}.monthnav .btn{padding:9px 12px}.monthnav b{font-size:13px;min-width:135px;text-align:center}.table-scroll{overflow-x:auto}.table{border-collapse:collapse;width:100%;min-width:590px}.table th{text-align:left;text-transform:uppercase;letter-spacing:1px;font-size:9px;color:#97acaf;padding:15px 12px;border-bottom:1px solid var(--line)}.table td{padding:14px 12px;border-bottom:1px solid #eef2f3;font-size:12px;color:#557078;vertical-align:top}.table td strong{color:#214756}.table tr:last-child td{border:0}.table .value{font-weight:750;color:#164f59}.table .value.green{color:#139c7e}.table .actions{text-align:right;white-space:nowrap}.pill{display:inline-flex;align-items:center;padding:5px 9px;border-radius:100px;background:#edf4f5;color:#547883;font-size:10px;font-weight:750}.pill.green{background:#e0f7ed;color:#218967}.pill.warn{background:#fef1dd;color:#96672e}.pill.red{background:#fbeaea;color:#b45b58}.pill.blue{background:#e6f4f9;color:#357993}.pill.gray{background:#f0f2f5;color:#77828b}.empty{padding:42px 20px;text-align:center;color:#8ba3a8}.empty i{font-style:normal;font-size:33px;display:block;margin-bottom:12px}.empty h3{font-size:14px;color:#597a81;margin-bottom:7px}.empty p{font-size:12px;line-height:1.6}.field{display:flex;flex-direction:column;gap:7px}.field label{color:#426673;font-size:11px;font-weight:750}.field input,.field textarea,.field select{width:100%;background:#fcfefe;border:1px solid #d9e7e8;border-radius:9px;color:#1c3b49;padding:11px 12px;outline:none;min-height:42px}.field input:focus,.field textarea:focus,.field select:focus{border-color:#41baa2;box-shadow:0 0 0 3px #e0f7f1}.field input[type=checkbox]{min-height:0;width:auto}.field textarea{resize:vertical;min-height:75px}.field small{line-height:1.45}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.formgrid .wide{grid-column:1/-1}.formfooter{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.kv{display:grid;gap:10px}.kv div{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid #edf1f2;font-size:12px}.kv div:last-child{border:0}.kv span{color:#7d979e}.kv b{text-align:right;color:#365a64}.equipment-tile{padding:18px;background:#f7faf9;border:1px solid #e9eeef;border-radius:11px}.equipment-tile h4{font-size:12px;margin-bottom:7px}.equipment-tile p{font-size:11px;color:#7e969a;line-height:1.55}.equipment-tile .pill{margin-top:10px}.tasklist{display:flex;flex-direction:column}.task{padding:13px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:11px}.task:last-child{border:0}.task .info{flex:1}.task .info b{display:block;font-size:12px}.task .info small{line-height:1.8}.task .task-control{min-width:115px}.task select{background:#f6faf9;border:1px solid #dce8e8;border-radius:8px;padding:7px 6px;font-size:11px;max-width:125px}.season-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.season-item{border:1px solid #e0eaea;border-radius:12px;padding:16px;background:white;text-align:left;min-height:118px}.season-item:hover{border-color:#7dc7b6}.season-item strong{display:block;font-size:13px}.season-item .huge{font-size:26px;font-weight:800;color:#23877d;display:block;margin:11px 0}.month-info{color:#849fa3;font-size:11px}.content-small{font-size:11px;line-height:1.7;color:#758f94}.weather-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.weather-tile{background:#f3f9f9;border:1px solid #e6efee;border-radius:10px;padding:15px}.weather-tile .temp{font-size:24px;font-weight:800;margin:10px 0;color:#2c7180}.weather-tile .temp small{font-size:12px}.weather-tile .weather-minmax{font-size:11px;line-height:1.6;color:#6b8d93}.weather-tile .headline{font-size:10px;font-weight:850;letter-spacing:1px;color:#41917e;text-transform:uppercase}.shot-thumb{max-height:210px;width:auto;border-radius:9px;box-shadow:0 4px 15px #d4e5e8;border:1px solid #d8e6e8}.shot-card{display:flex;gap:18px;align-items:flex-start;padding:17px;border:1px solid var(--line);border-radius:12px;margin-bottom:12px}.shot-card .info{flex:1}.shot-card h4{font-size:13px;margin-bottom:6px}.shot-card p{font-size:11px;color:#729399;line-height:1.65}.shot-card .shot-thumb{max-height:95px}.file-drop{position:relative;border:2px dashed #afd9d1;background:#f4fbf9;min-height:138px;border-radius:13px;display:flex;align-items:center;justify-content:center;text-align:center;padding:18px}.file-drop input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.file-drop .icon{font-size:30px;color:#3a9c83;margin-bottom:5px}.file-drop p{font-size:11px;color:#7e9e9e;margin-top:6px}.ocr-preview{display:grid;grid-template-columns:minmax(190px,1fr) minmax(0,1.6fr);gap:22px;align-items:start}.ocr-preview-image{background:#eaf2f2;border-radius:11px;padding:16px;text-align:center}.ocr-preview-image img{max-height:700px;width:auto;border-radius:10px;display:block;margin:auto}.ocr-group{border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:14px}.ocr-group h3{margin-bottom:13px;font-size:13px}.ocr-warning{padding:12px 14px;background:#fff7e7;color:#987340;border:1px solid #f1dfb9;border-radius:9px;font-size:11px;line-height:1.65;margin-bottom:16px}.ocr-confirm{display:flex;align-items:flex-start;gap:10px;color:#526f75;font-size:12px;line-height:1.55;padding:15px;border:1px solid #bfded5;border-radius:10px;background:#f0f9f5}.ocr-confirm input{margin-top:4px;accent-color:var(--sea)}.auth-layout{display:grid;grid-template-columns:1.02fr 1fr;min-height:100vh;background:white}.auth-art{background:radial-gradient(circle at 50% 98%,#1a9089 0,#174953 45%,#0e3442 85%);color:#fff;padding:7vw clamp(35px,6vw,100px);display:flex;flex-direction:column;justify-content:space-between;min-height:600px;overflow:hidden}.auth-art .brand{font-size:24px}.auth-headline h1{font-size:clamp(38px,5vw,69px);line-height:1.06;font-weight:760;max-width:550px}.auth-headline em{color:#7bd9c4;font-style:normal}.auth-headline p{margin-top:22px;line-height:1.8;color:#b8d5d8;max-width:410px;font-size:14px}.auth-waves{position:relative;margin:10px 0;height:120px}.auth-waves span{display:block;position:absolute;height:100px;width:120%;border-top:2px solid rgba(177,245,222,.2);border-radius:50%;transform:rotate(-8deg);left:-10%}.auth-waves span:nth-child(2){top:23px}.auth-waves span:nth-child(3){top:46px}.auth-form{padding:45px;display:flex;align-items:center;justify-content:center}.auth-card{max-width:430px;width:100%}.auth-card h2{font-size:29px;margin:14px 0 8px}.auth-card p{color:#8aa1a7;line-height:1.65;font-size:12px;margin-bottom:24px}.auth-card form{display:grid;gap:18px}.auth-card .field input{min-height:49px}.auth-card .btn{min-height:47px;margin-top:3px}.auth-foot{margin-top:27px;color:#839da2;font-size:11px;line-height:1.6}.notice{background:#f1f8f6;border-left:3px solid #35a88e;padding:13px 14px;font-size:12px;color:#607e81;line-height:1.6}.notice.alert{background:#fcf3e7;border-color:#dda95e;color:#8c6c3c}.action-status{min-height:40px}.profile-form{max-width:600px}.pre{background:#f3f6f7;padding:11px;border-radius:8px;overflow:auto;font-size:11px;word-break:break-all}.one-time{background:#f3f9f1;border:1px solid #d0e6c7;padding:20px;border-radius:11px;margin-top:16px}.one-time b{display:block;font-size:11px;margin-bottom:10px;color:#337b62}.one-time code{display:block;font-size:16px;word-break:break-all;color:#1d6752;line-height:1.6}.skeleton{background:#e7edef;border-radius:9px;animation:pulse 1.5s infinite;height:90px}@keyframes pulse{50%{opacity:.5}}#toast{position:fixed;bottom:22px;right:22px;z-index:1001;max-width:min(450px,calc(100vw - 44px));padding:14px 18px;border-radius:11px;background:#193e4c;color:#fff;box-shadow:0 10px 36px rgba(0,0,0,.2);font-size:12px;line-height:1.5;display:none}#toast.error{background:#9b4747}#dialog-root:not(:empty){position:fixed;inset:0;z-index:200;background:rgba(10,30,40,.55);display:flex;align-items:center;justify-content:center;padding:18px}.modal{background:#fff;border-radius:15px;width:min(570px,100%);max-height:90vh;overflow:auto;padding:25px;box-shadow:0 14px 80px rgba(0,0,0,.13)}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:23px}.modal-head button{border:0;background:#edf3f3;border-radius:8px;padding:8px 12px}.backup-list{display:grid;gap:9px}.backup-file{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px;border:1px solid #e7eff0;border-radius:10px}.backup-file strong{font-size:12px;word-break:break-all}.backup-file small{display:block;margin-top:4px}.backup-file .btn{flex-shrink:0}.footer{padding:20px 0;color:#9aafb2;font-size:11px;text-align:center}
@media(max-width:1150px){.shell{grid-template-columns:214px minmax(0,1fr)}.sidebar{padding:27px 13px}.main{padding:28px 25px 60px}.grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.season-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.shell{display:block}.sidebar{position:relative;height:auto;overflow:visible;padding:16px 18px}.sidebar-label,.sidebar-bottom{display:none}.sidebar>.brand{margin-bottom:14px}.menu{display:flex;flex-direction:row;overflow-x:auto;padding-bottom:5px}.menu button{white-space:nowrap;width:auto;padding:9px 12px;font-size:11px}.menu button .nav-ico{font-size:13px}.main{padding:23px 15px 50px}.topbar{align-items:start}.top-actions .tag{display:none}.grid.cols-3,.grid.cols-2{grid-template-columns:1fr}.grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.season-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ocr-preview{grid-template-columns:1fr}.ocr-preview-image img{max-height:360px}.auth-layout{display:block}.auth-art{min-height:330px;padding:25px}.auth-headline h1{font-size:34px}.auth-headline p{font-size:12px}.auth-waves{display:none}.auth-form{padding:30px 20px}.topbar h1{font-size:25px}}
@media(max-width:440px){.grid.cols-4,.weather-grid,.formgrid{grid-template-columns:1fr}.formgrid .wide{grid-column:auto}.card{padding:17px}.topbar{gap:12px;flex-wrap:wrap}.section-header{flex-wrap:wrap}.metric{min-height:132px}.metric-value{margin-top:12px}.shot-card{gap:8px}.shot-card .shot-thumb{max-height:70px}.banner{align-items:flex-start;flex-direction:column}}
