@import"https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;700&family=Noto+Serif+TC:wght@500;600;700&display=swap";:root{font-family:Noto Sans TC,sans-serif;color:#2b2620;background:#e9e2d4;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:1024px;min-height:100vh}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#cdc2ac;border:2px solid transparent;border-radius:6px;background-clip:content-box}::-webkit-scrollbar-track{background:transparent}button,input,select,textarea{font:inherit}button{cursor:pointer}.auth-loading{min-height:100vh;display:grid;place-items:center;color:#8a7d6a;background:#e9e2d4}.login-page{min-height:100vh;display:grid;place-items:center;padding:34px;background:radial-gradient(circle at 50% 20%,#f5efe2 0,#e9e2d4 42%,#d9cfbd)}.login-card{width:430px;max-width:100%;overflow:hidden;border:1px solid #d8cdb8;border-radius:18px;background:#fdfbf6;box-shadow:0 24px 70px #2b241c2e}.login-brand{min-height:108px;padding:24px 30px;display:flex;align-items:center;gap:13px;background:#2b241c}.login-brand .brand-mark{flex:none;width:42px;height:42px}.login-brand strong{display:block;color:#f1e8d6;font:600 19px "Noto Serif TC";letter-spacing:1.5px}.login-brand small{display:block;margin-top:3px;color:#9b8768;font-size:10px;letter-spacing:2px}.login-heading{padding:29px 32px 5px}.login-heading>span{color:#a9824a;font-size:11px;letter-spacing:2px}.login-heading h1{margin:8px 0 5px;font:600 25px "Noto Serif TC"}.login-heading p{margin:0;color:#8a7d6a;font-size:12px}.login-card form{padding:22px 32px 30px;display:grid;gap:17px}.login-card form label{display:grid;gap:7px;color:#6f655a;font-size:12px}.login-card form input{width:100%;padding:11px 12px;border:1px solid #d8cdb8;border-radius:9px;outline:0;background:#fff;color:#2b2620}.login-card form input:focus{border-color:#a9824a;box-shadow:0 0 0 3px #a9824a1a}.login-card form button{margin-top:3px;width:100%;padding:12px}.login-error{padding:9px 11px;border:1px solid #dfc1b9;border-radius:8px;background:#f4e2dd;color:#963e35;font-size:12px}.login-card footer{padding:14px 20px;border-top:1px solid #e8dfcf;background:#f7f2e8;color:#9a8d79;text-align:center;font-size:10px}.app{min-height:100vh;display:flex}.sidebar{width:232px;height:100vh;position:sticky;top:0;flex-shrink:0;display:flex;flex-direction:column;background:#2b241c;color:#b3a587}.brand{height:104px;padding:25px 23px;border-bottom:1px solid #3d3326;display:flex;align-items:center;gap:11px}.brand-mark{width:38px;height:38px;border:1.5px solid #a9824a;border-radius:50%;display:grid;place-items:center}.brand-mark i{width:10px;height:10px;background:#a9824a;transform:rotate(45deg)}.brand strong{display:block;font:600 17px "Noto Serif TC";color:#f1e8d6;letter-spacing:1px}.brand small{display:block;color:#8d7d61;font-size:10px;letter-spacing:1.8px;margin-top:2px}nav{padding:16px 4px}nav button{position:relative;border:0;width:100%;padding:12px 34px;border-radius:9px;display:flex;justify-content:space-between;color:#b3a587;background:transparent;font:500 14px "Noto Serif TC";text-align:left;margin-bottom:3px}nav button.active{background:#42372a;color:#f1e8d6}nav button.active:before{content:"";position:absolute;left:16px;top:50%;width:3px;height:17px;border-radius:3px;background:#d09a35;transform:translateY(-50%)}nav button b{color:#80745e;font:400 11px Noto Sans TC}.sidebar-meta{margin-top:auto;padding:18px 22px;border-top:1px solid #3d3326;font-size:11px;display:grid;gap:6px}.sidebar-meta span{display:flex;justify-content:space-between}.sidebar-meta b{color:#cdbfa3}.sidebar-meta .sidebar-user{margin-bottom:4px;padding-bottom:10px;border-bottom:1px solid #3d3326;color:#f1e8d6}.sidebar-meta button{margin-top:7px;padding:7px 10px;border:1px solid #574938;border-radius:7px;background:transparent;color:#b3a587;font-size:11px}.sidebar-meta button:hover{border-color:#8d7657;color:#f1e8d6}main{flex:1;min-width:0}.topbar{height:90px;position:sticky;top:0;z-index:10;padding:16px 34px;border-bottom:1px solid #d6ccb8;background:#e9e2d4eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;gap:20px}.topbar>div{flex:1}.topbar h1{margin:0;font:600 22px "Noto Serif TC"}.topbar p{margin:3px 0 0;color:#8a7d6a;font-size:12px}.search{width:270px;background:#fdfbf6;border:1px solid #d8cdb8;border-radius:9px;padding:8px 12px;display:flex;gap:9px;color:#a99a80}.search input{width:100%;border:0;outline:0;background:transparent;color:#2b2620;font-size:13px}.primary,.secondary,.danger{border-radius:9px;padding:10px 18px;border:0}.primary{background:#2b241c;color:#f1e8d6}.primary:disabled{opacity:.55}.secondary{background:#fff;border:1px solid #d8cdb8;color:#6f655a}.danger{background:#fff;border:1px solid #d8cdb8;color:#9a5a32}.wide{width:100%}.content{padding:28px 34px 60px;max-width:1500px;margin:auto}.loading{padding:60px;text-align:center;color:#8a7d6a}.error-banner{margin-bottom:16px;background:#f4e2dd;border:1px solid #dfc1b9;color:#963e35;padding:10px 14px;border-radius:9px;display:flex;justify-content:space-between}.error-banner button{border:0;background:transparent;color:inherit}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.kpi,.panel{background:#fdfbf6;border:1px solid #e5ddcc;border-radius:14px}.kpi{padding:20px 22px}.kpi>span{font-size:13px;color:#8a7d6a;display:flex;gap:8px;align-items:center}.kpi i{width:9px;height:9px;border-radius:50%}.kpi i.gold{background:#a9824a}.kpi i.terracotta{background:#b06a43}.kpi i.green{background:#7f9a6c}.kpi i.gray{background:#a59a86}.kpi>b{display:block;font:600 38px "Noto Serif TC";line-height:1.2;margin-top:8px}.kpi>small{color:#a99a80}.dashboard-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:16px;margin-bottom:16px}.panel-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.panel-title h2{margin:0;font:600 16px "Noto Serif TC"}.panel-title span{color:#a99a80;font-size:11px}.capacity-row{margin:20px 0}.capacity-row>div:first-child{display:flex;justify-content:space-between;font-size:13px}.capacity-row>div span{color:#8a7d6a}.bar{height:10px;background:#ece4d4;border-radius:6px;margin:9px 0 4px;overflow:hidden}.bar i{height:100%;display:block;border-radius:6px}.bar i.incense{background:linear-gradient(90deg,#c07a4a,#a55f30)}.bar i.urn{background:linear-gradient(90deg,#9a7ab0,#76568e)}.capacity-row>small{color:#a99a80}.mini-stats{border-top:1px dashed #e0d6c2;padding-top:18px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.mini-stats div{background:#faf6ec;padding:12px;border-radius:10px;text-align:center}.mini-stats span{display:block;color:#8a7d6a;font-size:11px}.mini-stats b{font:600 22px "Noto Serif TC"}.due-counts{display:grid;grid-template-columns:1fr 1fr;gap:10px}.due-counts div{padding:12px 14px;border-radius:10px;background:#f4e2dd}.due-counts div+div{background:#f6ecd7}.due-counts b{display:block;font:600 28px "Noto Serif TC";color:#a8453a}.due-counts div+div b{color:#b07d2e}.due-counts span{font-size:11px;color:#8a6a65}.due-list{margin-top:12px}.due-list button{width:100%;border:0;background:transparent;display:grid;grid-template-columns:8px 1fr auto auto;gap:8px;align-items:center;padding:8px 5px;text-align:left}.due-list button:hover{background:#f3ece0;border-radius:7px}.due-list i{width:7px;height:7px;border-radius:50%;background:#a8453a}.due-list span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.due-list small{color:#a99a80}.due-list em{font-style:normal;color:#9a5046;font-size:11px}.recent-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.recent-grid button{border:1px solid #ece4d4;background:transparent;border-radius:10px;padding:10px 12px;display:flex;align-items:center;gap:11px;text-align:left}.recent-grid>button>span{width:36px;height:36px;display:grid;place-items:center;border-radius:9px;background:#efe2d4;color:#9a5a32;font:600 16px "Noto Serif TC"}.recent-grid b,.recent-grid small{display:block}.recent-grid small{color:#a99a80;margin-top:2px}.legend{display:flex;gap:18px;background:#fdfbf6;border:1px solid #e5ddcc;width:fit-content;padding:9px 16px;border-radius:10px;margin-bottom:18px}.legend span{display:flex;align-items:center;gap:6px;font-size:12px}.legend i{width:10px;height:10px;border-radius:3px}.floor-panel{background:#f3ede0;border:1px solid #e0d6c2;border-radius:16px;padding:26px 30px}.altar{width:350px;margin:5px auto 28px;padding:18px 24px 14px;border-radius:13px;background:#2b241c;color:#f1e8d6;text-align:center}.altar>div{display:flex;justify-content:center;align-items:center;gap:13px}.altar strong{font:600 18px "Noto Serif TC";letter-spacing:4px;white-space:nowrap}.altar i{color:#b8893f;font-size:12px;font-style:normal}.altar small{display:block;margin-top:8px;color:#a88651;font:10px "Noto Serif TC";letter-spacing:2px}.shelf-block{border-top:1px solid #ddd2bd;padding:18px 0}.shelf-block h3{margin:0 0 12px;text-align:center;font:600 14px "Noto Serif TC";color:#6f655a}.slot-grid{display:grid;grid-template-columns:repeat(12,minmax(58px,1fr));gap:6px}.slot{min-height:50px;border-radius:8px;padding:5px;display:flex;flex-direction:column;justify-content:center;border:1px solid;overflow:hidden}.slot small{font-size:9px;opacity:.7}.slot b{font:500 11px "Noto Serif TC";white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.occupied{background:#f1e2d8;border-color:#dfc5b4!important;color:#77452b}.available{background:#edf2e9;border-color:#cbd8c1!important;color:#536647}.disabled{background:#e6e1d7;border-color:#d2c9b9!important;color:#746c60}.list-toolbar{margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}.list-toolbar select{padding:9px 14px;border:1px solid #d8cdb8;border-radius:9px;background:#fdfbf6}.list-toolbar>span{color:#8a7d6a;font-size:13px}.toolbar-actions{display:flex;gap:9px;align-items:center}.file-button{display:inline-flex;align-items:center;position:relative;overflow:hidden;cursor:pointer}.file-button input{position:absolute;inset:0;opacity:0;cursor:pointer}.table-wrap{background:#fdfbf6;border:1px solid #e5ddcc;border-radius:14px;overflow:auto}.table-wrap table{width:100%;border-collapse:collapse;font-size:13px}.table-wrap th{background:#f1ebde;color:#6f655a;font-weight:500;padding:12px 14px;text-align:left;white-space:nowrap}.table-wrap td{padding:11px 14px;border-bottom:1px solid #efe8d8;white-space:nowrap}.table-wrap tr{cursor:pointer}.table-wrap tbody tr:hover{background:#f6f1e6}.badge{padding:3px 8px;border-radius:6px;font-size:11px;border:1px solid}.drawer-mask{position:fixed;inset:0;z-index:20;background:#2b26206b;border:0}.drawer{position:fixed;right:0;top:0;z-index:30;width:550px;max-width:92vw;height:100vh;background:#f6f1e7;display:flex;flex-direction:column;box-shadow:-16px 0 48px #2b262038}.drawer-head{min-height:130px;padding:26px 32px;display:flex;justify-content:space-between;align-items:flex-start}.drawer-head.occupied{background:linear-gradient(135deg,#8a4f2e,#6e3d22);color:#fff}.drawer-head.available{background:linear-gradient(135deg,#5f7350,#47593b);color:#fff}.drawer-head.disabled{background:linear-gradient(135deg,#6f655a,#544c43);color:#fff}.drawer-head small{color:#ffffffc7;font-weight:600;letter-spacing:3px}.drawer-head h2{margin:8px 0 4px;font:600 27px "Noto Serif TC"}.drawer-head p{margin:0;color:#ffffffd1;font:500 13px "Noto Serif TC";letter-spacing:1px}.drawer-head button{background:#ffffff24;border:0;color:#fff;border-radius:8px;width:40px;height:40px;font-size:24px}.drawer-body{flex:1;overflow:auto;padding:24px 26px}.drawer-actions{padding:16px 26px;border-top:1px solid #e5ddcc;background:#f1ebde;display:flex;gap:10px}.drawer-actions button{flex:1}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#e5ddcc;border:1px solid #e5ddcc;border-radius:10px;overflow:hidden}.detail-grid div{background:#fdfbf6;padding:13px 15px}.detail-grid small,.note small{display:block;color:#8a7d6a;font-size:11px;margin-bottom:5px}.detail-grid b{font-weight:500}.note{margin-top:16px;background:#fdfbf6;border:1px solid #e5ddcc;border-radius:10px;padding:13px 15px}.note p{margin:0;line-height:1.7}.form{display:grid;gap:14px}.form label{display:grid;gap:6px;color:#6f655a;font-size:12px}.form input,.form select,.form textarea{width:100%;border:1px solid #d8cdb8;background:#fffdf8;border-radius:8px;padding:9px 11px;color:#2b2620;outline:0}.form input:focus,.form select:focus,.form textarea:focus{border-color:#a9824a}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-section{margin-top:4px;padding-top:14px;border-top:1px solid #e1d7c4;color:#8a6a35;font:600 13px "Noto Serif TC";letter-spacing:1px}.expiry-groups{display:grid;gap:22px}.expiry-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.expiry-title h2{margin:0;display:flex;align-items:center;gap:11px;font:600 17px "Noto Serif TC"}.expiry-title h2 i{width:10px;height:10px;border-radius:3px}.expiry-title i.overdue{background:#a8453a}.expiry-title i.soon{background:#c89a3e}.expiry-title i.watch{background:#8e9b78}.expiry-title>span{background:#fdfbf6;border:1px solid #e5ddcc;border-radius:7px;padding:2px 9px;color:#8a7d6a}.expiry-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.expiry-cards button{min-height:145px;border:1px solid #e5ddcc;border-left:3px solid #a8453a;border-radius:13px;background:#fdfbf6;padding:18px 20px 15px;text-align:left}.expiry-cards button:nth-child(n){border-left-color:#c89a3e}.expiry-group:first-child .expiry-cards button{border-left-color:#a8453a}.expiry-group:last-child .expiry-cards button{border-left-color:#8e9b78}.expiry-cards b,.expiry-cards small,.expiry-cards span,.expiry-cards em{display:block}.expiry-cards b{font:600 17px "Noto Serif TC"}.expiry-cards small{margin-top:4px;color:#ad8f5d;font-size:12px}.expiry-cards em{flex:none;align-self:flex-start;margin:0;padding:4px 10px;border-radius:14px;font-style:normal;font-size:11px;text-align:center}.expiry-cards em.overdue{background:#f4dfdb;color:#b04035}.expiry-cards em.soon{background:#f6ecd7;color:#a16f23}.expiry-cards em.watch{background:#edf0e8;color:#6c775c}.expiry-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.expiry-card-foot{margin-top:16px;padding-top:13px;border-top:1px solid #eee3d0;display:flex;justify-content:space-between;align-items:center}.expiry-card-foot span{color:#9b7b4b;font-size:12px}.log-action{display:inline-block;padding:3px 8px;border-radius:6px;background:#f3ece0;color:#8a6a35;font-size:11px}.empty-cell{text-align:center;color:#a99a80;padding:50px!important}.admin-toolbar{margin-bottom:12px;padding:12px 15px;background:#fdfbf6;border:1px solid #e5ddcc;border-radius:11px;display:flex;align-items:center;justify-content:space-between}.admin-toolbar span{color:#756a5b;font-size:12px}.admin-toolbar b{color:#2b2620}.admin-toolbar em{margin-left:8px;padding:2px 7px;border-radius:5px;background:#eee3ce;color:#8a642c;font-style:normal;font-size:10px}.admin-toolbar>div{display:flex;gap:8px}.modal-mask{position:fixed;inset:0;z-index:40;border:0;background:#2b262075}.import-modal{position:fixed;z-index:50;left:50%;top:50%;transform:translate(-50%,-50%);width:760px;max-width:94vw;max-height:88vh;background:#f6f1e7;border-radius:16px;overflow:hidden;box-shadow:0 24px 64px #2b262052;display:flex;flex-direction:column}.import-modal>header{background:#2b241c;color:#f1e8d6;padding:20px 25px}.import-modal h2{margin:0;font:600 19px "Noto Serif TC"}.import-modal header p{margin:4px 0 0;color:#b3a587;font-size:12px}.import-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:16px 24px 0}.import-summary div{background:#fdfbf6;border:1px solid #e5ddcc;border-radius:10px;padding:10px 14px}.import-summary b{display:block;font:600 25px "Noto Serif TC"}.import-summary span{color:#8a7d6a;font-size:11px}.import-details{padding:16px 24px;overflow:auto}.import-details article{background:#fffdf8;border:1px solid #e5ddcc;border-radius:9px;margin-bottom:8px;padding:10px 13px}.import-details article>div{display:flex;gap:9px;align-items:center}.import-details article>div span{color:#6f655a}.import-details article p{display:grid;grid-template-columns:75px 1fr 20px 1fr;gap:7px;margin:7px 0 0;font-size:12px}.import-details strong{color:#8a7d6a}.import-details del{color:#a8453a}.import-details ins{color:#4f7045;text-decoration:none}.added-row em{margin-left:auto;font-style:normal;background:#e8efe0;color:#5a7048;padding:2px 7px;border-radius:5px;font-size:11px}.no-change{padding:45px;text-align:center;color:#8a7d6a}.import-modal footer{border-top:1px solid #e5ddcc;padding:14px 24px;display:flex;justify-content:flex-end;gap:10px}.confirm-modal{position:fixed;z-index:50;left:50%;top:50%;transform:translate(-50%,-50%);width:500px;max-width:92vw;background:#f6f1e7;border-radius:15px;overflow:hidden;box-shadow:0 24px 64px #2b262059}.confirm-modal header{padding:18px 22px;background:#7f342b;color:#fff}.confirm-modal h2{margin:0;font:600 19px "Noto Serif TC"}.confirm-modal header p{margin:3px 0 0;color:#e8c4be;font-size:11px}.confirm-body{padding:20px 22px}.confirm-body p{margin:0 0 17px;color:#6f554e;line-height:1.7;font-size:13px}.confirm-body label{display:grid;gap:7px;color:#6f655a;font-size:12px}.confirm-body input{border:1px solid #cfaea7;border-radius:8px;background:#fff;padding:10px 11px;outline:0}.confirm-body input:focus{border-color:#9f493e}.confirm-modal footer{padding:14px 22px;border-top:1px solid #e1d7c4;display:flex;justify-content:flex-end;gap:10px}.danger.solid{border-color:#8e372d;background:#8e372d;color:#fff}.danger:disabled{opacity:.5;cursor:not-allowed}.help-modal{position:fixed;z-index:50;left:50%;top:50%;transform:translate(-50%,-50%);width:720px;max-width:94vw;max-height:88vh;overflow:hidden;border-radius:16px;background:#f6f1e7;box-shadow:0 24px 64px #2b262059;display:flex;flex-direction:column}.help-modal header{padding:18px 23px;display:flex;justify-content:space-between;align-items:flex-start;background:#2b241c;color:#f1e8d6}.help-modal h2{margin:0;font:600 19px "Noto Serif TC"}.help-modal header p{margin:4px 0 0;color:#a9987b;font-size:12px}.help-modal header button{border:0;background:transparent;color:#f1e8d6;font-size:20px}.help-body{overflow:auto;padding:20px 23px;display:grid;gap:13px}.help-body article{padding:15px 16px;border:1px solid #e5ddcc;border-radius:12px;background:#fdfbf6}.help-body h3{margin:0 0 8px;color:#2b2620;font:600 15px "Noto Serif TC"}.help-body p{margin:7px 0 0;color:#6f655a;font-size:13px;line-height:1.7}.help-body ul{margin:10px 0 0;padding-left:20px;color:#6f655a;font-size:13px;line-height:1.8}.help-format{margin-top:10px;padding:11px 12px;border-radius:9px;background:#f1ebde;color:#5b4d3b;font-size:12.5px;line-height:1.7}.help-modal footer{padding:14px 23px;border-top:1px solid #e1d7c4;display:flex;justify-content:flex-end}.export-modal{position:fixed;z-index:50;left:50%;top:50%;transform:translate(-50%,-50%);width:560px;max-width:92vw;overflow:hidden;border-radius:15px;background:#f6f1e7;box-shadow:0 24px 64px #2b262059}.export-modal header{padding:18px 22px;background:#2b241c;color:#f1e8d6}.export-modal h2{margin:0;font:600 19px "Noto Serif TC"}.export-modal header p{margin:4px 0 0;color:#b3a587;font-size:12px}.export-body{padding:18px 22px;display:grid;gap:14px}.export-body label{display:grid;gap:7px;color:#6f655a;font-size:12px}.export-body select{width:100%;border:1px solid #d8cdb8;border-radius:9px;background:#fff;padding:10px 13px;color:#2b2620}.export-count{display:flex;align-items:baseline;gap:8px;padding:13px 15px;border:1px solid #e5ddcc;border-radius:11px;background:#fdfbf6;color:#8a7d6a}.export-count b{color:#2b2620;font:600 28px "Noto Serif TC"}.export-count small{color:#a99a80}.export-modal footer{padding:14px 22px;border-top:1px solid #e1d7c4;display:flex;justify-content:flex-end;gap:10px}.export-summary{margin-top:-6px;color:#8a7d6a;font-size:12px;line-height:1.6}.multi-select{position:relative;min-width:138px}.multi-select>button{width:100%;padding:10px 34px 10px 13px;border:1px solid #d8cdb8;border-radius:9px;background:#fffdf8;color:#2b2620;text-align:left}.multi-select>button:after{content:"⌄";position:absolute;right:12px;top:9px;color:#6f655a}.multi-menu{position:absolute;z-index:20;top:calc(100% + 4px);left:0;min-width:170px;padding:8px;border:1px solid #d8cdb8;border-radius:10px;background:#fffdf8;box-shadow:0 12px 28px #2b26202e;display:grid;gap:2px}.multi-menu label,.export-multi label{display:flex;align-items:center;gap:8px;color:#2b2620;font-size:13px;white-space:nowrap}.multi-menu input,.export-multi input{width:auto;accent-color:#8a4f2e}.export-multi{display:grid;gap:7px;color:#6f655a;font-size:12px}.export-multi>div{min-height:43px;padding:9px 11px;border:1px solid #d8cdb8;border-radius:9px;background:#fff;display:flex;flex-wrap:wrap;gap:9px 13px;align-items:center}.users-modal{position:fixed;z-index:50;left:50%;top:50%;transform:translate(-50%,-50%);width:820px;max-width:94vw;max-height:90vh;overflow:hidden;border-radius:16px;background:#f6f1e7;box-shadow:0 24px 64px #2b262059}.users-modal>header{padding:18px 23px;display:flex;justify-content:space-between;align-items:flex-start;background:#2b241c;color:#f1e8d6}.users-modal>header h2{margin:0;font:600 19px "Noto Serif TC"}.users-modal>header p{margin:4px 0 0;color:#a9987b;font-size:11px}.users-modal>header button{border:0;background:transparent;color:#f1e8d6;font-size:20px}.users-body{max-height:calc(90vh - 78px);overflow:auto;padding:20px 23px 24px}.user-create{padding:16px;border:1px solid #e5ddcc;border-radius:12px;background:#fdfbf6;display:grid;gap:11px}.user-create h3{margin:0 0 2px;font:600 15px "Noto Serif TC"}.user-create>div{display:grid;grid-template-columns:1fr 1fr;gap:11px}.user-create label{display:grid;gap:5px;color:#756a5b;font-size:11px}.user-create input,.user-create select,.user-list select{min-width:0;padding:8px 10px;border:1px solid #d8cdb8;border-radius:8px;background:#fff}.user-create>button{justify-self:end}.users-body>.login-error{margin:12px 0}.user-list{margin-top:15px;display:grid;gap:8px}.user-list article{padding:11px 12px;display:grid;grid-template-columns:minmax(220px,1fr) 110px auto auto;gap:8px;align-items:center;border:1px solid #e5ddcc;border-radius:10px;background:#fdfbf6}.user-list article.inactive{opacity:.58}.user-list article b,.user-list article span{display:block}.user-list article b{font-size:13px}.user-list article span{margin-top:2px;color:#8a7d6a;font-size:10px}.user-list button{padding:8px 10px;font-size:11px}@media(max-width:1180px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.recent-grid{grid-template-columns:repeat(2,1fr)}.slot-grid{grid-template-columns:repeat(9,minmax(58px,1fr))}}.sidebar{width:224px}.brand{height:104px}.content{max-width:none;padding:28px 34px 60px}.topbar{height:88px}.kpi-grid{gap:18px;margin-bottom:24px}.kpi{min-height:132px;padding:23px 24px}.kpi>b{font-size:40px;margin-top:11px}.kpi>small{font-size:12px}.dashboard-grid{grid-template-columns:minmax(600px,1.55fr) minmax(360px,1fr);gap:18px;margin-bottom:18px}.panel{border-color:#e2d8c5;padding:24px}.panel-title h2{font-size:17px}.panel-title button{border:0;background:transparent;color:#a9824a}.stats-panel{min-height:472px}.capacity-pair{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding-bottom:22px;border-bottom:1px dashed #ddd0b9}.stat-capacity>div:first-child{display:flex;justify-content:space-between;align-items:end}.stat-capacity>div b{color:#9a5735;font:600 14px "Noto Serif TC"}.stat-capacity>div span{color:#9a8a70;font-size:11px}.stat-capacity>div strong{color:#2b2620;font:600 20px "Noto Serif TC"}.stacked-bar{height:10px;margin:10px 0;background:#eee6d7;border-radius:7px;overflow:hidden;display:flex}.stacked-bar i{height:100%;display:block}.incense-used,.item-incense{background:#bd6e3e}.incense-free{background:#91a676}.urn-used,.item-urn{background:#8e71a5}.urn-free{background:#86a16f}.item-reserve{background:#c6b89d}.gender-male,.male-dot{background:#6688ad!important}.gender-female,.female-dot{background:#c17f99!important}.stat-capacity p{margin:0;display:flex;gap:18px;font-size:11px;color:#756a5b}.stat-capacity p span{display:flex;align-items:center;gap:6px}.stat-capacity p i,.stat-distribution p i{width:8px;height:8px;border-radius:2px}.stats-split{display:grid;grid-template-columns:1fr 1fr;gap:25px;padding:22px 0;border-bottom:1px dashed #ddd0b9}.stat-distribution h3{margin:0 0 10px;color:#8a7d6a;font-size:12px;font-weight:400;letter-spacing:1px}.stat-distribution p{margin:9px 0 0;display:flex;justify-content:space-between}.stat-distribution p span{display:flex;align-items:center;gap:8px;color:#6f655a;font-size:12px}.stat-distribution p b{font:500 17px "Noto Serif TC"}.stat-boxes{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding-top:22px}.stat-boxes>div{padding:14px;text-align:center;border:1px solid #e7dac1;border-radius:10px;background:#fcf8ef}.stat-boxes span{color:#8a7d6a;font-size:11px}.stat-boxes b{display:block;font:500 25px "Noto Serif TC"}.stat-boxes small{margin-left:4px;color:#9d8b6c;font-size:10px}.stat-boxes .money{background:#fff6e4;border-color:#ead19f}.stat-boxes .money span{color:#b67b23}.due-counts div{min-height:82px}.due-list button{padding:8px 4px}.due-list em{padding:3px 8px;border-radius:10px;background:#f4dfda;color:#b04437}.recent{padding-bottom:26px}.recent-grid button{background:#fffdf8}.floor-legends{display:flex;gap:18px;align-items:center;margin-bottom:22px}.floor-legends .legend{margin:0;padding:11px 20px}.floor-legends .legend span{font-size:13px}.floor-legends .legend span small{color:#a99a80;font-size:11px}.floor-legends>small{color:#8a7d6a}.gender-legend i,.slot>i,.slot-table td>i{display:inline-block;width:7px;height:7px;border-radius:50%}.floor-panel{width:100%;min-width:0;padding:26px 30px 34px;background:#f3ede0;overflow-x:hidden}.floor-block{width:100%;min-width:0;padding:18px 0;border-top:1px solid #ddd2bd}.floor-block h3{margin:0 0 13px;color:#9a8057;text-align:center;font:500 13px "Noto Serif TC";letter-spacing:1px}.physical-row{width:100%;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) clamp(22px,3vw,44px) minmax(0,1fr);gap:clamp(2px,.45vw,8px);align-items:center;margin-bottom:7px}.physical-row>div{min-width:0;display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:clamp(2px,.35vw,6px)}.physical-row>span{color:#a9916a;font-size:9px;text-align:center}.slot{position:relative;min-width:0;min-height:47px;border-radius:7px;padding:4px 2px;overflow:hidden}.slot small{display:block}.slot>i{position:absolute;right:4px;top:4px}.slot.missing{background:#fff;border-color:#ded4c3!important}.slot:disabled{cursor:default}.urn-row{width:100%;min-width:0;display:flex;flex-wrap:wrap;gap:7px;align-items:center;justify-content:center;padding:14px clamp(10px,10vw,160px);border-top:1px dashed #ddd2bd}.urn-row>b{margin-right:8px;color:#9a6a32;font:600 13px "Noto Serif TC"}.urn-row .slot{width:clamp(42px,4.5vw,63px);flex:0 1 63px}.list-toolbar{margin:4px 0 16px}.list-filters{display:flex;gap:10px}.list-toolbar select{min-width:98px;padding:10px 13px;background:#fffdf8}.data-toolbar{margin-bottom:14px;padding:12px 16px;border:1px solid #e5ddcc;border-radius:12px;background:#fdfbf6;display:flex;justify-content:space-between;align-items:center}.data-toolbar>span{color:#756a5b;font-size:12px}.slot-table th{padding:13px 14px}.slot-table td{height:46px}.status-pill,.item-pill,.tag-pill,.due-pill{display:inline-block;padding:3px 9px;border-radius:12px;font-size:11px;border:0}.status-pill.occupied{background:#f3dfd0;color:#a45f31}.status-pill.available{background:#e7efdf;color:#5e794c}.status-pill.disabled{background:#e7e1d7;color:#746c60}.item-pill.incense{background:#f3ece0;color:#8a6a35}.item-pill.urn{background:#eee4f2;color:#705789}.round-pill{display:inline-grid;width:22px;height:22px;place-items:center;border-radius:50%;font-size:11px}.round-pill.yes{background:#e7efdf;color:#4f7441}.round-pill.no{background:#eee6e4;color:#9c776a}.tag-pill.yellow{background:#f6edcf;color:#947126}.tag-pill.pink{background:#f5e1e7;color:#9b596b}.due-pill{background:#f5edda;color:#a37831}.due-pill.overdue{background:#f5e0dc;color:#b13f34}.slot-table .male-dot,.slot-table .female-dot{margin-right:6px;vertical-align:middle}.expiry-groups{gap:24px}.expiry-cards{grid-template-columns:repeat(4,minmax(230px,1fr))}.expiry-title{justify-content:flex-start;gap:10px}.expiry-title>span{border:0;border-radius:12px;background:#f4e2dd;color:#a8453a}.logs-toolbar{margin:2px 0 16px;display:flex;justify-content:space-between;align-items:center}.logs-toolbar>div{display:flex;gap:10px}.logs-toolbar>span{color:#8a7d6a;font-size:12px}.admin-toolbar{padding:9px 14px}@media(max-width:1350px){.dashboard-grid{grid-template-columns:1fr}.expiry-cards{grid-template-columns:repeat(2,minmax(280px,1fr))}}.sidebar{width:232px}nav{padding:16px 14px}nav button{padding:11px 14px 11px 28px;font-size:14.5px;letter-spacing:1px}nav button.active:before{left:14px;width:3px;height:16px;background:#b8893f}.topbar{min-height:88px;height:auto;padding:18px 34px}.search{position:relative;padding-left:34px}.search-icon{position:absolute;left:12px;top:50%;width:13px;height:13px;border:1.6px solid #a99a80;border-radius:50%;transform:translateY(-58%)}.search-icon:after{content:"";position:absolute;right:-5px;bottom:-3px;width:6px;height:1.6px;background:#a99a80;transform:rotate(45deg);transform-origin:left center}.due-list i.soon{background:#c89a3e}.due-list em.soon{background:#f6ecd7;color:#b07d2e}.kpi-grid{gap:16px;margin-bottom:22px}.kpi{min-height:0;padding:20px 22px}.kpi>b{margin-top:10px;font-size:38px;line-height:1.1}.kpi>small{display:block;margin-top:2px;font-size:12px}.dashboard-grid{grid-template-columns:1.5fr 1fr;gap:16px;margin-bottom:16px}.panel{padding:22px 24px}.stats-panel{min-height:0;padding:20px 22px}.stats-panel .panel-title{margin-bottom:14px}.capacity-pair{gap:18px;padding-bottom:22px}.stat-capacity>div b{color:#9a5a32;font-size:14.5px}.stat-capacity.urn>div b{color:#6d5a86}.stat-capacity>div strong{font-size:18px}.stat-capacity .stacked-bar{height:16px;margin:10px 0 11px;border-radius:8px}.stat-capacity p{gap:16px;font-size:12px}.incense-used,.item-incense{background:#b06a43}.incense-free,.urn-free{background:#86a06f}.urn-used,.item-urn{background:#8d72a8}.item-incense-urn{background:#c08f42}.item-sutra{background:#6f8a63}.item-reserve{background:#b9ac92}.stats-split{gap:26px;padding:22px 0}.stat-distribution h3{margin-bottom:12px;font-size:12.5px}.stat-distribution .stacked-bar{height:9px;margin:0 0 13px}.stat-distribution p{margin-top:9px}.stat-boxes{padding-top:22px}.stat-boxes>div{padding:13px 10px;border-radius:11px}.stat-boxes span{font-size:11.5px}.stat-boxes b{margin-top:7px;font-size:25px;line-height:1}.due-counts div{min-height:0}.recent{padding:22px 24px}.drawer{width:440px}.drawer-head{min-height:0;padding:24px 26px}.drawer-head small{color:#ffffffa6;font-size:12px;font-weight:400}.drawer-head h2{margin:4px 0 0;font-size:26px}.drawer-head p{margin-top:6px;color:#ffffffbf;font:400 12.5px Noto Sans TC;letter-spacing:0}.drawer-head button{width:32px;height:32px;font-size:18px}.detail-grid{border-radius:12px}.detail-grid .full{grid-column:1 / 3}.detail-grid small,.note small{color:#a99a80;font-size:11.5px;margin-bottom:4px}.detail-grid b{font-size:14.5px}.note{background:#fdf6e6;border-color:#ecdcb5;border-radius:12px;padding:14px 16px}.note small{color:#b07d2e;letter-spacing:1px}.note p{color:#6f5a35;line-height:1.6}.form{gap:16px}.form label{color:#8a7d6a}.form input,.form select,.form textarea{padding:10px 13px;border-radius:9px;background:#fff}.form textarea{min-height:70px;resize:vertical}.item-pill.incense-urn{background:#f8ebd6;color:#9a6425}.item-pill.sutra{background:#e6efdf;color:#587247}.floor-legends{margin-bottom:18px;flex-wrap:wrap}.floor-legends .legend{gap:12px;padding:9px 16px}.floor-legends .legend button{display:flex;align-items:center;gap:6px;padding:2px 4px;border:0;border-radius:6px;background:transparent;color:#2b2620;font-size:12.5px;transition:opacity .15s}.floor-legends .legend button.muted{opacity:.4}.floor-legends .legend button small{color:#a99a80;font-size:11.5px}.floor-legends>small{font-size:12px}.gender-legend i,.slot>i,.slot-table td>i{width:9px;height:9px}.altar{min-width:280px;width:fit-content;margin:0 auto 22px;padding:12px 40px;border-radius:12px}.altar>div{gap:10px}.altar strong{font-size:18px;letter-spacing:4px}.altar i{width:7px;height:7px;background:#a9824a;transform:rotate(45deg)}.altar small{margin-top:4px;color:#8d7d61;font:11px Noto Sans TC;letter-spacing:3px}.floor-block{margin-bottom:18px;padding:16px 0;border-top-color:#e3d9c6}.floor-block h3{margin-bottom:12px;color:#8a7d6a;letter-spacing:2px}.physical-row{grid-template-columns:42px minmax(0,1fr) 46px minmax(0,1fr);gap:6px;margin-bottom:6px}.physical-row>b{color:#6f655a;text-align:center;font:600 13px "Noto Serif TC"}.physical-row>span{height:30px;border-left:2px solid #e0d6c2;color:#8a7d6a;font:500 10px "Noto Serif TC";display:flex;align-items:center;justify-content:center}.slot{height:46px;min-height:46px;transition:opacity .15s}.floor-panel .slot.occupied{background:#f3e6d9;border-color:#e3cdb8!important;color:#9a5a32;box-shadow:inset 0 0 0 1px #b06a431f}.floor-panel .slot.available{background:#fff;border-color:#e0d6c2!important;color:#5f7a50}.floor-panel .slot.disabled{background:#ece6da;border-color:#ddd3c0!important;color:#7a7062}.slot.dimmed{opacity:.28}.slot small{font-size:9.5px;color:#5f5547;line-height:1;font-weight:600}.slot.occupied small{color:#8a4f2e}.slot.available small{color:#446039}.slot.disabled small{color:#5f5547}.slot>i{width:8px;height:8px}.slot b{font-size:clamp(9px,.75vw,13px);line-height:1.05}.slot.missing{visibility:hidden}.urn-row{margin-top:14px;padding:14px 0 0;display:grid;grid-template-columns:42px minmax(0,1fr) 46px minmax(0,1fr);gap:6px;justify-content:stretch;border-top-color:#d8cdb8}.urn-row>b{margin:0;text-align:center;color:#8a5a3a}.urn-row>div{min-width:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;justify-content:stretch}.urn-row>span{height:30px;border-left:2px solid #e0d6c2}.urn-row .slot{width:auto}.floor-panel{position:relative;padding-bottom:88px}.door{position:absolute;right:30px;bottom:22px;width:fit-content;padding:7px 22px;border:1px dashed #c9bca2;border-radius:8px;background:#ece4d4;color:#8a7d6a;font-size:12px;letter-spacing:3px}.slot-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.expiry-groups{gap:18px}.expiry-cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.expiry-cards button{min-height:0;padding:15px 17px;border-radius:12px}.expiry-title{margin-bottom:12px}.expiry-title>span{border-radius:20px;font-size:12px}.expiry-cards b{font-size:16px}.expiry-cards small{margin-top:2px;color:#a99a80}.expiry-card-foot{margin-top:14px;padding-top:12px;border-color:#efe8d8}.expiry-card-foot span:first-child{color:#8a7d6a}.expiry-card-foot span:last-child{color:#a9824a}@media(max-width:1350px){.expiry-cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}}
