:root{--brand-primary:#66c085;--brand-primary-dark:#4da674;--brand-accent:#e9f6ee;--brand-dark:#33333d;--bg:#f9f9fa;--card:#ffffff;--text:#33333d;--text-muted:#83838c;--border:#e8e8e8;--radius:12px;--font:"Segoe UI",system-ui,-apple-system,sans-serif}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font);background:var(--bg);color:var(--text);min-height:100vh}header{background:var(--card);border-bottom:1px solid var(--border);padding:16px 32px;display:flex;align-items:center;gap:12px}.logo-img{height:42px}.login-logo,.logo-img{width:auto;display:block}.login-logo{height:56px;margin:0 auto 18px}header h1{font-size:18px;font-weight:600}header .sub{font-size:13px;color:var(--text-muted)}.container{max-width:1040px;margin:32px auto;padding:0 24px}#panel-submit{max-width:680px;margin-left:auto;margin-right:auto}.tabs{display:flex;gap:8px;margin-bottom:24px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:6px}.tab-btn{flex:1 1;padding:12px;border:none;background:transparent;border-radius:8px;font-size:15px;font-weight:600;color:var(--text-muted);cursor:pointer;font-family:var(--font);transition:all .15s}.tab-btn.active{background:var(--brand-primary);color:#fff}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:28px}.card h2{font-size:20px;margin-bottom:4px}.card .desc{font-size:14px;color:var(--text-muted);margin-bottom:24px}label{display:block;font-size:14px;font-weight:600;margin-bottom:6px}.hint{font-weight:400;color:var(--text-muted)}input[type=email],input[type=password],input[type=text],select,textarea{width:100%;padding:12px 14px;font-size:15px;font-family:var(--font);border:1px solid var(--border);border-radius:8px;margin-bottom:18px;outline:none;transition:border-color .15s;background:var(--card);color:var(--text)}input:focus,select:focus,textarea:focus{border-color:var(--brand-primary)}textarea{resize:vertical;min-height:110px}.type-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:10px;gap:10px;margin-bottom:22px}.type-option input{display:none}.type-option span{display:block;text-align:center;padding:14px 8px;border:1.5px solid var(--border);border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s}.type-option input:checked+span{border-color:var(--brand-primary);background:var(--brand-accent);color:var(--brand-primary)}.btn{width:100%;padding:14px;font-size:15px;font-weight:600;font-family:var(--font);border:none;border-radius:8px;background:var(--brand-primary);color:#fff;cursor:pointer;transition:background .15s}.btn:hover{background:var(--brand-primary-dark)}.btn:disabled{opacity:.6;cursor:default}.btn.secondary{background:var(--card);color:var(--brand-primary);border:1.5px solid var(--brand-primary)}.success{text-align:center;padding:20px 0}.success .check{width:64px;height:64px;border-radius:50%;color:var(--brand-primary-dark);font-size:30px;display:flex;align-items:center;justify-content:center;margin:0 auto 16px}.success .check,.ticket-id{background:var(--brand-accent)}.ticket-id{display:inline-block;color:var(--brand-primary);font-weight:700;font-size:20px;padding:10px 24px;border-radius:8px;margin:12px 0 20px;letter-spacing:1px}.status-result{margin-top:20px}.ticket-card{border:1px solid var(--border);border-radius:10px;padding:18px;margin-bottom:12px}.ticket-card .row1{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;flex-wrap:wrap;gap:8px}.ticket-card .tname{font-weight:600;font-size:16px}.ticket-card .tid{font-size:13px;color:var(--text-muted)}.ticket-card .tdesc{font-size:14px;color:var(--text-muted);margin:6px 0 14px}.badge{font-size:12px;font-weight:600;padding:4px 10px;border-radius:20px;white-space:nowrap;display:inline-block}.badge.bug{background:#fce6e5;color:#ec5b56}.badge.feature{background:#e4ebf5;color:#6285c4}.badge.enhancement{background:#fdeedd;color:#ef8b33}.badge.st-progress{background:var(--brand-accent);color:var(--brand-primary-dark)}.badge.st-done{background:var(--brand-primary);color:#fff}.badge.st-blocked{background:#ec5b56;color:#fff}.badge.st-waiting{background:var(--bg);color:var(--text-muted);border:1px solid var(--border)}.stages{display:flex;align-items:center;margin-top:8px}.stage{flex:1 1;text-align:center;position:relative}.stage .dot{width:22px;height:22px;border-radius:50%;margin:0 auto 6px;background:var(--border);display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;position:relative;z-index:2}.stage.done .dot{background:var(--brand-primary-dark)}.stage.current .dot{background:var(--brand-primary);box-shadow:0 0 0 4px var(--brand-accent)}.stage.blocked .dot{background:#ec5b56;box-shadow:0 0 0 4px #fce6e5}.stage.blocked .lbl{color:#ec5b56}.blocked-banner{display:flex;align-items:center;gap:8px;background:#fce6e5;color:#c0392b;border:1px solid #f5c1be;border-radius:8px;padding:10px 14px;font-size:13px;font-weight:600;margin-bottom:14px}.blocked-banner .reason{font-weight:400}.reopened-banner{background:#fdeedd;color:#b5651d;border:1px solid #f5d5b3;border-radius:8px;padding:10px 14px;font-size:13px;font-weight:600;margin-bottom:14px}.reopened-banner .reason{font-weight:400}.reopen-section{margin-top:16px;border-top:1px solid var(--border);padding-top:14px}.reopen-link{background:none;border:none;padding:0;font-family:var(--font);font-size:13px;font-weight:600;color:#ec5b56;cursor:pointer;text-decoration:underline}.reopen-form textarea{min-height:70px;margin-bottom:10px}.reopen-form .btn{padding:10px;font-size:14px}.delete-section{margin-top:16px;border-top:1px solid var(--border);padding-top:14px}.delete-link{padding:10px 18px;font-size:14px;font-weight:600;font-family:var(--font);border:none;border-radius:8px;background:#ec5b56;color:#fff;cursor:pointer;transition:background .15s}.delete-link:hover{background:#d64c47}.delete-confirm{background:#fce6e5;border:1px solid #f5c1be;border-radius:8px;padding:14px;margin-top:10px}.delete-confirm .warn-title{font-size:14px;font-weight:700;color:#c0392b;margin-bottom:4px}.delete-confirm .warn-text{font-size:13px;color:#c0392b;margin-bottom:12px}.delete-confirm .actions{display:flex;gap:10px}.btn-danger{padding:10px 16px;font-size:14px;font-weight:600;font-family:var(--font);border:none;border-radius:8px;background:#ec5b56;color:#fff;cursor:pointer}.btn-danger:hover{background:#d64c47}.btn-cancel{padding:10px 16px;font-size:14px;border:1.5px solid var(--border);border-radius:8px;color:var(--text)}.btn-cancel,.feedback-btn{font-weight:600;font-family:var(--font);background:var(--card);cursor:pointer}.feedback-btn{margin-top:14px;width:auto;padding:9px 16px;font-size:13px;border:1.5px solid var(--brand-primary);border-radius:8px;color:var(--brand-primary-dark);transition:all .15s}.feedback-btn:hover{background:var(--brand-accent)}.comments{margin-top:12px}.comment{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin-bottom:8px}.comment .meta{font-size:12px;font-weight:600;color:var(--brand-primary-dark);margin-bottom:4px}.comment .meta span{color:var(--text-muted);font-weight:400}.comment .body{font-size:14px;white-space:pre-wrap}.comment.you{background:var(--brand-accent);border-color:#cfe9d9}.comment.you .meta{color:var(--text)}.no-comments{font-size:13px;color:var(--text-muted);margin-top:10px}.reply-box{margin-top:12px}.reply-box textarea{min-height:60px;margin-bottom:8px}.reply-box .btn{width:auto;padding:10px 18px;font-size:14px}.badge.st-cancelled{background:var(--brand-dark);color:#fff}.stage-note{font-size:13px;color:var(--text-muted);margin-top:14px}.cancelled-banner{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:10px 14px;font-size:13px;font-weight:600;margin-bottom:14px}.filters{display:flex;gap:10px;margin-bottom:6px;flex-wrap:wrap}.filters input{flex:1 1;min-width:180px}.filters input,.filters select{margin-bottom:0;padding:10px 12px;font-size:14px}.filters select{width:auto}.empty-state{text-align:center;padding:34px 0}.empty-state .big{font-size:17px;font-weight:700;margin-bottom:6px}.empty-state p{font-size:14px;color:var(--text-muted);margin-bottom:18px}.empty-state .btn{width:auto;padding:12px 22px}.ticket-table{width:100%;border-collapse:collapse;font-size:14px}.ticket-table th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);padding:10px 12px;border-bottom:2px solid var(--border)}.ticket-table td{padding:12px;border-bottom:1px solid var(--border);vertical-align:middle}.ticket-table tr:last-child td{border-bottom:none}.ticket-table .tid-cell{color:var(--text-muted);font-size:13px;white-space:nowrap}.ticket-table .tname-cell{font-weight:600}.view-btn-wrap{position:relative;display:inline-block}.new-dot{position:absolute;top:-7px;right:-7px;width:15px;height:15px;border-radius:50%;background:var(--brand-primary);border:2.5px solid var(--card);animation:pulse-dot 1.6s ease-in-out infinite}@keyframes pulse-dot{0%,to{box-shadow:0 0 0 0 rgba(102,192,133,.55)}50%{box-shadow:0 0 0 7px rgba(102,192,133,0)}}.view-btn{padding:7px 14px;font-size:13px;font-weight:600;font-family:var(--font);border:1.5px solid var(--brand-primary);border-radius:8px;background:var(--card);color:var(--brand-primary-dark);cursor:pointer;transition:all .15s;white-space:nowrap}.view-btn:hover{background:var(--brand-accent)}.back-btn{background:none;border:none;padding:0;margin-bottom:16px;font-family:var(--font);font-size:14px;font-weight:600;color:var(--brand-primary-dark);cursor:pointer}.back-btn:hover{text-decoration:underline}.detail-header{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap;margin-bottom:4px}.detail-header .tname{font-size:19px;font-weight:700}.detail-header .tid{margin-top:2px}.detail-header .tid,.section-title{font-size:13px;color:var(--text-muted)}.section-title{font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin:22px 0 10px}.detail-desc{font-size:14px;line-height:1.55;white-space:pre-wrap}.timeline{list-style:none}.timeline li{position:relative;padding:0 0 16px 22px}.timeline li:before{content:"";position:absolute;left:4px;top:5px;width:9px;height:9px;border-radius:50%;background:var(--brand-primary)}.timeline li:not(:last-child):after{content:"";position:absolute;left:8px;top:16px;bottom:0;width:1.5px;background:var(--border)}.timeline .t-date{font-size:12px;color:var(--text-muted)}.timeline .t-event{font-size:14px}.stage .lbl{font-size:11px;color:var(--text-muted);font-weight:600}.stage.current .lbl{color:var(--brand-primary)}.stage:not(:first-child):before{content:"";position:absolute;top:11px;left:-50%;width:100%;height:2px;background:var(--border);z-index:1}.stage.current:not(:first-child):before,.stage.done:not(:first-child):before{background:var(--brand-primary-dark)}.error-msg{color:#dc2626;font-size:14px;margin-top:12px;text-align:center}.login-wrap{max-width:400px;margin:60px auto 0}.login-wrap .card .desc,.login-wrap .card h2{text-align:center}.user-chip{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-muted)}.user-chip button{background:none;border:1px solid var(--border);border-radius:6px;padding:6px 12px;font-size:13px;font-family:var(--font);color:var(--text);cursor:pointer}.user-chip button:hover{border-color:var(--brand-primary);color:var(--brand-primary)}.file-drop{border:1.5px dashed var(--border);border-radius:8px;padding:18px;text-align:center;font-size:14px;color:var(--text-muted);cursor:pointer;margin-bottom:22px;transition:border-color .15s}.file-drop:hover{border-color:var(--brand-primary);color:var(--brand-primary)}.file-drop.has-file{border-style:solid;border-color:var(--brand-primary);color:var(--text)}.file-drop img{max-height:120px;max-width:100%;border-radius:6px;margin-top:10px;display:block;margin-left:auto;margin-right:auto}.file-drop .remove-file{color:#dc2626;font-size:13px;margin-top:8px;display:inline-block}.lookup-toggle{display:flex;gap:16px;margin-bottom:20px;font-size:14px}.lookup-toggle label{display:flex;align-items:center;gap:6px;font-weight:500;cursor:pointer;margin:0}input[type=radio]{accent-color:var(--brand-primary)}.hidden{display:none}footer{text-align:center;font-size:12px;color:var(--text-muted);padding:24px}@media (max-width:640px){header{padding:12px 16px}.logo-img{height:34px}header h1{font-size:16px}header .sub{display:none}.container{margin:16px auto}.card{padding:18px}.login-wrap{margin-top:24px;padding:0 16px}.type-option span{padding:12px 4px;font-size:13px}.stage .lbl{font-size:9px}.lookup-toggle{flex-direction:column;gap:10px}.ticket-table thead{display:none}.ticket-table,.ticket-table tbody{display:block;width:100%}.ticket-table tr{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:14px 0;border-bottom:1px solid var(--border)}.ticket-table tr:last-child{border-bottom:none}.ticket-table td{display:inline-flex;padding:0;border:none}.ticket-table .tname-cell{width:100%;order:-1;font-size:15px}.ticket-table td:last-child{margin-left:auto;text-align:right}}.admin-badge{background:var(--brand-dark);color:#fff;font-size:11px;font-weight:700;padding:3px 9px;border-radius:6px;letter-spacing:.04em;text-transform:uppercase}.admin-tabs{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.admin-tabs .tab-btn{flex:0 0 auto;padding:10px 18px;border:1px solid var(--border)}.admin-tabs .tab-btn.active{border-color:var(--brand-primary)}.stat-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px}.stat{flex:1 1;min-width:120px;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px 16px}.stat .n{font-size:24px;font-weight:700}.stat .l{font-size:12px;text-transform:uppercase;letter-spacing:.04em}.client-cell,.stat .l{color:var(--text-muted)}.client-cell{font-size:13px}.stage-control{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:6px 0 4px}.stage-control select{width:auto;margin-bottom:0}.admin-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}.admin-actions .btn{width:auto;padding:10px 16px;font-size:14px}.admin-actions .btn.secondary{background:var(--card)}.inline-form{margin-top:10px}.inline-form textarea{min-height:70px;margin-bottom:8px}.inline-form .btn{width:auto;padding:10px 16px;font-size:14px}.muted-note{font-size:13px;color:var(--text-muted)}.ok-msg{color:var(--brand-primary-dark);font-size:13px;font-weight:600;margin-top:8px}.pill-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.attachment-thumb{max-height:160px;max-width:100%;border-radius:6px;border:1px solid var(--border);display:block;cursor:zoom-in;transition:opacity .15s}.attachment-thumb:hover{opacity:.88}.attachment-hint{font-size:12px;color:var(--text-muted);margin-top:6px}.lightbox-overlay{position:fixed;inset:0;z-index:1000;background:rgba(20,20,24,.82);display:flex;align-items:center;justify-content:center;padding:24px;cursor:zoom-out;animation:lightbox-fade .12s ease-out}@keyframes lightbox-fade{0%{opacity:0}to{opacity:1}}.lightbox-img{max-width:92vw;max-height:88vh;border-radius:8px;background:var(--card);box-shadow:0 12px 48px rgba(0,0,0,.5);cursor:default}.lightbox-close{position:fixed;top:18px;right:22px;width:40px;height:40px;border-radius:50%;border:none;background:rgba(255,255,255,.16);color:#fff;font-size:24px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:var(--font)}.lightbox-close:hover{background:rgba(255,255,255,.28)}.lightbox-caption{position:fixed;bottom:18px;left:0;right:0;text-align:center;color:rgba(255,255,255,.85);font-size:13px}